以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=163327) |
-- 作者:cdqwy781 -- 发布时间:2018/5/9 11:37:38 -- 请教图表策略改为后台 HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0); LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); K2:=VALUEWHEN(K1<>0,K1); 手数:=4; //交易条件 VARIABLE:n1=0,n2=0,n3=0,n4=0 ; 开多条件:=CROSS(-2,K2); 平多条件:CROSS(K2,0); 开空条件:=CROSS(K2,0); 平空条件:=CROSS(-2,K2); //交易系统 平空:SELLSHORT(平空条件,0,MARKET); 平多:SELL(平多条件,0,MARKET); if 开多条件 then begin BUY(1,手数,MARKET); n1:=0; n2:=0; end if 开空条件 then begin BUYSHORT(1,手数,MARKET); n3:=0; n4:=0; end //止损止盈,实时出场 多头止损:c<ref(L,ENTERBARS); sell(多头止损 and holding>0 and ENTERBARS>0 ,holding,market); 空头止损:c>ref(h,ENTERBARS); sellshort(空头止损 and holding<0 and ENTERBARS>0 ,holding,market); //多头 if H-ENTERPRICE>=3 AND enterbars>0 and HOLDING>0 and n1=0 then begin 止盈1:SELL(1,1,marketr);//盈利3个点止盈1手 n1:=1; end if H-ENTERPRICE>=5 AND enterbars>0 and HOLDING>0 and n2=0 then begin 止盈2:SELL(1,1,marketr);//盈利5个点止盈1手 n2:=1; end //空头 if ENTERPRICE-L>=3 AND enterbars>0 and HOLDING<0 and n3=0 then begin 止盈3:SELLSHORT(1,1,marketr);//盈利3个点止盈 n3:=1; end if ENTERPRICE-L>=5 AND enterbars>0 and HOLDING<0 and n4=0 then begin 止盈4:SELLSHORT(1,1,marketr);//盈利5个点止盈 n4:=1; end 另再加入 移动止盈 盈利大于5小于10个点,从最大盈利点回撤0.61,止盈; 盈利大于10小于20个点,从最大盈利点回撤0.5,止盈; 盈利大于20点,从最大盈利点回撤0.38,止盈。和收盘前不论盈利亏损全平仓 |
-- 作者:FireScript -- 发布时间:2018/5/9 13:52:47 -- 图表转后台必须注意的是 图表后台机制是不一样的。能帮你把函数之类的处理掉,但是稍微复杂的策略建议从策略思路出发完整的编写后台策略,而不是直接修改图表代码。 HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0); LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); K2:=VALUEWHEN(K1<>0,K1); 手数:=4; //交易条件 GLOBALVARIABLE:n1=0,n2=0,n3=0,n4=0; 开多条件:=CROSS(-2,K2); 平多条件:=CROSS(K2,0); 开空条件:=CROSS(K2,0); 平空条件:=CROSS(-2,K2); //交易系统 平空:TSELLSHORT(平空条件,TSELLHOLDINGEX(\'\',\'\',1),MKT); 平多:TSELL(平多条件,TBUYHOLDINGEX(\'\',\'\',1),MKT); if 开多条件 then begin TBUY(1,手数,MKT); n1:=0; n2:=0; end if 开空条件 then begin TBUYSHORT(1,手数,MKT); n3:=0; n4:=0; end //止损止盈,实时出场 多头止损:c<ref(L,TENTERBARS); TSELL(多头止损 and TBUYHOLDINGEX(\'\',\'\',1)>0 and TENTERBARS>0 ,TBUYHOLDINGEX(\'\',\'\',1),MKT); 空头止损:c>ref(h,TENTERBARS); Tsellshort(空头止损 and TSELLHOLDINGEX(\'\',\'\',1)<0 and TENTERBARS>0 ,TSELLHOLDINGEX(\'\',\'\',1),MKT); //多头 if H-TENTERPRICE>=3 AND Tenterbars>0 and TBUYHOLDINGEX(\'\',\'\',1)>0 and n1=0 then begin 止盈1:TSELL(1,1,MKT);//盈利3个点止盈1手 n1:=1; end if H-TENTERPRICE>=5 AND Tenterbars>0 and TBUYHOLDINGEX(\'\',\'\',1)>0>0 and n2=0 then begin 止盈2:TSELL(1,1,MKT);//盈利5个点止盈1手 n2:=1; end //空头 if TENTERPRICE-L>=3 AND Tenterbars>0 and TSELLHOLDINGEX(\'\',\'\',1)<0 and n3=0 then begin 止盈3:TSELLSHORT(1,1,MKT);//盈利3个点止盈 n3:=1; end if TENTERPRICE-L>=5 AND Tenterbars>0 and TSELLHOLDINGEX(\'\',\'\',1)<0<0 and n4=0 then begin 止盈4:TSELLSHORT(1,1,MKT);//盈利5个点止盈 n4:=1; end 后台是直接操作实际账号的,因此你手工进行的操作可能也会影响到策略运行。 |
-- 作者:FireScript -- 发布时间:2018/5/9 14:27:18 -- //移动止损模块部分******************************* //A有三种数值状态:1,0,最新价; //当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落 //将A赋值为1,表示当前有持仓 IF TBUYHOLDINGEX( \'\',\'\' ,0 )>0 AND EXTGBDATA(\'a\' )=0 THEN BEGIN EXTGBDATASET( \'a\',1 ); END //使A始终表示监控开始后的最高价 IF DYNAINFO( 7)>EXTGBDATA(\'a\' ) and EXTGBDATA(\'a\' )>0 THEN BEGIN EXTGBDATASET( \'a\',DYNAINFO( 7)); END MXYL:EXTGBDATA(\'a\')-TAVGENTERPRICEEX2(\'\' ,\'\',1);//最高盈利值 CYL:DYNAINFO( 7)-TAVGENTERPRICEEX2(\'\' ,\'\',1);//当前盈利值 //发现价格回落止损,并将A赋值为0表示移动止损动作完成 IF MXYL>5*MINDIFF and MXYL<10*MINDIFF and EXTGBDATA(\'a\' )>0 and CYL<=0.61*MXYL THEN BEGIN //最大盈利大于5点且小于10点,且当前盈利相对最高值回撤幅度达到0.61 TSELL(1,TBUYHOLDINGEX(\'\',\'\',1),MKT ); EXTGBDATASET( \'a\',0); END //******************************* if time=CLOSETIME(0) then TSELL(1,TBUYHOLDINGEX(\'\',\'\',1),MKT);//收盘全平 |
-- 作者:FireScript -- 发布时间:2018/5/9 14:30:11 -- 以上是移动止损的部分,以多头为例,完成了部分,剩下的是类似的代码,可以自行尝试完成。 另外这里用到了全局变量 http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm ![]() ![]() 后台代码要复杂很多,客户需要注意理解用例中的代码。 |
-- 作者:cdqwy781 -- 发布时间:2018/5/9 14:42:48 -- 谢谢我标准版在试用专业版公式有难度没人指导根本不行 |
-- 作者:FireScript -- 发布时间:2018/5/9 14:44:20 -- 图表转后台要慢慢来的,后台要处理的代码会比图表复杂。 |
-- 作者:cdqwy781 -- 发布时间:2018/5/9 14:48:11 -- 爱好飞狐才用的金字塔 |