記事"MQL5クックブック - MQL5での未決注文の取り扱いとマルチカレンシーエキスパートアドバイザー"についてのディスカッション - ページ 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(ポイント)
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));
}