mql4 - 如何在 MQL4 Metatrader 4 中打开多个 OrderSend()?

标签 mql4 metatrader4

我正在尝试使用 ExpertAdvisor 或脚本在 MQL4 中同时开立多个交易。然而,当我将 EA 拖至图表时,它仅打开一个订单,而不打开第二个(或第三个、第四个等)

extern double lots = 0.01;
extern int takeprofit = 40;
extern int stoploss = 40;

void OnStart(){

double profitlvl_buy;
double losslvl_buy;

profitlvl_buy = Ask+takeprofit*Point;
losslvl_buy = Ask-stoploss*Point;

int ticket1;
int ticket2;

ticket1 = OrderSend("EURUSD", OP_BUY, lots, MarketInfo("EURUSD", MODE_ASK), 10, losslvl_buy, profitlvl_buy, NULL);
ticket2 = OrderSend("GBPUSD", OP_BUY, lots, MarketInfo("GBPUSD", MODE_ASK), 10, losslvl_buy, profitlvl_buy, NULL);

}

我需要做什么才能让它执行多个 OrderSend() 调用?

最佳答案

好的。当您在图表上部署 EA/脚本时,它会使用有关图表的信息(交易品种、时间范围等 - 它们在编辑器中通常为粉红色)

因此,当您在 EURUSD 图表上部署 EA 时,它会出现以下行:

profitlvl_buy = Ask+takeprofit*Point;

并且认为“Ask”肯定是EURUSDAsk(或者换句话说,询问图表价格 _Symbol ) 然后 您请求以GBPUSD发送交易,并设置止盈止损 针对 EURUSD 计算,因此我认为 takeprofit 不正确。 IE。 卖价 为 1.12,止盈 为 1000 个报价点,因此 tp = 1.13,英镑价格为 1.33,止盈 不能低于(对于市场订单)交易条目。

为了修复:

double ask  = MarketInfo( "EURUSD", MODE_ASK );
int ticket1 = OrderSend(  "EURUSD", OP_BUY, lots, ask, 10, ask-stoploss*Point, ask+takeprofit*Point, NULL );

       ask  = MarketInfo( "GBPUSD", MODE_ASK );
int ticket2 = OrderSend(  "GBPUSD", OP_BUY, lots, ask, 10, ask-stoploss*Point, ask+takeprofit*Point, NULL );

此外,确保票证返回int number(如果成功)或-1通常是一个很好的做法case 打印错误代码,在本例中 - error#130

关于mql4 - 如何在 MQL4 Metatrader 4 中打开多个 OrderSend()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376405/

相关文章:

c# - 评估需要一个线程临时运行。使用 Watch 窗口执行评估

javascript - 构建 Electron MEAN stack APP,从本地 MetaTrader 4 终端获取数据

python - 如何使用 ZeroMQ 从 Python 建立到 Metatrader 4 的连接

java - 从 Java 访问 .net DLL

c# - 无法使用 Visual Studio 2015、MetaTrader Terminal 4 运行带有 [ nquotes ] 的简单智能交易系统

algorithmic-trading - init() 和 OnInit() 有什么区别?

c++ - Mac OS X 上的 MetaTrader 4 结合 C++ 或 R

plugins - Metatrader 插件 : what is it?

trading - mql4:从站点获取数据

mql4 - 在 [ MQL4 ] 中编写专家顾问