欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请教图表策略改为后台

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3259人关注过本帖树形打印复制链接

主题:请教图表策略改为后台

帅哥哟,离线,有人找我吗?
FireScript
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/5/9 13:52:47    Post IP:180.169.30.6[显示全部帖子]

 图表转后台必须注意的是 图表后台机制是不一样的。能帮你把函数之类的处理掉,但是稍微复杂的策略建议从策略思路出发完整的编写后台策略,而不是直接修改图表代码。

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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/5/9 14:27:18    Post IP:180.169.30.6[显示全部帖子]

 
//移动止损模块部分*******************************
//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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/5/9 14:30:11    Post IP:180.169.30.6[显示全部帖子]

以上是移动止损的部分,以多头为例,完成了部分,剩下的是类似的代码,可以自行尝试完成。
另外这里用到了全局变量

http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


后台代码要复杂很多,客户需要注意理解用例中的代码。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/5/9 14:44:20    Post IP:180.169.30.6[显示全部帖子]

 图表转后台要慢慢来的,后台要处理的代码会比图表复杂。


命数如织,当如磐石。
 回到顶部