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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 止损代码

   

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


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

主题:止损代码

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


加好友 发短信
等级:新手上路 帖子:-17 积分:0 威望:0 精华:0 注册:2020/6/23 14:30:51
止损代码  发帖心情 Post By:2020/6/23 14:47:42    Post IP:117.181.129.222[只看该作者]


SS:SETTLE;
A1:=REF(SETTLE,1);
A2:=SETTLE>A1;
A3:=C>SETTLE;
A4:SETTLE<A1;
A5:=C<SETTLE;
M:=IF(EXIST(TIME=2100,DAYBARPOS),1,TIME>=910);
COUNTSIG(BK,DAYBARPOS)=0&&A2&&A3&&(TIME>=2100||TIME<1430)&&M,BK;
COUNTSIG(SK,DAYBARPOS)=0&&A4&&A5&&(TIME>=2100||TIME<1430)&&M,SK;
ZS1:=(SKPRICE-BKPRICE)/SKPRICE*100,NODRAW;
ZS2:=(BKPRICE-SKPRICE)/BKPRICE*100,NODRAW;
AA..ZS1+ZS2<=-1;
A2&&A3&&(TIME>=2100||TIME<1430)&&(ISLASTSK||ISLASTBP||ISLASTSPK)&&COUNT(AA,DAYBARPOS)=0&&M,BPK;
A4&&A5&&(TIME>=2100||TIME<1430)&&(ISLASTBK||ISLASTSP||ISLASTBPK)&&COUNT(AA,DAYBARPOS)=0&&M,SPK;
CLOSEMINUTE1<=3,CLOSEOUT;
AUTOFILTER;
CHECKSIG(CLOSEOUT,'A',0,'C',0,0);


这是一个完整的日内模型代码,但没有止损,我想加个止损代码,请问该如何编写?我的止损条件是,当累计亏损累计达到-1%时,当天就不再交易。举个例子,假如当天第一笔多单买开价格5000,后价格下跌,反手做空,卖平及卖开价格是4960,此时亏损率为(4960-5000)/5000=-0.8%,反手做空后,价格又涨到了4970,此时又亏损了(4960-4970)/4960=-0.2%,这时,我希望模型能进行全平操作,因为累积亏损达到了-0.8%+(-0.2%)=-1%。另,这是文华上的麦语言代码,在文华上能查看函数说明,当然也可以问我。

 回到顶部
帅哥哟,离线,有人找我吗?
意气风发
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:-17 积分:0 威望:0 精华:0 注册:2020/6/23 14:30:51
  发帖心情 Post By:2020/6/23 15:01:21    Post IP:117.181.129.222[只看该作者]

模型里面的zs1和zs2达不到止损的效果。

 回到顶部
帅哥哟,离线,有人找我吗?
gxx978
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2020/6/23 15:06:58    Post IP:180.169.30.6[只看该作者]

大致理清了这段逻辑,我们会借鉴里面的开平仓条件,加上你的止损需求编写金字塔代码的。需要使用全局变量记录当天的亏损率,来进行止损。代码编写需要时间,我们会尽快回复,关注此贴就可以,不必重复发帖。

 回到顶部
帅哥哟,离线,有人找我吗?
gxx978
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2020/6/23 16:21:12    Post IP:180.169.30.6[只看该作者]

代码如下,以供参考:

VARIABLE:PROFIT=0,KD=0,KK=0,ZZ=0;    //PROFIT记录亏损率,KD和KK分别控制日内分别只开1次,ZZ用来控制止损后不再交易。

N1:=TODAYBAR;
DM:=4-INTPART(LOG(C));
SS:ROUNDS(IF(SUM(VOL,N1)=0,C,SUM(C*VOL,N1)/SUM(VOL,N1)),2+DM);    //金字塔中没有函数SETTLE,用此计算出当日均价
A1:=PRVSETTLEMENT;             //获取昨结算
A2:=SS>A1;
A3:=C>SS;
A4:SS<A1;
A5:C<SS;

 

M:TIME>010000 AND TIME<183000;

 

XPRICE:=REF(ENTERPRICE,1);     //获取上次开仓价

IF KD=0 AND ZZ=0 AND A2 AND A3 AND M THEN  BEGIN
 SELLSHORT(HOLDING<0,HOLDING,MARKET);
 PROFIT:=PROFIT+(XPRICE-EXITPRICE)/XPRICE;      //计算空单盈利率(负的则表示亏损)
 BUY(HOLDING=0,1,MARKET);
 KD:=1;
 END

IF KK=0 AND ZZ=0 AND A4 AND A5 AND M THEN  BEGIN
 SELL(HOLDING>0,HOLDING,MARKET);
 PROFIT:=PROFIT+(EXITPRICE-XPRICE)/XPRICE;           //计算多单盈利率(负的则表示亏损)
 BUYSHORT(HOLDING=0,1,MARKET);
 KK:=1;
 END 

 

IF PROFIT<-0.01 THEN BEGIN
   SELL(1,HOLDING,MARKET);
   SELLSHORT(1,HOLDING,MARKET);
   ZZ:=1;                        //止损后,禁止当日再交易
   END
  
IF TIME>=CLOSETIME(4) THEN BEGIN     //盘后,交易开关复位
 KD:=0;
 KK:=0;
 ZZ:=0;
 PROFIT:=0;
 END


 回到顶部