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

 
Maxim Kuznetsov:

注文を開く際に、コメントでそれに対するルール/変数の番号を記入してください。

そして、履歴を確認するときに、その番号を引いて、それに1を加えて、新しいルール番号を得るのです

ありがとうございました。それはいい方法ですね。やってみる

 
Igor Makanu:

このコードで実験してください。おそらく、これが必要なものです。

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.7 ---> 0.7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.6 ---> 0.7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.5 ---> 0.6

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.4 ---> 0.5

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.3 ---> 0.4

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.2 ---> 0.3

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.1 ---> 0.2

私の関数GetNextLot()では、最後に決済した注文の数量を入力すると、Lot_XXの設定の次の値が返されます。

このコードの唯一の制限は、ロットを昇順に設定しなければならないことです。このコードはシンプルでわかりやすいと思いますので、必要に応じて修正してください。

ありがとうございます!!!

 
Corvin85:

ありがとうございます!!!

お願いします

ロットの計算が任意である場合、私の例のように if を switch-case に置き換えてみることができます。

 
MT4端末を2台開いて、そこから1つのEAに接続したい、つまり1台の端末に1つのプログラムをインストールし、もう1台もEAを探せるようにしたい、プログラムのコンパイルが大変で毎回あちこちにファイルを投げています。このようなことは可能でしょうか?
 

アルゴリズムの書き方はどのようにすればよいのでしょうか?


タスク

1つのExpert Advisorが異なるチャートで動作する。

口座、残高、持分などの情報を分単位で記載したファイルが必要です。


今、すべてのExpert Advisorは、すべての情報を1つのファイルに書き込むことが判明しました。その結果、不要なエントリーが多くなってしまいました。


ファイルに記録を作るボットが1つしかないのは、何か工夫があるのでしょうか?(また、例えば削除された場合、その記録は別のボットを作り始めた場合など)。

 
Seric29:
2つのターミナルでMT4を開き、そこから1つのEAに接続したいのですが、つまり、1つのプログラムは1つのターミナルにインストールされ、2番目はEAを見つけることができるようになるのですが、プログラムをコンパイルして毎回ファイルをそこかしこに投げ込むのは非常に困難です。このようなことは可能でしょうか?

そんなの無理だよ。

フォルダ内のデータを同期さ せるWindowsのプログラムを探してください。そして、EAが自動的に新しい端末にコピーされるように設定する

 
Sergey Likho:

アルゴリズムの書き方はどのようにすればよいのでしょうか?


タスク

1つのExpert Advisorが異なるチャートで動作する。

口座、残高、持分などの情報を分単位で記載したファイルが必要です。


今、すべてのExpert Advisorは、すべての情報を1つのファイルに書き込むことが判明しました。その結果、不要なエントリーが多くなってしまいました。


1つのボットだけがファイルに書き込むように、可能な元の解決策は何ですか(そして、例えば、それが削除された場合、他のボットは、記録を作り始める、など)。

GVを通じたコミュニケーションの整理をしてみてはいかがでしょうか。

例えば、こんな感じです。1回目を開始すると、GVが見つからず、ある名前で作成されます。チャートIDを値として使用することができます。次のExpert Advisorを起動すると、GVがありますが、書き込まれません。最初の1つを削除すると、その値をチェックし、その値がチャートIDと等しければ、そのGVを削除します。次のものは、GVがないことを見抜いて、独自の値で作成します。

したがって、GVは、それを作成した者、あるいは文字通り責任者である者だけが削除できるのです。手動で削除します。

 

みなさん、こんにちは。くだらない質問ですが、ちょっと実験してみたいんです。私はインジケータを持っていて、そこから何かを出力する必要はありませんが、私のExpert Advisorはそこからデータを取得する必要があります。配列を初期化 する正しい方法は何ですか?

INDICATOR_DATAかINDICATOR_CALCULATIONSか?

一般的には、SetIndexBuffer(N, BufferName, INDICATOR_CALCULATIONS)として定義されたバッファを使用して、iCustom関数でバッファ番号からデータを取得できるかどうかを知りたいのです。

 
Никита Парамонов:

みなさん、こんにちは。くだらない質問ですが、ちょっと実験してみたいんです。私はインジケータを持っていて、そこから何かを出力する必要はありませんが、私のExpert Advisorはそこからデータを取得する必要があります。配列を初期化 する正しい方法は何ですか?

INDICATOR_DATAかINDICATOR_CALCULATIONSか?

一般的には、SetIndexBuffer(N, BufferName, INDICATOR_CALCULATIONS)として定義されたバッファを使用して、iCustom関数でバッファ番号からデータを取得できるかどうかを知りたいのです。

標準のMAを取り、バッファのデータ型を変更してコンパイルし、端末のデータウィンドウ(Ctrl+D)で確認する。

 

ChartID()をターミナルのグローバル変数 に書き込むとエラーになる。このナンセンスさは何?


このコードを試してみてください。


   string GlobalVar1 = "GVAR";
   long ChID = ChartID();
   
   if(GlobalVariableSet(GlobalVar1,ChID) == 0)
      Print("Error GV", GetLastError());

   Print(GlobalVar1," id:",ChID, " GV_id:", (long)GlobalVariableGet(GlobalVar1));


//мой ответ 2019.11.29 13:30:39.292     test EURUSD,M5: GVAR id:132194970392300419 GV_id:132194970392300416

разница в конце в одну цифру