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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 麻烦老师帮忙编写一个止损思路

   

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


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

主题:麻烦老师帮忙编写一个止损思路

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


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

 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编辑过]


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


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

多头最高盈利那个的确是按照最高价计算的。(空头按照最低价)

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

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

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




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


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


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


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


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

 可是这里

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

还有个3612啊。60分钟周期上 开仓K是10:00(北京时间) 平仓K是14:00(北京时间). 而这个3612是在这个区间内出现的。


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/8/26 15:36:17    Post IP:180.169.30.6[显示全部帖子]

 不是啊。我们K线时间是 结束时间啊。
不是这个:
18:00:00( 北京时间14:00 )  至18:59:59 (北京时间15:00 )

你如果直接在那几个K线算的话。当时最高盈利点数是113  最低是23点,都是满足平仓条件的。那个K最高价是3628  3609是后面一个K的价格。


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


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

你的意思是说小周期上可能回撤到平仓的这个点其实是在最高盈利之前发生的,实际上最高盈利之后根本没有达到这个回撤点。但是因为大周期是一个统计结果所以体现不出来这个问题是吧。


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


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

  如果是这样 我觉得可以考虑在止盈平仓上采取调用小周期数据来进行判断比较好,就是在小周期上判断这个趋势是否是先盈利100点然后回调下来。  但是这种我也不是很确定能否实现,而且也比较担心闪烁的问题。我抽空尝试下。


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


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

 做了一些改进,供参考:

需要进行跨周期调用
被调用指标M:
INPUT:t(0,0,900000,1),d(19000101,0,20991231,1);//这个参数是传递大周期的日期和时间用的

len0:BARSLAST(time=t and date=d);//返回大周期开仓位置到当前位置 所涵盖的小周期K线数量

hl:llv(l,len0);//开仓以来最低价
hlen:LLVBARS(l,len0);//最低价位置,(返回值是从0开始的)
hprice:hhv(h,hlen+1);//最低价位置以来 的最高价 以此确定是否在最高盈利之后出现了回落

交易指标:
diff := ema( close,12 ) - ema( close,26 ) ;
dea  := ema( diff,9 ) ;
macd := 2 * ( diff - dea ) ;
Scond :=  ref( cross( dea,diff ),1 ) ;
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 ;
SellHc:=enterprice - 34 * mindiff ;

m0:=ref(time,ENTERBARS+1);//获取上次开仓位置的时间(开仓K的起始时间,相当于开仓K前一个K的时间)
d0:=ref(date,ENTERBARS+1);//获取上次开仓位置的日期

ms:=NUMTOSTR(m0,0);
ds:=NUMTOSTR(d0,1);
//hpprice 表示的是开仓之后最低价位置 之后的最高价。以此获取最高盈利之后是发生的回落情况
hprice:STKINDI('','M.hprice('&ms&','&ds&')',0,2,0);//把开仓位置传递给小周期,以判断小周期的趋势变化。
Lprice :=enterprice - llv( low,barslast( Scond ));//最高盈利
//这里我把( range( TYPEBAR( 1,3 ),1,6 )  这个的判断我先去掉,否则无法测试小周期趋势判断的准确性了。
if Lprice > 100 * mindiff  and  hprice > SellHc then 空离:sellshort ( holding < 0, holding, limitr, max( open + 1 * mindiff, SellHc+ 1 * mindiff ) ), ignorecheckprice ;

最终效果,在大周期上:

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

开仓是螺纹连续的8.9 10:00(北京时间)  平仓 8.12 15:00(北京时间)

在小周期上看:
开仓之后最高盈利 (最高盈利在3538的地方)之后, 第一个满足最高价大于3617的位置在下图标识的地方。对应的小时周期 是 8.12 15:00(北京时间)  5分钟周期则是8.12 14:15


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


需要注意的是请不要把这个指标应用到小周期上,因为这里的跨周期调用有一些特殊的使用,小周期上会因为K线数太多会直接出现调用过多的报错。



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


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

 这里这个是个范例 如果要改成多头的情况得话,就需要修改M指标里面的代码了。只需要把统计的高低价修改下就可以了。


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