metatrader5 - 策略测试器 - 在达到规定值之前触发止损
问题描述
我正在尝试编写一个简单的程序来通过 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 时才执行止损的方式对其进行编码?
解决方案
推荐阅读
- javascript - ctrl f search only model popup html data
- sql - 根据匹配表对记录进行分类
- z3 - Z3 将数组的默认值设置为零
- ios - 如何在 Swift 中使用反射设置成员变量值?
- facebook - Microsoft 健康机器人服务集成到 Facebook Messenger
- blockchain - What if two blocks complete their POW at same time
- rest - Rest Api:何时使用 Post、PUT、PATCH 和 Delete
- python - 获取 executemany 以接受 Unicode 字符串
- java - 在 PDF Box Reader 中获取当前页码
- android - 使用底部导航栏浏览网页视图