//+------------------------------------------------------------------+ //| 返回相对于 StopLevel 的正确 StopLoss。 //+------------------------------------------------------------------+ double CorrectStopLoss(const string symbol_name,const ENUM_POSITION_TYPE position_type,const int stop_loss) { if(stop_loss==0) return 0; double pt=SymbolInfoDouble(symbol_name,SYMBOL_POINT); if(pt==0) return 0; double price=(position_type==POSITION_TYPE_BUY ? SymbolInfoDouble(symbol_name,SYMBOL_ASK) : SymbolInfoDouble(symbol_name,SYMBOL_BID)); int lv=StopLevel(symbol_name),dg=(int)SymbolInfoInteger(symbol_name,SYMBOL_DIGITS); return (position_type==POSITION_TYPE_BUY ? NormalizeDouble(::fmin(price-lv*pt,price-stop_loss*pt),dg) : NormalizeDouble(::fmax(price+lv*pt,price+stop_loss*pt),dg) ); } //+------------------------------------------------------------------+ //| 检查 StopLoss 与 StopLevel 的关系是否正确。 //+------------------------------------------------------------------+ bool CheckCorrectStopLoss(const string symbol_name,const ENUM_POSITION_TYPE position_type,const double stop_loss) { if(stop_loss==0) return true; double pt=SymbolInfoDouble(symbol_name,SYMBOL_POINT); if(pt==0) return false; double price=(position_type==POSITION_TYPE_BUY ? SymbolInfoDouble(symbol_name,SYMBOL_ASK) : SymbolInfoDouble(symbol_name,SYMBOL_BID)); int lv=StopLevel(symbol_name),dg=(int)SymbolInfoInteger(symbol_name,SYMBOL_DIGITS); return ( position_type==POSITION_TYPE_BUY ? NormalizeDouble(stop_loss-price- lv*pt,dg)<0 : NormalizeDouble(stop_loss-price+ lv*pt,dg)>0 ); }
错误突出显示。
fxsaber:
错误高亮显示。
double price=(position_type==POSITION_TYPE_BUY ? SymbolInfoDouble(symbol_name,SYMBOL_ASK) : SymbolInfoDouble(symbol_name,SYMBOL_BID)); int lv=StopLevel(symbol_name),dg=(int)SymbolInfoInteger(symbol_name,SYMBOL_DIGITS); return (position_type==POSITION_TYPE_BUY ? NormalizeDouble(::fmin(price-lv*pt,price-stop_loss*pt),dg) : NormalizeDouble(::fmax(price+lv*pt,price+stop_loss*pt),dg) );
错误是什么?
Artyom Trishkin:
错在哪里?
用错了价格。
fxsaber:
说明理由。
价格使用不当。
Artyom Trishkin:
说明理由。
说明理由。
OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, Bid);
当 StopLevel == 0 时,它将起作用。
有 mt4 版本吗?
干得好非常感谢!
易于使用。顶部。好极了
当价格进一步移动时,跟踪止损似乎不会调整。是我遗漏了什么吗?
TrailingStopAndTake:
作者: Scriptor