ライブラリ: MT4Orders - ページ 27

 

こんにちは! :)

あなたのライブラリを使用しようとしています。MT5モード ヘッジビルド1959、テストモード。

OrderSelect(... , SELECT_BY_TICKET)コールは履歴の注文に対してfalseを返します。これはどのようにして可能なのでしょうか?


 
Ilya Malev:

こんにちは! :)

あなたのライブラリを使用しようとしています。MT5モード ヘッジビルド1959、テストモード。

OrderSelect(... , SELECT_BY_TICKET)コールは履歴の注文に対してfalseを返します。どうしてこのようなことが可能なのか分かりますか?

また同じことを繰り返さないように、このスレッドを読んでください。

MT4 のクローズポジションのチケットは、簡潔に言えば MT5 のクローズトレードのチケットと同じです。これには完全に正当な理由がたくさんあります。特に、ライブラリのヘッダーをお読みください。あるいは、もちろん、このトピックに関するスレッドを読む方がよいでしょう。


理解を深めるには、MT5であらゆる種類の複雑な取引を手作業で行い、次のスクリプトを実行します。

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: レポート

fxsaber, 2018.12.11 12:28 pm.

MT5のシングルパスのレポートにうんざりしている。そこで、以下の3行をMT5アドバイザーの最後に追加します。
#define  REPORT_TESTER       // テスターは自動的にレポートを記録します。
#define  REPORT_BROWSER      // ブラウザ起動時にレポートを作成 - DLL許可が必要です。
#include <Report.mqh>  //https://www.mql5.com/ja/code/18801

を追加すると、シングルパスの最後に通常のHedge-Testerレポートが開き、ポジションが通常の形で表示され、スリッページも表示されます。

例えばExpertsExamplesのMoving Averageを試してみて ください。


レポートがどのように見えるかをすぐに理解するには、アカウントで次のスクリプトを実行してください。

#define  REPORT_BROWSER      // ブラウザ起動時にレポートを作成 - DLL許可が必要です。
#include <Report.mqh> //https://www.mql5.com/ja/code/18801

void OnStart()
{
  REPORT::ToFile(); // ブラウザでレポートを作成し、開く。
}


すべてがMT4にも関連します。

あるいは、上に書いたように、MT5 Expert Advisorに適切な行を追加して、MT4Ordersが履歴に関して何をするか見てください。
 
fxsaber:

このスレッドを読むべきだ。

MT4のクローズポジションのチケットは、要するにMT5のクローズトレードのチケットと同じです。これには完全に正当な理由がたくさんあります。特に、ライブラリのヘッダーをお読みください。または、もちろん、このトピックに関するスレッドを読む方がよいでしょう。


理解を深めるには、MT5であらゆる種類の複雑な取引操作を手作業で行い、次のスクリプトを実行してください。

あるいは、上に書いたように、任意のMT5 Expert Advisorに適切な行を追加して、MT4Ordersが履歴に関して何をするか見てください。

ということは、MT4とMT5の完全な互換性を実現するのはまだ不可能ということですね。わかりました、ありがとうございます。

 
Ilya Malev:

やはりMT4→MT5の完全互換は無理なのか。わかりました、ありがとうございます。

そうですね、曲がったMT4のコードがMT5で動くとは限りません。

 
fxsaber:

そうです、MT4の曲がったコードがMT5で機能するとは限りません。

カーブとは、未決注文を送信したOrderSendの結果が、成行注文になった後も同じ数値のままであることを計算するものですが、私の理解は正しいでしょうか?)

元のコードのロジックを作り直すことなく、この問題を解決する最も簡単な方法は何でしょうか?もし私自身がもっと早く思いつかなければ)

一般的に、この動作はMT4の注文システムとは呼べません。なぜなら、MT4システムで有効化する際にオーダーチケットを保存することは、その基本の1つだからです。

 
Ilya Malev:

この曲線は、保留中の注文を送信した OrderSend の結果が、成行注文になった後も同じ数値のままであることを計算するものですが、正しく理解していますか?)

注文が約定すると、MT5ではポジションチケットは同じままになります。しかし、決済時にはそうなりません。

曲線はSELECT_BY_TICKETの使用です。特に、この方法で「ポジションがクローズしたかどうか」というイベントを追跡する場合です。

一般的に、この動作はもはやMT4の注文システムとは呼べません。なぜなら、MT4システムで有効化されたときに注文チケットを保存することは、その基本事項の1つだからです。

すべてが保存されます。試してみてください。

 
fxsaber:

注文が約定すると、MT5 ではポジションチケットは同じままです。しかし、決済時にはそうなりません。

曲線は SELECT_BY_TICKET の使用です。特に、この方法で「自分のポジションがクローズしたかどうか」というイベントを追跡する場合です。

すべてが保存されます。やってみるしかない。

まあ、試したけどね。もちろん、クローズ後のチケット番号の話です。つまり、注文番号全体が浮いているのだ。注文番号59(OrderSendの結果)をオープンし、有効にしてクローズした後、OrderPrintで履歴から番号を印刷すると、履歴に1から13までの番号が表示される。 これは残念ながらMT4のシステムとは呼べない。MT4のドキュメントには、SELECT_BY_TICKETが「自分のポジションがクローズしたかどうか」というイベントのトラッキングに使用できないという記述はありませんでした。MT4では、これはごく普通のことでした(ベストなプログラミングスタイルでないことに異論はありませんが、私たちは完璧な世界のためにライブラリを書いているわけではありません。)

また、ここではクロージャ・チェックの問題ではありません。多くのシステムは、何らかの属性に基づいてオーダーをグループに整理し、その結果を分析してさらなる決定を下すという事実についてだ。そして、このようなシステム全体(チケットを記憶し、履歴から分析することが不可能なシステム)は、あなたのライブラリでは動作しません。もし、SELECT_BY_TICKETを介して単に「自分のポジションがクローズしたかどうかのイベントを監視する」他のすべてのシステムを追加すると、かなりの数の例外が発生します。
 
Ilya Malev:

まあ、そうやってやってみたんだ。もちろん、クローズ後のチケット番号の話です。つまり、注文の番号付け全体が浮いているのです。注文番号59(OrderSendの結果)をオープンし、有効にしてクローズした後、OrderPrintで履歴から番号を印刷すると、履歴に1から13までの番号が表示されます。 これは残念ながらMT4のシステムとは呼べません。MT4のドキュメントには、SELECT_BY_TICKETが「自分のポジションがクローズしたかどうか」というイベントのトラッキングに使用できないという記述はありませんでした。MT4では、これはごく普通のことでした(これが最善のプログラミングスタイルでないことに異論はありませんが、私たちは完璧な世界のためにライブラリを書いているわけではありません。)

スレッドを読むのが遅いのはよくあることだ。

  • クローズしたポジションの チケットがクローズしたときのチケットと一致するようにライブラリを書くことは基本的に不可能です。これはMT5のアーキテクチャ上の制限です。
  • 曲がったMT4アドバイザーを書くという馬鹿な行為を止めさせるので、非常に良い制限だ。
簡単なルールがあります。MT4エキスパートアドバイザーでSELECT_BY_TICKETを見かけたら、それは95%不正なコードです。どのような種類のチケットストレージも、ほとんどの場合、どんな戦闘アプリケーションにも耐えられない曲がったロジックです。

 
fxsaber:

スレッドを読まない怠惰さはお馴染みだ。

  • 原則的に、クローズしたポジションの チケットがクローズしたときのチケットと一致するようにライブラリを書くことは不可能である。これはMT5のアーキテクチャ上の制限である。
  • 曲がったMT4アドバイザーを書くという馬鹿げた行為を止めさせるので、これは非常に良い制限である。
簡単なルールがあります。MT4エキスパートアドバイザーでSELECT_BY_TICKETを見かけたら、それは95%不正なコードです。どのような種類のチケットストレージも、ほとんどの場合、どんな戦闘アプリケーションにも耐えられない曲がったロジックです。

なぜスレッドを読むのですか? 私はすでにすべてを理解しました。

EAが複数の注文のグリッドを同時に構築し、それぞれの注文がシリーズ内の過去の注文の結果に応じて独自のロジックを持つことを想像してみてください。他のロジックを実装するよりも、それらのチケットを配列に格納する方がどれだけ簡単でしょう。同時に、このロジックが「戦闘アプリケーション」に耐えられない唯一のケースは、瞬時の停電であり、まさにExpert Advisorが次の取引操作の結果をそのデータとともにファイルに書き込むべき瞬間である。これは、VPS(またはUPSの存在下)での取引では事実上不可能です。

 
Ilya Malev:

なぜこのスレッドを読むのか?

EAが複数の注文のグリッドを同時に構築し、それぞれが過去の注文の結果に応じて独自のロジックを持つことを想像してみてください。他のロジックを実装するよりも、それらのチケットを配列に格納する方がどれだけ簡単でしょう。同時に、このロジックが「戦闘的応用」に耐えられない唯一のケースは......。

耐えられないケースはいくらでもある。1つのグリッドオーダーは何十ものポジションを生成し、同じTPでクローズする各ポジションは何十ものクローズポジションを 生成する。

このライブラリは、MT4で戦闘EAを書く方法を知っている人のために作られたもので、デモトイではありません。コンバットは毎回ゼロからOnTickを入力します。

私はあなたに反論することはありません。私の意見には反対でしょう。しかし、曲がったMT4アドバイザーほどひどくはない。


おそらく、誰かがこの対話に介入し、リンクや声の思考で、なぜ世界が現実的なのかを指摘してくれるだろう。