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

 
Amon1953:

MQL4での不具合?


if()演算子で他の2つの状況でも同様の不具合が発生する。

そして、よく考えて、この不具合があなたにとって唯一のものである理由を理解しようとすれば?もしかして、何か特別な端末をお持ちなのでしょうか?

 
Alexey Viktorov:

そして、よく考えて、自分だけがそのような不具合を抱えている理由を理解しようとすれば、?もしかして、何か特別な端末をお持ちなのでしょうか?

InstaForexからのターミナルは珍しくありません。しかも、この不具合はすぐには現れませんでした。最初は大丈夫だったのですが、突然消えてしまったんです。端末を再インストールしてもダメでした。他のブローカーで確認する必要がありますね。
 
Amon1953:
InstaForexのターミナルを使っていたのですが、何も異常はありません。しかも、この不具合はすぐには現れませんでした。最初は普通に使えていたのに、突然消えてしまった。端末を再インストールしてもダメでした。他のブローカーで確認する必要がありますね。

ええ、まあ...モールス信号が出なかったんです。表に出さないと...。

ロジックや自分自身のコードの誤りを探すべきかもしれない?

 

ひとことお願いします。私は最適化をしているのですが、例えば、遅い動きと速い動きがあり、最適化の 結果、速い動きの周期が遅い動きより長くなるようなパラメータは必要ないとします。

条件による最適化のこのステップを「スキップ」するにはどうしたらよいでしょうか?

 
Alexey Viktorov:

ええ、まあ...モールス信号が出なかったんです。表に出さないと...。

ロジックや自分のコードの誤りを探すべきかもしれませんね。

このコード片は、アルゴリズム全体から独立しています。

同じブロックですが、ちゃんと動作していますね。教科書に書かれているように使えるのは1つだけなのに、IF()演算子を2つ使っています。これは、IF()/演算子の不正な動作を示すものです。

//+------------------------------------------------------------------+
   if((cnt_OO>=2))
     {
      for(int h=OrdersTotal()-1; h>=0; h--)
        {
         if(OrderSelect(h,SELECT_BY_POS))
           {
            if((OrderMagicNumber()==Magic))
              {
               Nextstep  = NextStep;
               BaseNext  = OrderOpenPrice();
               LotsNext  = NormalizeDouble(OrderLots()*K,lotDigit);
               if(NewPB>0)
                  PBcloseON=true;
               Alert("Pospedny Order NEXT  ",OrderTicket());
               Alert("Otkritih orderov  ",cnt_OO);
               break;
              }
           }
        }
     }
   if((cnt_OO==1))
     {
      LotsNext=NormalizeDouble(Lots*Prikup,lotDigit);
      Alert("Otkritih orderov NEXT net ");
      Alert("Otkritih orderov  ",cnt_OO);
     }
//+------------------------------------------------------------------+
 
Amon1953:

このコード片は、アルゴリズム全体から独立しています。

以下は同じブロックですが、正常に動作しています。IF()演算子を2つ使用しますが、教科書に記載されているように1つでもかまいません。これは、IF()/演算子の不正な動作を示すものです。


これはバグの証拠に過ぎません。不正な操作と言う前に、if()演算子で使われる変数の値をプリントアウトして、期待値と比較することが必要です。

そして、コードを 正常に読み取れるように挿入 する方法を学びます。

 
Alexey Viktorov:

これでは、バグがあることを示すだけです。正しく動作しないと言う前に、if()文の中で使われている変数の値をプリントアウトして、期待値と比較する必要があります。

そして、コードを 正常に読み取れるように挿入 する方法を学びます。

プログラムテキストをコピーしただけです。最初の投稿では、5つの注文があることと、Next.this is second third orderなどのような注文がないことを明確に確認できます。

プログラムは釘のようにシンプルで、cnt_OOはオープンオーダーの数で、複数ある場合はオーダーがあることを意味する Next, これはEAの障害時や再起動時にパラメータを復元するブロックの一部

 
Amon1953:

プログラムテキストをコピーしただけです。最初の投稿では、5つの注文があることと、Next.this is second third orderなどのような注文がないことを明確に確認できます。

プログラムは釘のように簡単で、cnt_OOはオープンオーダーの数で、1つ以上ある場合はオーダーがあることを意味する Next, これはEAの障害と再起動の場合のパラメータ回復ブロックの一部である。

その保証はどこにあるのでしょうか?

 
Amon1953:

プログラムテキストをコピーしただけです。最初の投稿では、5つの注文があることと、Next.this is second third orderなどのような注文がないことを明確に確認できます。

プログラムは釘のようにシンプルで、cnt_OOはオープンオーダーの数で、複数ある場合はオーダーがあることを意味する Next, これはEAの障害時や再起動時にパラメータを回復するブロックの一部

  1. Alt+Sでコードを貼り付けるか、投稿のフォーマットバーボタンを使用してください。



  2. あなたのロジックは、条件付きif()演算子ではなく、機能しない
  3. あなたの投稿のコードを、あなたを助ける人たちのために正常に修正しました - 彼らを尊重してください。次回は、あなたの提供するスクリプトを見て助けようとする人はいないでしょう。
 
Artyom Trishkin:
  1. Alt+Sでコードを貼り付けるか、投稿のフォーマットバーボタンを使用してください。



  2. あなたのロジックは、条件付きif()演算子ではなく、機能しない
  3. あなたの投稿のコードを、あなたを助ける人たちのために正常に修正しました - 彼らを尊重してください。今度から、みんなあなたの提供するスクリプトを見て助けようとしないでしょう。
アドバイスありがとうございました。私はあまり経験豊富なプログラマーではないので、自分にとって心地よいスタイルを使っていますが、このサイトで一般的なスタイルに持っていく方法はまだ学んでいません。- ツァイトノート