初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1076

 

大きなファイルを1行で読むにはどうしたらいいですか?

FileReadString()

bin-fileから読み込む場合、読み込む文字列の長さを指定する必要があります。txtファイルから読み込む場合、文字列長は不要で、現在位置から改行文字"˶‾‾‾"まで読み込まれます。csvファイルから読み込む場合、文字列の長さは必要なく、現在の位置から最も近いデリミタまたはテキスト文字列の終了文字までが読み込まれます。

ファイル全体のフラグはFILE_BINのみ ですが、MQL5ではMQL4と異なり、4095バイトに制限されています。他に、ファイルから大きなテキストを1行で取得する方法はありますか?
 
Сергей Таболин:

そういうことではありません。

"そして、解決すべき論理NOTで - ビットを反転させるが、ターミナルを持っていない - MQLでビット単位のNOTを行う方法を覚えて いないし、 オンラインヘルプを読みたくない"。

つまり、証拠を出すか、お茶を濁さないかのどちらかです ))))

"ミス "は誰にでもある。間違いを認めることができるのは強者だけだ!」。まだ誰も声を上げていないのであれば、それは私の知恵です )))。すでに誰かが言っていたのなら-賢者の知恵を繰り返しました )))

あなたの主張がまだ理解できないのですが?私に何か証明しろというのですか?- なぜ?))))

ここでは、NOTで再現し、議論されているすべてのバリエーションを確認しました。

void OnStart()
  {
//---
   uint TForiginal=OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|
                   OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30|OBJ_PERIOD_H1;

   uint TFwithNOT=(~OBJ_PERIOD_H1&OBJ_PERIOD_H2)-1;
   uint TFwithShift=OBJ_ALL_PERIODS>>9;
   Print("TForiginal = ",TForiginal);
   Print("TFwithNOT = ",TFwithNOT);
   Print("TFwithShift = ",TFwithShift);
  }
//+------------------------------------------------------------------+

NOT variant はどの TF でも動作しますが、(表示する TF_ より下の TF_ と、必要な TF より一つ古い TF_) -1 に従って充填します。

 

皆さん、ごきげんよう。もう1つ質問ですが...

MQL5のプログラムには、「入力パラメータ」の設定が(たくさん)あります。必要に応じて計算を行い、グラフィカルなオブジェクトを作成/削除し管理するプログラムです。

セットアップ・ウィンドウから入力パラメータを変更すると、 Initというイベントが発生し、プログラムの初期化、「再計算」「再描画」オブジェクトが発生します。これは原理的には必要なことですがInitというイベントはチャート周期を変更したとき(その他)にも発生 し、結果として必要のないときでも毎回処理が繰り返されています。

Question:入力パラメータは変更せず、プログラム(端末)起動時の初期化を 残す場合、 Initイベントでプログラムの 初期化を除外するにはどうすればよいですか?

可能なバリエーション:設定値を記憶しておき、イベントInitが 発生したときに比較し、異なる場合は初期化を許可する、ただし入力パラメータが 多い...。

 
Anzhela Sityaeva:

皆さん、ごきげんよう。もう1つ質問ですが...

MQL5のプログラムには、「入力パラメータ」の設定が(たくさん)あります。必要に応じて計算を行い、グラフィカルなオブジェクトを作成/削除し管理するプログラムです。

セットアップ・ウィンドウから入力パラメータを変更すると、 Initというイベントが発生し、プログラムの初期化、「再計算」「再描画」オブジェクトが発生します。これは原理的には必要なことですがInitというイベントはチャート周期を変更したとき(その他)にも発生 します。結果として、必要のないときでも毎回処理が繰り返さ れることになるのです。

Question: 入力パラメータは変更せず、プログラム(端末)起動時の初期化を 残す場合、 Initイベントでプログラムの 初期化を除外するにはどうすればよい ですか?

可能なバリエーション:設定値を記憶しておき、イベントInitが 発生したときに比較し、異なる場合は初期化を許可する、ただし入力パラメータが 多い...。

別の似たような問題に対するヒントを紹介します。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

EAでは動作するが、インジケータでは正しく動作しない、インジケータ起動時に音楽が鳴る

イホール・ヘラスコ さん 2019.06.17 14:12

はい。

  1. インジケータが起動すると、グローバル ターミナル変数が 作成されます。みたいな......ブーイングされてるんですよ。
  2. 挨拶文が流れます。
  3. アンロード時(OnDeinitでチェック)、グローバルターミナル変数が削除されます。
  4. 動作中にTFを変更したり、パラメータを変更した場合、OnInitで終了時に端末のグローバル変数をチェックします。もしそうなら、挨拶はしない。そうでない場合は、挨拶文が再生されます。

 
Alexey Viktorov:

別の似たような問題に対するヒントを紹介します。



ご返答ありがとうございます!私たちの場合、数十人の対応関係の変化の状態を把握するために、 グラフ上の「空白」を介して これを記述するか、オブジェクトの数が多すぎない限りは不要な初期化を我慢するしかないようですね...。
 
Anzhela Sityaeva:
ご返答ありがとうございます!私たちの場合、数十人の対応関係の変化の状態を把握するために、 グラフ上に「空白 」を設けてこれを記述 するか、オブジェクトがそれほど多くない限りは不要な初期化を我慢するしかないようですね...。

でも、質問されたのは

アンジェラ・シティヤエワ

皆さん、ごきげんよう。もう1つ質問ですが...

MQL5のプログラムには、「入力パラメータ」という設定が(たくさん)あります。必要に応じて計算を行い、グラフィカルなオブジェクトを作成/削除し管理するプログラムです。

セットアップ・ウィンドウから入力パラメータを変更すると、 Initというイベントが発生し、プログラムの初期化、「再計算」「再描画」オブジェクトが発生します。これは原理的には必要なことですが Initという イベントは チャート周期 (その他)を変更したときにも 発生 し、結果として、 必要のないときにも 毎回処理が繰り返 されることになります。

質問: 入力パラメータを変更せず、プログラム(端末)起動時の初期化を 残す場合、 Initイベントでプログラムの 初期化を除外するにはどうすればよい ですか?

可能なバリエーション:設定値を記憶しておき、イベントInitが 発生したときに比較し、異なる場合は初期化を許可する、ただし入力パラメータが 多い...。

そして、あなたの状況では、これらのヒントの1つは、これらのオブジェクトの不要な再描画を防ぐことができます。また、OnDeinit()でこれらのオブジェクトが削除される場合は、チャートの切り替え時にそこでも削除を禁止する必要があります。

トレーディング、自動売買システム、ストラテジーテストのためのフォーラムです。

チャートクローズ時に端末のグローバル変数を削除するには?

アレクセイ・ビクトロフ, 2019.06.29 08:40

この表に注目

REASON_PROGRAM

0

ExpertRemove()の呼び出しにより、Expertが動作しなくなった。

REASON_REMOVE

1

チャートから削除されたプログラム

理由_リコンパイル

2

プログラムの再コンパイル

reason_chartchange

3

チャートシンボルまたはピリオドが変更されました

reason_chartclose

4

チャートは閉じています

reason_parameters

5

入力パラメーターがユーザーによって変更された

REASON_ACCOUNT

6

アカウント設定の変更により、別のアカウントがアクティブになった、またはトレードサーバーに再接続された

reason_template

7

別のチャートテンプレートが適用された

reason_initfailed

8

OnInit()ハンドラが0以外の値を返した

REASON_CLOSE

9

ターミナルを閉鎖


そして、あなたのコードのこの行に

   if(reason==1) GlobalVariableDel("val");

しかし、私の記憶が正しければ、あなたの問題の始まりは、次のような条件を置くのがよいでしょう。

   if(reason != REASON_CHARTCHANGE) GlobalVariableDel("val");

 
Alexey Viktorov:

しかし、あなたの質問では、それは

あなたの場合、これらのヒントのいずれかが、これらの不要なオブジェクトの再描画を防ぐことができます。また、OnDeinit()でこれらのオブジェクトが削除されるのであれば、チャートの切り替え時にそこでも削除を禁止する必要があります。


方向性は明確だ、やってみよう...。ご返信ありがとうございました。
 
標準のSL/TPだけでなく、終値条件を設定できるEA 例がCodebaseに見当たらないのですが。どなたかヒントをください。
 
Sprut112:
標準のSL/TPだけでなく、終値条件を設定できるEA 例がCodebaseに見当たらないのですが。どなたかヒントをください。

オープニングコンディションとクロージングコンディションの違いは何ですか?

 
Sprut112:
標準のSL/TPだけでなく、ポジションのクローズ条件を書けるEAの 例がCodebaseにありません。どなたか教えてください。

ウラジーミル・カルプトフのコードにはそのような条件があったが、彼のコードの読み方は自分で学ばなければならない)

理由: