首页 > 解决方案 > 策略测试器 - 在达到规定值之前触发止损

问题描述

我正在尝试编写一个简单的程序来通过 MT 的策略测试器执行止损和获利操作,但没有成功。我正在使用 MT 5.0,构建 2085,并尝试了来自 Internet 的各种代码,包括基于标准库 CTrade 编写的代码,但它不起作用。

我面临的行为是 MT 在当前价格达到 SL 阈值之前触发买入止损。

下面的代码取自 Andrew r. 所著的“Expert Advidor 5 - Programming for Meta Trader”一书。杨,第 83 页:

int OnInit()
   double StopLossPorc=9.0;
   double StopLossPrice=0.0;
   double TakeProfitPorc=4.0;
   double TakeProfitPrice = 0.0;

   vPrecoAsk = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   TakeProfitPrice = vPrecoAsk+((TakeProfitPorc)/100*vPrecoAsk);
   StopLossPrice = vPrecoAsk-(StopLossPorc/100*vPrecoAsk);

   request.action = TRADE_ACTION_DEAL;
   request.type = ORDER_TYPE_BUY;
   request.symbol = _Symbol;
   request.volume = qtde_compra;
   request.type_filling = ORDER_FILLING_FOK;
   request.price = vPrecoAsk;
   request.sl = 0;
   request.tp = 0;
   request.deviation = 50;
   request.magic = 43;

   OrderSend(request,result);

   request.action = TRADE_ACTION_SLTP;
   request.symbol = _Symbol;
   request.sl = StopLossPrice;
   request.tp = TakeProfitPrice;
}

为了简单起见,我省略了脚本的其余部分。

从以下链接的日志中可以看出,在发送买入订单时,止损设置为 13.16 美元,但基于价格高于 SL 的触发器,卖出以 14.47 美元执行。请注意,相应时期的最低价为 14.45 美元,远高于 SL 设置(13.16 美元)。

我如何以仅在当前价格达到定义的 SL 时才执行止损的方式对其进行编码?

Metatrader 日志

标签: metatrader5

解决方案


推荐阅读