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


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

   

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


  共有3399人关注过本帖平板打印复制链接

主题:求助跟踪止盈止损问题

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


加好友 发短信
等级:新手上路 帖子:37 积分:0 威望:0 精华:0 注册:2016/11/10 10:48:19
  发帖心情 Post By:2018/5/7 19:59:46    Post IP:59.63.206.208[只看该作者]

 

源代码

公式设计的源码来源于《程序化交易策略开发与应用》中国经济出版社,2015.3 P121 

ISBN 978—7—5136—3525—7




 

源代码如下:


 

vars


 

Numeric MinPoint ;

Numeric MyEntryPrice ;


 

Numeric  TrailingStart1 (50) ;      

Numeric  TrailingStart2 (80) ;     

Numeric  TrailingStop1 (30) ;      

Numeric  TrailingStop2 (20) ;      

Numeric  StopLossSet(50) ;          

Numeric  MyExitPrice ;


 

NumericSeries  HighestAfterEntry ;

NumericSeries  LowestAfterEntry ;


 

If  BarsSinceEntry = = 0 

       HighestAfterEntry = Close ;

       LowestAfterEntry = Close;


 

       If MarketPosition < > 0 THEN BEGIN//仓位不等于0;//有持仓时执行以下代码,源程序;

              HighestAfterEntry = MAX(HighestAfterEntry,MYENTRYPRICE);

//开仓Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry;

              LowestAfterEntry = MIN(LowestAfterEntry,MYENTRYPRICE); 

//开仓Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry;

ELSE             //非开仓Bar时进行以下运算(注意语句上下顺序颠倒过来写);

              LowestAfterEntry = MIN(LowestAfterEntry,LOW);           

//记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断;(源程序是先写最低价)

              HighestAfterEntry = MAX(HighestAfterEntry,HIGH);      

//记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断;(源程序是再写最高价)



 

Commentary ("HighestAfterEntry =" +Text (HighestAfterEntry));

Commentary ("LowestAfterEntry =" +Text (LowestAfterEntry));


 

MinPoint = MinMove * PriceScale ;

MYENTRYPRICE = AVGENTERPRICE;


 

IF (MarketPosition = = 1 and BarsSinceEntry >=1      //有多仓的情况;

       //第二级跟踪止损的条件表达式;

              IF HighestAfterEntry [1] >= MyEntryPrice + TrailingStart2 * MinPoint    //开仓后开始监控止损条件;

                     IF LOW <= HighestAfterEntry [1] - TrailingStop2 * MinPoint  

                            MyExitPrice = HighestAfterEntry [1] - TrailingStop2 * MinPoint;                 //如果该Bar开盘价跳空,则用开盘价代替;

                            IF (OPEN < MyExitPrice)  MyExitPrice = Open;

                         SELL ( 0, MyExitPrice);

             

              ELSE IF HighestAfterEntry [1] >= MyEntryPrice + TrailingStart1 * MinPoint //第一级跟踪止损的条件表达式;

                     IF LOW <= HighestAfterEntry [1] - TrailingStop1 * MinPoint

                            MyExitPrice = HighestAfterEntry [1] - TrailingStop1 * MinPoint;

                            IF (OPEN < MyExitPrice)  MyExitPrice = Open;

                            SELL ( 0, MyExitPrice) ;


 


 回到顶部
总数 18 1 2 下一页