[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 323

 
Vinin писал(а)>>

だから、わざと失敗するんですね。

しかもわざと、面白いように...。そのミスを見たいのですが、見つからないんです。

 
Daiver2 >> :

テストスクリプトとしていくつかの関数を実行し、コンパイルエラーがないか、どの関数が動作するか、ターミナルで確認します。今日、ウィンドウのバーの事前計算機能を取りました。

当然、*Not enough bars*というメッセージが出ますが、新しいティックでは、このメッセージは無期限に再び表示されると理解しています。

あとは、変数を追加してif 文を書き、エラーハンドラBloc_Errorの futureブロックにも、operatorswitchを入れて resultしています。

問題は、switch operatorで何を間違えたのか、なぜ*Expert is not working*というメッセージが表示されないのか、なぜ本当にEAが動かなくなるのか、です。
//+------------------------------------------------------------------+      
    switch()//?????????????? почему в switch не передаёте параметр 
      {
      case 3:          // Неверные параметры:
      Work=false;
      return(0);
      }


 

みなさん、こんにちは。

EA実行時のエラーの原因がわからない。1つのEAを1つの端末で11ペア同時にテストしています(デモ口座)。私は毎時の初めにエントリー条件をチェックし、つまり11のEAが同時に作動し始めるのです。IsTradeBusy()関数(ここからはhttps://www.mql5.com/ru/articles/1412)を使って、お互いの邪魔をしないようにしました。最近、Expert Advisor が、ポジションを開く代わりにTradeIsBusy グローバル変数の値を変更しようとすると、エラーが報告されるようになりました。以下はコードの一部です。

     // пытаемся менять значение TradeIsBusy с 0 на 1
     // если нам это удаётся, выходим из ф-ции, возвращая 1 - "успешное завершение"
     if(GlobalVariableSetOnCondition( "TradeIsBusy", 1.0, 0.0 )) 
         return(1);
     else
     // если нет, возможны 2 причины: TradeIsBusy = 1 (тогда надо ждать), либо 
     // возникла ошибка (это мы и проверим)
     {
        _GetLastError = GetLastError();
        // если это всё таки ошибка, выводим информацию и пробуем ещё раз
        if(_GetLastError != 0)
        {
           Print("TradeIsBusy()-GlobalVariableSetOnCondition(\" TradeIsBusy\",1.0,0.0 )-Error #",
           _GetLastError );
           continue;
        }
     }

エラーコードを表示します。

#4002 - "配列インデックス - 範囲外".

#4105 - "注文が選択されていません".

GlobalVariableSetOnCondition コマンドを使用して、どのような条件でこれらのエラーが発生する可能性があるのか理解できません

Terminal Broco Trader 4.0 build 225.

端末がこのように不具合を起こすことはあるのでしょうか?

 
Urain писал(а)>>

>>ありがとうございます、そうします。

 
OAndrey писал(а)>>

皆さん、こんにちは。

EA実行時のエラーの原因がわからない。1つのEAを1つの端末で11ペア同時にテストしています(デモ口座)。私は毎時の初めにエントリー条件をチェックし、つまり11のEAが同時に作動し始めるのです。IsTradeBusy()関数(ここからはhttps://www.mql5.com/ru/articles/1412)を使って、互いに邪魔し合わないようにしています。最近、Expert Advisor が、ポジションを開く代わりにTradeIsBusy グローバル変数の値を変更しようとすると、エラーが報告されるようになりました。以下はコードの一部です。

エラーコードを表示します。

#4002 - "配列インデックス - 範囲外".

#4105 - "注文が選択されていません".

GlobalVariableSetOnCondition コマンドを使用して、どのような条件でこれらのエラーが発生する可能性があるのか理解できません

Terminal Broco Trader 4.0 build 225.

端末がこのように不具合を起こすことがある?

このコードの部分については、何も言えません。そして、ヒントとして。関数開始時の最後のエラーの状態をリセットする。他の場所で発生する可能性もあります。

   GetLastError();  //Сбрасываем состояние 

   // пытаемся менять значение TradeIsBusy с 0 на 1
   // если нам это удаётся, выходим из ф-ции, возвращая 1 - "успешное завершение"
   if(GlobalVariableSetOnCondition( "TradeIsBusy", 1.0, 0.0 )) 
      return(1);
   else
   // если нет, возможны 2 причины: TradeIsBusy = 1 (тогда надо ждать), либо 
   // возникла ошибка (это мы и проверим)
   {
      _GetLastError = GetLastError();
      // если это всё таки ошибка, выводим информацию и пробуем ещё раз
      if(_GetLastError != 0)
      {
         Print("TradeIsBusy()-GlobalVariableSetOnCondition(\" TradeIsBusy\",1.0,0.0 )-Error #",
         _GetLastError );
         continue;
      }
   }
 

テキストに改行を入れるには?例えば、OBJ_LABELで、グラフ上に何かを表示し、テキストを数行で書きたい場合。

 
Mathers >> :

テキストに改行を入れるには?例えば、チャート上にOBJ_LABELで何かを表示し、テキストを数行で書きたい場合。

複数のラベルで表示する。

 

行数が動的に変化する場合はどうするのですか?しかも、かなりの大きさになることもあります。ラベルの代わりに何か他のものが使えるのでは?


例えば、1秒間の遅延を伴う無限ループを行うスクリプトがあるとします。削除しようとすると - "スクリプトを削除 "を選択しますが、チャートから削除されず、遅延なく突進を開始します。もう一度「delete」を押すと、スクリプトが削除されます。どうしたんですか?もしかしたら、正しく完成させるために、何かコードに追加すべきことがあるのでしょうか?

 
Mathers >> :

行数が動的に変化する場合はどうするのですか?しかも、かなりの大きさになることもあります。ラベルの代わりに何か別のものが使えるのでは?

アラート、オルタネートコメント -- いいですね。

例えば、1秒間の遅延を伴う無限ループを行うスクリプトがあるとします。削除しようとすると - "スクリプトを削除 "を選択しますが、チャートから削除されず、遅延なく突進を開始します。もう一度「delete」を押すと、スクリプトが削除される。どうしたんですか?私のコードに余計な単語を追加すべきかもしれません。

while(true)をwhile(!IsStopped())に置き換える。

 
Mathers >> :

行数が動的に変化する場合はどうするのですか?しかも、かなりの大きさになることもあります。ラベルの代わりに何か他のものが使えるのでは?

いいえ、コメントが合わない場合は別です。出力が生成されるf関数を書き、それを通して必要なものを書きます。

例えば、1秒間の遅延を伴う無限ループを行うスクリプトがあるとします。削除しようとすると - "スクリプトを削除 "を選択しますが、チャートから削除されず、遅延なく突進を開始します。もう一度「delete」を押すと、スクリプトが削除されます。どうしたんですか?私のコードに余計な単語を追加すべきかもしれません。

そうあるべきなのです。

理由: