MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1030

 
Sabit Dosaev:
素朴な疑問です。フクロウがコンパイルされない。コードの末尾にエラーがあります。 + __FUNCSIG__
+ ": "+Market_Err_To_Str(errIndex)
+ "; オーダーチケット = " + (文字列)OrderTicket()
+ "; 注文タイプ = " + (文字列)OrderType()
+ "; 注文ストップロス= " + DoubleToStr(OrderStopLoss(), Digits())
+ "; 新しいストップロス = " + DoubleToStr(newStopLoss, Digits())
+ "; ビッド = " + DoubleToStr(Bid, Digits())
+ "; Ask = " + DoubleToStr(Ask, Digits())
);
}
}
lastSetNonlosTryTime = TimeLocal();
}


コンパイル時のエラーを投げる。可能であれば、ご協力ください。ありがとうございました。

コードを正しく挿入してください。


И...このコードでは、あなたのエラーが何であるかはわかりません。再現性のあるコードであること。

 
string LastComm(int a_magic_0)
  {
   int l_hist_total_4 = OrdersHistoryTotal();
   int l_datetime_8 = 0;
   int l_datetime_12 = 0;
   string ls_ret_16 = "0";
   for(int l_pos_24 = 0; l_pos_24 < l_hist_total_4; l_pos_24++)
     {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY);
      l_datetime_8 = OrderCloseTime();
      if(l_datetime_8 > l_datetime_12 && OrderMagicNumber() == a_magic_0)
        {
         l_datetime_12 = l_datetime_8;
         ls_ret_16 = OrderComment();
        }
     }
   return (ls_ret_16);
  }

アルチョム・トリシキン

この関数をMQL4からMQL5に変換するにはどうすればよいですか?

 

皆さん、こんにちは。

通信状態を判断するための関数IsConnected()の挿入箇所を教えていただけませんでしょうか。

OnTick()関数内に挿入すると、常に接続されます(つまり、ティック到着があるので接続があり、ティック到着がない(その不在または接続の欠如による)場合はOnTick()への呼び出しがなく、それぞれ接続状態 IsConnected () を定義する関数があることを意味します)。これには、フレームワークのOnTick()でIsConnected()を挿入することは無意味です(何回私はインターネットをオフにしなかった、すべての同じそれは、通信の不在についてファイルに書き込まれません)。

このため、IsConnected()関数をどこに挿入するのが正しいか、または接続状態を判断する他の方法は何かという質問があります(MT4のみ)。

ありがとうございました。

 
Roni Iron:

皆さん、こんにちは。

通信状態を判断するための関数IsConnected()の挿入箇所を教えていただけませんでしょうか。

OnTick()関数内に挿入すると、常に接続されます(つまり、ティック到着があるので接続があり、ティック到着がない(その不在または接続の欠如による)場合はOnTick()への呼び出しがなく、それぞれ接続状態 IsConnected () を定義する関数があることを意味します)。これには、フレームワークのOnTick()でIsConnected()を挿入することは無意味です(何回私はインターネットをオフにしなかった、すべての同じそれは、通信の不在についてファイルに書き込まれません)。

このため、IsConnected()関数をどこに挿入するのが正しいか、または接続状態を判断する他の方法は何かという質問があります(MT4のみ)。

ありがとうございました。

OnTimer()

Документация по MQL5: Обработка событий / OnTimer
Документация по MQL5: Обработка событий / OnTimer
  • www.mql5.com
//|                                               OnTimer_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Roman Shiredchenko:

変数と関数を混同しているようですが、関数であれば、このように試してみてください。

ALT + Sでコードを表示

ありがとうございました。

ロマン・シレドチェンコ

変数と関数を混同しているようですが、関数であれば、こうしてみてください。

ALT + S

はい......機能です。

ありがとうございます、でもなぜかエラーが出ます

'}'- すべてのコントロールパスが値を返すわけではない

私のコードと空のテンプレートの両方で、すべてを正しくチェックしたようですが。

ALT + S - ありがとうございます、考慮します。

 
wolder1:

ありがとうございました。

はい......機能です。

ありがとうございます、でもなぜかエラーが出ます

'}'- すべてのコントロールパスが値を返すわけではない

私のコードでも空のテンプレートでも、括弧は正しいようですが。

ALT + S - ありがとうございます、考慮します。

良い質問には答えが含まれています(C)。

 
wolder1:

ありがとうございました。

はい......機能です。

ありがとうございます、でもなぜかエラーが出ます

'}'- すべてのコントロールパスが値を返すわけではない

自分のコードと空のテンプレートの両方で、ブラケットを使ってすべてを正しくチェックしましたが。

ALT + S - ありがとうございました。

関数doubleは 値を返すべきであり、関数がvoid である場合はそうではない。

上記で定義した変数がある場合、コメントアウトすることができます + ここでは余分なスペースがありました (Bid> = L8b))- 編集を行いました。

double lot=0; //, Lots;
//   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
double _LOTS()
  {
   double lot=0, Lots;
   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid >= L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=(NormalizeDouble(Lots, 2));
       Print(" lot = ", lot); 
       return(lot);
      }
      
    if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid >= L8b))
      {
       lot=(NormalizeDouble((Lots*1.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
     
    

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=(NormalizeDouble((Lots*2.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
    return(lot);  
  } 
 

おはようございます。

質問です。テスターでは、デイトレ側のインターフェイスで(次の日線が通過するとき)、プログラムが保留注文を出しているはずです。すでにあった保留中の注文に価格が触れたため、その注文は開かれましたが、別の保留中の注文を 開くという指示は、なぜかシステムに無視されました。実際の口座でも、ロボットの指示が単に無視され、そのために必要なアクションが実行されないということが起こりうるのでしょうか。


そしてもう一つの質問。Strategy Testerを動かしているのですが、可視化で1週間ほど経過して、次のようなメッセージが表示され、非常に困りました。

177564ティックイベント(447バー、7888506バーステート)を0:17:42.694で処理(総時間は0:17:48.217です)

177564ティックイベント(447バー、7888506バーステート)が0時17分42秒694で処理(合計時間0時17分48秒217)。

よくわからないんだけど、忙しくてテストが続けられないの?それとも、私のコンピュータのリソースを気にしているのでしょうか?エラーメッセージが表示されないのですが。単に自分自身を終了させるだけです。ただし、日付は7日ではなく、7カ月にしました。 テストパスの最初から最後までを見たいです。

どのような宗教は、彼が例えば1年または数年のために視覚的にテストすることを許可していない?そして、例えば前年度のプログラムの効果を視覚的に確認することができます。


そしてもう一つ質問です。(未回答かもしれませんが))テスターの2周は当然のように動作し、当日の上記碑文の直前にはすべての指示を無視することが起こるのはどうしてでしょうか?数ラウンドは正常に動作していたのに(注文を開けてから閉める)、ドカンと全部無視されるなんてことがあるのでしょうか。開閉はどちらでもない。テスト期間終了のためなのか、それとも他の理由があるのか。

 

こんにちは!!!

最後に閉じた注文の時刻が知りたい。

関数を書きましたが、正しく動作しません。

//+------------------------------------------------------------------+

//| 最後に注文が終了した時刻

//+------------------------------------------------------------------+

double Last_Ticets_Close()

{

Last_Ticet = 0;

Last_OrClTime = 0;


for(int i=0; i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY ))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)

{

if(Last_Ticet<OrderTicket())

{

Last_Ticet = OrderTicket();

Last_OrClTime = OrderCloseTime();

}

}

}

}

return (Last_Ticet);

}

何が問題なのか、どなたか教えてください。

 
142vs:

こんにちは!!!

最後に閉じた注文の時刻が 知りたい。

f-iioを書いたが、正しく動作しない。

何が問題なのか、どなたかご指摘ください。

後日 談を検索する場合は、チケットではなく時間を比較します。