文章 "MQL5 Cookbook - 以 MQL5 编写的多币种 EA,利用限价订单工作" - 页 3

 

奥托......现在你可以使用它了 :-)

对我来说,它可以进行交易。

 

这真是个不错的答复。谢谢!

我只是想指出,文章的作者应该处理好这些问题。

您只需

CheckTradingPermission()
和所有 MQL5xxx 垃圾就可以了;)
 
Otto Pauser:

这真是个不错的答复。谢谢!

我只是想指出,文章的作者应该处理好这些问题。

嗯嗯......是的,我们知道。

我给了它一些表达方式。

这样做很有效,即使没人说什么,你也会在其他地方注意到:-)

 
Christian:

嗯......是的,我们知道。

我已经把它表达出来了。

这样的东西很有效,即使没人说什么,你也会在其他地方注意到它:-)

我的目的是将 MarketOrders 重新编程为 PendigOrders。

不管是谁都可以使用,下面是它的工作 代码。

这不是一个有用的 EA,只是一个如何计算的例子。我希望它是正确的,因为它在测试器中可以正常工作。

这也不是我真正的编程风格,而是非常简单。

#include <Trade\Trade.mqh> CTrade Trade;

//+------------------------------------------------------------------+
input int    inp_Dist     =  120;   // 挂单距离(点数)
input int    inp_Stop     =  125;   // SL (points)
input int    inp_Take     =  150;   // TP(点数)
input double inp_Volume   = 0.01;   // 体积

//+------------------------------------------------------------------+
double distPend = inp_Dist*_Point;
double distStop = inp_Stop*_Point;
double distTake = inp_Take*_Point;

//+------------------------------------------------------------------+
bool   done     = false;
double ask;
double bid;
double levelSell;
double levelBuy;
double stopSell;
double stopBuy;
double takeSell;
double takeBuy;

void OnTick()
{
   if(done)
      return;
   
   ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

   levelBuy =NormalizeDouble(bid-distPend,_Digits);
   levelSell=NormalizeDouble(ask+distPend,_Digits);

   stopBuy  =NormalizeDouble(levelBuy -distStop,_Digits);
   stopSell =NormalizeDouble(levelSell+distStop,_Digits);

   takeBuy  =NormalizeDouble(levelBuy +distTake,_Digits);
   takeSell =NormalizeDouble(levelSell-distTake,_Digits);

   SellLimit();
   BuyLimit();

   done=true;
}

bool BuyLimit()
{
   //return(Trade.BuyLimit (inp_Volume,levelBuy ));
   return(Trade.BuyLimit (inp_Volume,levelBuy ,_Symbol,stopBuy,takeBuy ));
}

bool SellLimit()
{
   //return(Trade.SellLimit(inp_Volume,levelSell));
   return(Trade.SellLimit(inp_Volume,levelSell,_Symbol,stopSell,takeSell));
}