【问题标题】:How to open multiple OrderSend() in MQL4 Metatrader 4?如何在 MQL4 Metatrader 4 中打开多个 OrderSend()?
【发布时间】:2020-12-04 17:41:09
【问题描述】:

我正在尝试使用智能交易系统或脚本在 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() 调用?

【问题讨论】:

    标签: mql4 metatrader4


    【解决方案1】:

    好的。当您在图表上部署您的 EA/脚本时,它会使用有关图表的信息(符号、时间框架和其他 - 它们在编辑器中通常是粉红色的)

    因此,当您在上部署 EA 时,假设 EURUSD,图表,它会变为行:

    profitlvl_buy = Ask+takeprofit*Point;
    

    并认为“Ask”肯定是Ask of EURUSD(或者换句话说,Ask图表价格_Symbol) 然后 您请求在 GBPUSD 上发送交易,其中 takeprofitstoploss 计算为 EURUSD,所以我想 @987654332 @ 是不正确的。 IE。 Ask 是 1.12,takeprofit 是 1000 点,所以 tp = 1.13 并且英镑的价格是 1.33,takeprofit 不能(对于市场订单)低于交易条目。

    为了修复:

    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通常是一个好习惯,在这种情况下打印错误代码,在这种情况下 - 错误#130

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      相关资源
      最近更新 更多