以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  麻烦老师帮忙编写一个止损思路  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=171663)

--  作者:2457146251
--  发布时间:2019/8/15 15:05:03
--  麻烦老师帮忙编写一个止损思路


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

 

如图所示,移动止损点,以多头为例,,,,策略进场就挂A点位止损,  当利润大于80 ,则止损点往上  移动到  A+40点  ,, 当利润大于130 则,止损点为  进场 + 100 点,  价格破止损点,则平仓出局!

 

另外我需要在图上绘制出止损线来,  当进场的那一刻开始绘制,,, 直到 离场之后,  也就是说,止损线只有在持仓的时候显示出来!


--  作者:FireScript
--  发布时间:2019/8/15 15:32:29
--  
 h_profit:=HHV(H,ENTERBARS)-AvGENTERPRICE;//最大盈利
ZS0:=h_profit<80*MINDIFF  AND c<=A;
ZS1:=h_profit>=80*MINDIFF and h_profit<130 and c<=A+40*MINDIFF;
ZS2:=h_profit>=130*MINDIFF and c<=A+100*MINDIFF;

if (zs0 or zs1 or zs2)  and holding>0 then sell(holding>0,holding,market);

画线参考这样的写法
DRAWSL(h_profit<80*MINDIFF and holding>0, A,0 ,0 ,2);
[此贴子已经被作者于2019/8/26 9:13:54编辑过]

--  作者:2457146251
--  发布时间:2019/8/25 14:13:45
--  回复:(FireScript)
老师,这个代码不符合我要求唉



--  作者:2457146251
--  发布时间:2019/8/25 14:31:22
--  

止损线是要求这样画的,,, 以 空头为例!   进场之后,,开始绘制止损线,, 止损点随利润变化而变化,,,平仓之后,  停止绘制,止损线也小说

 

 


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


--  作者:2457146251
--  发布时间:2019/8/25 15:00:13
--  

另外,,对于 移动止损

 

 

按照老师的代码,应用到当中确实不大稳妥!

 

 

以螺纹钢为例

 

2019-08-09 的行情, 60分钟对应的 进场位置是 3651,   然后设定    利润 大于 100个点之后,,止损点位 移动为   进场点   3651 - 34 个点 , 等于 3617 点,, 平仓 按对手价 发单, 最后成交是   3618  !

 

 

按照这个逻辑, 这样推算也是对的,,   但是   但是 ,,,,但是,,,, 切换  到 5 分钟的  走势,你会 发现,,,,策略回撤过程中,,,是 不 严 谨 的!      利润 大于 100 点 之后,,回撤  最高 位置是  3609   .。。远没有 满足 条件出场,,,可 60 分钟就在这个时间段給平了!   

 

 

也就是说,,,,在60分钟回撤计算中,,,是按  当根 K  最高 ----  最低来进行算的,,,这样回撤不科学(  希望后期软件能升级改进这个问题,做到回撤 和 实盘 贴近一些    )!

 

 

所以 按照这个思路来进行移动止损,是不行的  (  因为 5分钟周期,,出现利润大于100 之后 ,回调最高是 3609,显然在出现前就平仓了 ) !

 

具体,,如下图 所示!

 

 

 

 


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

 

 


 


--  作者:FireScript
--  发布时间:2019/8/26 9:36:45
--  
多头最高盈利那个的确是按照最高价计算的。(空头按照最低价)

h_profit:=HHV(H,ENTERBARS)-AvGENTERPRICE;//最大盈利

但是回撤用的是收盘价。
用最高价肯定有合理的地方的。实际上最高价在行情上肯定也是出现过的最高价,也就是最高赢利点。这个是合理的。

你那个情况是出现了一个盈利回撤导致的平仓吧。所以就等不到盈利100点那个位置了吧。因为前面还有几个盈利回撤的一定点数的平仓代码的。



--  作者:2457146251
--  发布时间:2019/8/26 13:17:46
--  回复:(FireScript)多头最高盈利那个的确是按照最高...

 
// 序
      runmode : 0 ;
 
//--------------------- 策 略 指 标 ---------------------------------------------------------------

                diff := ema( close,12 ) - ema( close,26 ) ;
                dea  := ema( diff,9 ) ;
                macd := 2 * ( diff - dea ) ;
                            
//--------------------- 进 场  条 件 ---------------------------------------------------------
         
     
          Scond :=  ref( cross( dea,diff ),1 ) ,tfilter ;
    
       
//------------ 空 平 仓
     
             if ref( cross( diff,dea ),1 ) then sellshort( holding < 0, holding, limitr, open + 1 * mindiff ), ignorecheckprice ;

//--------------------- 空 头 进 场  ------------

          if holding = 0 and Scond then buyshort( 1, 6, limitr, open - 1 * mindiff ), ignorecheckprice ;
  
              
// 利润超过 100 点,回撤到34个价位的时候离场
        
               SellHc := enterprice - 34 * mindiff ;
               Lprice := enterprice - llv( low,barslast( Scond )) ;
               
              if ( range( TYPEBAR( 1,3 ),1,6 ) and Lprice > 100 * mindiff ) and ref( high > SellHc,1 ) then 空 离 : sellshort ( holding < 0, holding, limitr, max( open + 1 * mindiff, SellHc+ 1 * mindiff ) ), ignorecheckprice ;
       
[此贴子已经被作者于2019/8/26 13:18:12编辑过]

--  作者:2457146251
--  发布时间:2019/8/26 13:21:14
--  
 代码是这样的,,,


前面没有其他的盈利回撤平仓 代码,,麻烦老师对照一下

确实这个回撤止盈 ,,,不科学,,,,因为  5分钟周期,,从利润最高100点,  回调回来的价位最高才是  3609,  远没有达到平仓 的点位!    


但是 60 分钟确实 平仓掉了,,,那这样会造成 回测  和  实盘  脱离 甚远!   不科学的!


因为平仓 前 加了个 K线 6 根K 以内,  这样 如果 大于6根K之后,就失效!    所以 回测 的 计算逻辑 有问题!
[此贴子已经被作者于2019/8/26 13:22:42编辑过]

--  作者:2457146251
--  发布时间:2019/8/26 13:25:04
--  
   


if ( range( TYPEBAR( 1,3 ),1,6 ) and Lprice > 100 * mindiff ) and  high > SellHc then 空 离 : sellshort ( holding < 0, holding, limitr, max( open + 1 * mindiff, SellHc+ 1 * mindiff ) ), ignorecheckprice ;


即便 把上面 改为 红色 字体的那样,也是一样的效果

--  作者:FireScript
--  发布时间:2019/8/26 14:05:58
--  

SellHc := enterprice - 34 * mindiff ;
 
Lprice :enterprice - llv( low,barslast( Scond )) ;
你的思路是从最高盈利位置 回落到盈利34个点位置 平仓。是这样思路吧。
[此贴子已经被作者于2019/8/26 14:09:15编辑过]