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

 
Alexey Viktorov #:
なぜ、明日まで待つのか?スペックに目を通すのが面倒な場合は、興味のあるシンボルすべてにスクリプトを実行し、マージン通貨と利益通貨の一致を探します。書く前にすべてをチェックしたわけではありませんが、偶然の一致は見つかりませんでした......。

今日はちょっと忙しい。


Taras Slobodyanik#:

通貨コードから、取引開始時に更新される準備配列の検索を行いました。

すべて1回の配列で採点するのは難しい

 
Yevhenii Levchenko スタティック変数 varについて質問です。タイプXのオブジェクトを作成し、何らかの作業を行った後、それを破棄するクラスUがある。そして、これは定期的に起こることです。質問:var変数はいつ削除されるのですか?


それは永遠に生き続ける。

 
Koldun Zloy #:

それは永遠に生き続ける。

オブジェクトUが生きている限りは?それとも端末が再起動されるまで?大まかには、この後、削除されるのですか?

 
Yevhenii Levchenko #:

Uのオブジェクトが生きている限りは?

いや、クラスのインスタンスは生成されないかもしれないが、クラスのスタティックフィールドはメモリが確保されて初期化される......。ところで、あなたの例は、私の意見では、コンパイルされるべきではないと思います。

Yevhenii Levchenko#:

端末が過負荷になるまでかどうか?大まかには、この後、削除されるのですか?

ターミナルは関係なく、寿命はグローバルに宣言された変数や通常のスタティック変数と同じで、MQLプログラムのロード時にメモリが割り当てられ、MQLプログラムのアンロード時に解放されます。

 
Igor Makanu #:

いや、クラスのインスタンスは生成されないかもしれないけど、クラスのスタティックフィールドはメモリが確保されて初期化される...。ところで、あなたの例は、私の意見では、スタティックフィールドの初期化は、記述の外にあるべきで、コンパイルできません。

OK!コンパイルできたようです。

イゴール・マカヌ#:

ターミナルは関係なく、寿命はグローバルに記述された変数や通常のスタティック変数と同じで、メモリはMQLプログラムのロード時に割り当てられ、MQLプログラムのアンロード時に解放されます。

つまり、すべてEAの内部であれば、EAのOnDeinit()まで、変数はメモリ上に存在することになるのでしょうか?

 
Yevhenii Levchenko #:

Norm!はコンパイルできるようですが・・・。

つまり、EA内部で全て完結している場合、EAのOnDeinit()まで変数はメモリ上に存在することになるのですね。

静的変数は OnDeinit()の後に破棄される。

 
Koldun Zloy #:

静的変数は OnDeinit()の後に破棄される。

OK!ありがとうございます :)

 
ブローカーを選択する際のヘルプは、最高の取引と撤退は問題ないはずです。
 
dryun777 #:
ブローカーを選択する際に役立つ、それが取引するのが最善であり、撤退は問題ないだろう...ありがとうございます。

このリソース上では、ブローカーを名指しすることは議論に等しい。そして子守唄は眠らず、報復を予告する。だから、自分の目で確かめてください...。

 
Alexey Viktorov #:

ヴァレリーには、思考の方向性がある。しかし、なぜサイクルの各反復で注文通貨に求める通貨を定義する必要があるのか、理解できません。そして、ラインで見るのではなく、証拠金通貨と利益通貨を取るのが簡単だと思います。通貨の仕様を見る・・・私ならそうします。

bool Search(string _sy)
 {
  int OT = OrdersTotal();
  string curencyProfit = SymbolInfoString(_sy, SYMBOL_CURRENCY_PROFIT),
         currencyMargin = SymbolInfoString(_sy, SYMBOL_CURRENCY_MARGIN);
  for(int i = 0; i < OT; i++)
   {
    if(OrderSelect(i, SELECT_BY_POS))
     {
      bool res = StringFind(OrderSymbol(), curencyProfit) >= 0 ||
                 StringFind(OrderSymbol(), currencyMargin) >= 0;
      if(res)
        return(true);
     }
   }
  return(false);
 }

確認したところ、正常に動作しています。

ありがとうございます。