algorithmic-trading - 使用 MQL5 向智能交易系统添加追踪止损
问题描述
您好,我是 MQL5 的新手,我想向我的智能交易系统添加追踪止损,但由于某些原因它没有添加。这是代码:
if(PositionSelect(_Symbol) && UseTrailingStop == true)
{
double TrailingStop = (atr[1] * 3) + close[1];
Trail.TrailingStop(_Symbol,TrailingStop,0,0);
}
请注意,close[1] 是前一根柱的收盘价,atr[1] 是平均真实范围的值。我究竟做错了什么?????
解决方案
你去:希望这会有所帮助。
//--- trailing position
for(i=0;i<PositionsTotal();i++)
{
if(Symbol()==PositionGetSymbol(i))
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
sl=MathMax(PositionGetDouble(POSITION_PRICE_OPEN)+Spread*_Point,Bid-SL*_Point);
if(sl>PositionGetDouble(POSITION_SL) && (Bid-StopLevel*_Point-Spread*_Point)>PositionGetDouble(POSITION_PRICE_OPEN))
{
request.action = TRADE_ACTION_SLTP;
request.symbol = _Symbol;
request.sl = NormalizeDouble(sl,_Digits);
request.tp = PositionGetDouble(POSITION_TP);
OrderSend(request,result);
if(result.retcode==10009 || result.retcode==10008) // request executed
Print("Moving Stop Loss of Buy position #",request.order);
else
{
Print(ResultRetcodeDescription(result.retcode));
return;
}
return;
}
}
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
sl=MathMin(PositionGetDouble(POSITION_PRICE_OPEN)-Spread*_Point,Ask+SL*_Point);
if(sl<PositionGetDouble(POSITION_SL) && (PositionGetDouble(POSITION_PRICE_OPEN)-StopLevel*_Point-Spread*_Point)>Ask)
{
request.action = TRADE_ACTION_SLTP;
request.symbol = _Symbol;
request.sl = NormalizeDouble(sl,_Digits);
request.tp = PositionGetDouble(POSITION_TP);
OrderSend(request,result);
if(result.retcode==10009 || result.retcode==10008) // request executed
Print("Moving Stop Loss of Sell position #",request.order);
else
{
Print(ResultRetcodeDescription(result.retcode));
return;
}
return;
}
}
}
}
推荐阅读
- angular - TypeError:无法读取 Object.stop anguar 5 处未定义的属性“UpdateXY”
- php - Laravel 5.2 PaymayaSDK 集成
- python - 停止 Python smtpd DebuggingServer
- python - 如何根据某些条件将熊猫数据框列拆分为不同的行?
- firebase - Firebase Spark 中的 Cloud Functions 计划是否与 Blaze 计划在同一基础架构上?
- javascript - 导入的变量未翻译
- react-native - 无法将没有 YogaNode 的子节点添加到没有度量函数的父节点
- algorithm - 不确定如何分解此分配任务
- ruby - return 语句中的空值表达式错误
- classification - Weka:不兼容的训练和测试集