求教 (我不想用追踪止损) 用每单的最大盈利点值>0 实时盈利点值 < 最大盈利点值-设定点值 就直接平掉此单 (实现类似追踪止损的效果)

 

求教 (我不想用追踪止损)  用每单的最大盈利点值>0       实时盈利点值 < 最大盈利点值-设定点值          就直接平掉此单 (实现类似追踪止损的效果)


void 交易类::追空止损(string 币种,int Magic,double 启动点数,double 追踪点数)
 { 
if(启动点数>0&&追踪点数>0)
 { 
if(追踪点数>0&&追踪点数<(double)SymbolInfoInteger(币种,SYMBOL_TRADE_STOPS_LEVEL)) 
追踪点数=(double)SymbolInfoInteger(币种,SYMBOL_TRADE_STOPS_LEVEL); int magic=魔术幻数(Magic);
 for(int i=OrdersTotal()-1; i>=0; i--) 
{ 
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
 { 
if(OrderSymbol()==币种&&OrderMagicNumber()==magic)
 { 
if(OrderType()==OP_SELL)
 { 
if(OrderOpenPrice()-买价(币种)>启动点数*点值(币种)&&(OrderStopLoss()>买价(币种)+追踪点数*点值(币种)||OrderStopLoss()==0.0)) 
bool resl2=OrderModify(OrderTicket(),OrderOpenPrice(),买价(币种)+追踪点数*点值(币种),OrderTakeProfit(),OrderExpiration(),CLR_NONE); 
} } } }} } //+------------------------------------------------------------------+
 
以多单为例,单子达到启动盈利点数后,把止损修改到当前市价减追踪点数,如果市价继续涨,就一直不断的提高止损,始终保持止损位于最高市价减 踪点数的位置。
 
Ziheng Zhuang #:
以多单为例,单子达到启动盈利点数后,把止损修改到当前市价减追踪点数,如果市价继续涨,就一直不断的提高止损,始终保持止损位于最高市价减 踪点数的位置。
设置一个变量HighProfit,当Bid大于该变量时改变变量的值为Bid,这样你开多单后的最高价就知道了。实时检查HighProfit-Bid是否是大于追踪点数*Point就可以了,大于就执行平仓操作。
 
eloyalt #:
设置一个变量HighProfit,当Bid大于该变量时改变变量的值为Bid,这样你开多单后的最高价就知道了。实时检查HighProfit-Bid是否是大于追踪点数*Point就可以了,大于就执行平仓操作。

这种处理也行,但是简单的事情搞复杂了。

而且,EA卸载后HighProfit数据丢失,其次多单都平仓后需要对HighProfit置零,这一点容易忽视。

 
回复很赞  我想到个笨方法 寻找开仓时间后1m最高价作为最大盈利参考价  缺点 当前开仓的那根k线计算不了
 
自己出金呢