以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  同时满足多个条件开仓  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=163963)

--  作者:qazqaz
--  发布时间:2018/6/11 14:57:42
--  同时满足多个条件开仓
//中间变量
MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,10);
VAR1:=(CLOSE+HIGH+LOW)/3;
VAR2:=HHV(HIGH,10);

当MA1向上金叉MA2,并且VAR1>MA1,并且VAR1>VAR2.当同时满足以上三个条件时,在下一个周期开盘价开多2手;
当MA1向下死叉MA2,并且VAR1<MA1,并且VAR1<VAR2.当同时满足以上三个条件时,在下一个周期开盘价开空2手;

请问老师们这个交易语句要怎么写,谢谢

--  作者:FireScript
--  发布时间:2018/6/11 15:18:04
--  
你是要在下周期按照当时开盘价开仓2手?

--  作者:qazqaz
--  发布时间:2018/6/11 16:59:15
--  
是的,也就是说等这根K线走完,下根K线的市价吧
--  作者:qazqaz
--  发布时间:2018/6/11 17:00:50
--  
是的,也就是说等这根K线走完,下根K线的市价吧
--  作者:FireScript
--  发布时间:2018/6/11 17:11:57
--  
 MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,10);
VAR1:=(CLOSE+HIGH+LOW)/3;
VAR2:=HHV(HIGH,10);

buycond:cross(ma1,ma2) and var1>ma1 and var1>var2;
sellcond:cross(ma2,ma1) and var1<ma1 and var1<var2;

if buycond then
begin
sellshort(holding<0,holding,market);
buy(holding=0,2,market);
end

if sellcond then
begin
sell(holding>0,holding,market);
buyshort(holding=0,2,market);
end


运行模式选择走完K线就可以了。

--  作者:qazqaz
--  发布时间:2018/6/11 17:16:55
--  
好的,谢谢老师
--  作者:qazqaz
--  发布时间:2018/6/11 17:49:06
--  
老师我再问一下,我把这公式引用到图表上,图表上怎么没信号,谢谢
--  作者:wenarm
--  发布时间:2018/6/12 8:27:02
--  

不满足开平条件,自然没有信号输出,你自己扩充k线数量看一下。

上面的代码符合你一楼形容的需求,建议你把条件的:=改成:输出自己的条件,分析下各个条件需求。分析下逻辑上的限制问题


--  作者:qazqaz
--  发布时间:2018/6/12 10:25:28
--  
好的,谢谢老师,还有个问题想请教一下,应该怎么修改,公式如下:
 MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,10);
VAR1:=(CLOSE+HIGH+LOW)/3;
VAR2:=HHV(HIGH,10);

buycond:cross(ma1,ma2) and var1>ma1 and var1>var2;
sellcond:cross(ma2,ma1) and var1<ma1 and var1<var2;

if buycond then 
begin
sellshort(holding<0,holding,market);
buy(holding=0,2,market); 
end

if sellcond then 
begin 
sell(holding>0,holding,market);
buyshort(holding=0,2,market);
end

当满足开多条件开多两手,在接下来的运行过程中,如再有满足开多条件的,便再加仓2手,只要每次有信号都加仓2手,直到平多开空离场.
开空也一样,开空后只要有符合条件的也都加仓2手,直到平空离场,

这两个加仓操作应该怎么添加,谢谢老师帮忙修改一下.

--  作者:FireScript
--  发布时间:2018/6/12 10:47:26
--  
 if buycond then 
begin
sellshort(holding<0,holding,market);
buy(1,2,market); 
end

if sellcond then 
begin 
sell(holding>0,holding,market);
buyshort(1,2,market);
end

开仓条件里面改下就可以了。现在只要触发开仓条件就会开2手
[此贴子已经被作者于2018/6/12 10:47:37编辑过]