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

 
Artyom Trishkin:

もう答えましたよ。

リストの最後の順番を取るのです。

そして、まずオーダーリストのステータスがどの程度変化したかを調べる必要があります。12だったのが8になって......と、4桁も変わっている。従って-4つの注文をすべて印刷する必要があります。そして、いつもリストの最後の1枚だけを印刷する。

どのように変化したかを知るには?EAを起動するときに、例えばint last_totalのように変数に注文数を書いておくとよいでしょう。 そして、各ティックで、OrdersTotal()とlast_totalを比較します。もし、同等でないなら、それは変化である。OrdersTotal()とlast_totalの差分を変数、例えばnum_changesに書き込み、OrdersTotal()の新しい状態をlast_totalに保存します。
ここでは、例えば、保留中の注文がトリガーされた場合など、微妙な点があるかもしれません。でも今は、まずやるべきことをやってください。
保留中の注文の数を知ることで、履歴で調べることができます。ただし、履歴リストの注文の監視を制限することもできます。上記のすべてを履歴注文のリストに対して行い、成行注文のリストに対しては行わないようにします。あったものとなったものとの差、これが分析すべき注文量です。常にリストの最後の順番だけを分析するのです。

ただし、履歴リストの最後の注文が、最後に締め切られた注文であることを保証するものではありません。というニュアンスも考慮しなければならない。しかし、その後。

ありがとうございました。そうすると、よりクリアになりますね。キーワードは「一度に1枚だけでなく、4枚の注文を印刷 すること」です。最初の投稿で言ってくれれば、拷問はしなかったんだけどな。

 
ANDREY:

ありがとうございました。その方がよっぽど意味がある。キーワードは「1枚ではなく、4枚を同時にプリント する」ことです。最初の投稿で言ってくれれば、拷問はしなかったんだけどな。

どういたしまして。この行動、この行動のロジックを自分で学ぶまでは、死角から動かず、フォーラムで質問することになるのでしょう。フォーラムで質問することになります。注文/リスト/チケットなどと連動している必要はありません。

リンゴを使うなら、テーブルの上にあるリンゴの数を記録しておいて、タバコを吸いに行って戻ってきたらリンゴが減っていた...というアルゴリズムも簡単に作れそうですね。
どうしてそう思うんですか?簡単 - りんご5個、りんご3個。2台が行方不明。猫はきっと...あるいは、5人いたのが6人になったとか。一つ出てきました。湿った状態から、もしかしたら...。どちらにしても、心の中でカウントしていたんですね。

では、同じ動作でも、注文を数えるのとはどう違うのでしょうか?同じリンゴを..."in mind "の代わりに "in function "と書く。

 

すでに200行以上のコードがあり、すべてを閲覧するのが不便な場合、コードから機能を削除する(分解する)方法をアドバイスしてください。私は「仕組み」に興味があります。つまり、後でメインコードの中で呼び出すために、関数がどのように「分解」され、どこに書かれているかということです。

説明付きの例があれば、リンクを貼っていただけると幸いです
 
Alexey Kolybelnikov:

すでに200行以上のコードがあり、すべてを閲覧するのが不便な場合、コードから機能を削除する(分解する)方法をアドバイスしてください。私は「仕組み」に興味があります。つまり、後でメインコードの中で呼び出すために、関数がどのように「分解」され、どこに書かれているかということです。

説明のある例があれば、リンクを貼っていただけると幸いです

昔はね。

double a = (b + c) / (d - e);


なった。

double a = Add(b,c) / Sub(d,e);

//---------

Add(const double v1,const double v2) { return v1 + v2; }

Sub(const double v1,const double v2) { return v1 - v2; }
 
Artyom Trishkin:

どういたしまして。行動のロジックの立て方を学ばない限り、死角から動けない--フォーラムで質問することになる。そして、そのロジックはこれ以上ないほどシンプルな言葉でまとめられる。ワラント/リスト/チケットなどに縛られる必要はない。

リンゴなら、その量を把握するアルゴリズムも簡単に作れると思います。テーブルの上のリンゴの数を覚えていて、一服しに行ったら、戻ってきたらリンゴが減っていた...というのが、現実の生活と同じですからね。
どうしてそう思うんですか?簡単 - りんご5個、りんご3個。2台が行方不明。猫はきっと...あるいは、5人いたのが6人になったとか。一人登場。湿った状態から、もしかしたら...。どちらにしても、心の中でカウントしていたんですね。

では、同じ動作でも、注文を数えるのとはどう違うのでしょうか?同じリンゴを..."心の中 "の代わりに "機能の中 "と書く

了解しました、説明ありがとうございます。同じ疑問がずっと頭の中にあって......。私のコードでは、Print()関数が ジャーナルに頻繁に印刷されることを想定しています。ジャーナルには、各オーダーのオープンオーダーとクローズオーダーが自動的に印刷されます。注文が多いんです。 それに応じて、注文に関する記録もたくさん残っているはずです。これらの項目は、Print()関数のデータを見ているときによく邪魔になるのですが、これも数が多いことがあります。

Q: .

必要なときに、ジャーナルには 未決済注文と決済注文の情報が表示されず、Print()関数にのみ 表示されるようにするには、どうしたらよいでしょうか。

MQL4の関数を使えばできるのか、それともMT4ターミナルのコードを変更したほうがいいのか?

ありがとうございます。
 
ANDREY:

了解です、分かりやすい説明ありがとうございました。同じ疑問がずっと頭の中にあって......。私のコードでは、Print()関数が ジャーナルに頻繁に印刷されることを想定しています。ログには、各注文のオープンオーダーとクローズオーダーが自動的に出力されます。注文が多いんです。それに応じて、注文に関する記録もたくさん残っているはずです。これらのレコードは、私がPrint()関数からデータを取得するのをしばしば止めますが、これも非常に数が多くなることがあります。

Q: .

必要なときに、ジャーナルには 未決済注文と決済注文の情報が表示されず、Print()関数にのみ 表示されるようにするには、どうしたらよいでしょうか。

MQL4の関数を使ってできるのか、それともMT4ターミナルのコードに変更が必要なのか?

ありがとうございます。

調べたのなら、ファイルに書いた方がいい。ログファイルに注文を伴うアクションを表示する方法がわかりませんし、そんなものはないと思います。 EAの操作の始まりと終わりのエントリーレベルです。これらは、ログファイルのエントリです。ファイルにはあなたが望むものだけが含まれ、ログにはあなたのものに加えて端末の記録が含まれます。端末で変更することもできるし、自分で書くこともできる))しかし、いくらかかるのか?

 
Alexey Kolybelnikov:

すでに200行以上のコードがあり、すべてを閲覧するのが不便な場合、コードから機能を削除する(分解する)方法をアドバイスしてください。私は「仕組み」に興味があります。つまり、後でメインコードの中で呼び出すために、関数がどのように「分解」され、どこに書かれているかということです。

説明のある例があれば、リンクを貼っていただけるとありがたいです

https://www.mql5.com/ru/docs/runtime/imports

https://www.mql5.com/ru/docs/basis/preprosessor/include

そしてさらにリンク先では...一般に、「余分なもの」はすべて*.mqhライブラリに入れ、メインコードの先頭に置く。 コンパイラはそれを「接着」する。

しかし、一般的には200ラインは多すぎるということはありません。 ボタンを使えば、1000ライン以上でも違和感がありません。

 
Valeriy Yastremskiy:

研究をするのであれば、ファイルに書き込む のがよいでしょう。ログファイルにオーダーアクションを表示する方法がわからないし、ないと思うので、これはEAの動作開始と終了の記録レベルです。これらは、ログファイルのエントリです。ファイルにはあなたが望むものだけが含まれ、ログにはあなたのものに加えて端末の記録が含まれます。端末で変更することもできるし、自分で書くこともできる))しかし、いくらかかるのか?

ご指摘ありがとうございます。でも、EAをファイルに書き込んだことはないと思います。私はこれまでずっとMetaEditor 4でEAを書いてきました。テスト期間中のPront()の動作を見るために、「ログ」-「開く」タブを選択しました。ログ]タブと同じ内容のファイルがメモ帳に開きます。私にはログファイルのように見えます。
しかし、このメモ帳ファイルからすべてのオープンオーダーとクローズドオーダーを削除することはできないようです。正確に言うと、そうなんです。しかし、それは非常に面倒で時間のかかる作業です。
あなたは私のコードが開いて、閉じた注文を作る方法の秘密を教えていただければ、私はあなたに非常に感謝しますが、ファイルでは、すべての注文の開閉に関する情報はありませんでしたが、唯一のPront()関数のレコードです。
ありがとうございました。

 
ANDREY:


MQL4の最新アップデートについて詳しく読める場所をご存知ですか? 情報はたくさんあるのですが、必要なものを見つけるのが難しいのです。

https://www.mql5.com/ru/forum/160683/page1109#comment_15711102

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.03.31
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
ANDREY:

ご指摘ありがとうございます。でも、EAをファイルに書いたことはなかったと思うんです。私はこれまでずっとMetaEditor 4でEAを書いてきました。テスト期間中のPront()関数の出力を見るために、Log - Openタブを選択しました。ログ]タブと同じ内容のファイルがメモ帳に開きます。ログファイルだと思われます。
しかし、このメモ帳ファイルからすべてのオープンオーダーとクローズドオーダーを削除することはできないようです。正確に言うと、そうなんです。しかし、それは非常に面倒で時間のかかる作業です。
私のコードを開閉注文にする秘訣を教えて頂ければ幸いです。しかし、ファイルには開閉注文に関する情報はなく、pricip()の記録しかありませんでした。
ありがとうございました。

int OnInit()
  {   
//----------
   FileTest() // функция открытия файла записи данных
   point = 1/Point; // чтобы не делить на пойнт
   tx=TimeCurrent();// задание времени начала работы советника
//--- create timer
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {

   FileClose( Handle );                // Закрываем файл
   Alert("Файл ",File_Name," закрыт.");// Сообщение
     
//--- destroy timer
   EventKillTimer();

  }

void OnTick()    // Функция start() раньше называлась
  {
.................
 Qnt_Symb=FileWrite(Handle,Symbol()," ТФ ",Period(),"Открыт ордер Buy по цене ",Ask,
            "Ticket = ",Ticket," ProfB=",ProfB," MxProfB=",MxProfB, " ProfS=",ProfS," MxProfS=",MxProfS);//Запись в файл
            if(Qnt_Symb<=0) // Если не получилось
              {
               Alert("Ошибка записи в файл ",GetLastError());// Сообщение
              };
.................
}
//-------------------------------------------------------------- 12 --

int FileTest()
  {
   Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//Открытие файла
   if(Handle==-1) // Неудача при открытии файла
     {
      Alert("Ошибка при открытии файла. ",// Сообщение об ошибке
            "Возможно, файл занят другим приложением");

     }

   return(Handle);
  }
//+------------------------------------------------------------------+

テスターの場合は「 \testerfiles 」というフォルダーに、ウィンドウズの場合は「 \MQL4Files 」というフォルダーに格納されます。そして、コバレフがそれを詳しく解説している。