我正在尝试编写一个简单的程序来执行止损并通过MT的Strategy Tester获利操作而没有成功。我使用的是MT 5.0,版本2085,并尝试了Internet上的所有代码,包括基于标准库CTrade编写的代码,但是它不起作用。
我面临的行为是MT在当前价格达到SL阈值之前触发了买入止损。
下面的代码摘自安德鲁·r(Andrew r。)撰写的“ Expert Advidor 5-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美元)。
如何以仅当当前价格达到定义的止损价时执行止损的方式对其进行编码?