以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 麻烦老师帮忙编写一个止损思路 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=171663) |
-- 作者:2457146251 -- 发布时间:2019/8/15 15:05:03 -- 麻烦老师帮忙编写一个止损思路
如图所示,移动止损点,以多头为例,,,,策略进场就挂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 -- 止损线是要求这样画的,,, 以 空头为例! 进场之后,,开始绘制止损线,, 止损点随利润变化而变化,,,平仓之后, 停止绘制,止损线也小说
|
-- 作者: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,显然在出现前就平仓了 ) !
具体,,如下图 所示!
|
-- 作者: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编辑过]
|