記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第23部): 基本取引クラス - パラメータ有効性の検証"についてのディスカッション

 

新しい記事 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第23部): 基本取引クラス - パラメータ有効性の検証 はパブリッシュされました:

本稿では、取引クラスの不正な取引注文パラメータ値に対する制御と取引イベントの音声通知において開発を続けています。

EAをコンパイルしてテスターで起動します。パラメータでは、Lotsを10、StopLoss in pointsTakeProfit in pointsは1に設定します。


したがって、無効なロットサイズでポジションを開こうとするため、資金が不足し、銘柄のStopLevelパラメータによって規制される最小ストップ注文の距離に違反することを試みます。


操作ログには「取引操作を実行するのに十分なお金がありません」と「StopLoss値がStopLevelパラメータ要件に違反しています」の2つのエラーが表示されます。TakeProfitは1ポイントに設定しています。EAにそのエラーの情報も表示されないのはなぜでしょうか。実際には、最小のSYMBOL_TRADE_STOPS_LEVEL内で実行されるTakeProfitおよびStopLossレベルを配置することはルールに違反しないため、ここではエラーはありません。

TakeProfitおよびStopLossレベルは、反対の操作を実行するための現在の価格と比較する必要があります。

  • 買いは売呼値で行われます。TakeProfitとStopLossのレベルは買呼値と比較されるべきです。
  • 売りは買呼値で行われます。TakeProfitとStopLossのレベルは売呼値と比較されるべきです。

作者: Artyom Trishkin

 

ありがとう。MQL4にとって、これは本当に発見だ。コミュニティのために費やした努力と時間に感謝する。

もうドキュメントを書き始めよう。

 
Alexey Viktorov:

ありがとう。MQL4にとって、これは本当に素晴らしい発見だ。コミュニティのために費やした努力と時間に感謝する。

もうドキュメントを書き始めよう。

詳細なドキュメントは、ライブラリの主な機能が開発された後に提供される予定です。ですから、今は記事のディスカッションで質問してください。
 

これらのライブラリを使っている人はいるのだろうか?本当に巨大なコードシートで、MQLそのものを勉強するよりも理解するのに時間がかかりそうだ。 ライブラリが役に立つ可能性は大いにある。しかし私の意見では、mql5にはこの巨大なライブラリのメソッドやクラスよりも少ない演算子がある。

私の意見では、OOPはコードを減らし、読みやすくするべきだ。しかし、これらすべてのライブラリを使ってみて、私は何の利便性も感じていない。標準ライブラリを 例にとると、ポジションを開くには単純なコントリューションが使われる:

Ctrade tr;
tr.OpenBuy();

それだけだ!

しかし、このライブラリでは、OnInitだけに多くのものが詰め込まれている。たくさんのグローバル変数が使われている。控えめに言っても、何かを見つけるのは大変だ。

 
Dmitiry Ananiev:

これらのライブラリを使っている人はいるのだろうか?本当に巨大なコードシートで、MQLそのものを勉強するよりも理解するのに時間がかかりそうだ。 ライブラリが役に立つ可能性は大いにある。しかし私の意見では、mql5にはこの巨大なライブラリのメソッドやクラスよりも少ない演算子がある。

私の意見では、OOPはコードを減らし、読みやすくするべきだ。しかし、これらすべてのライブラリを使ってみて、私は何の利便性も感じていない。標準ライブラリを 例にとれば、ポジションを開くには単純な接続が使われる:

Ctrade tr;
tr.OpenBuy();

それだけだ!

そして、このライブラリではOnInitだけにたくさんのものが詰め込まれている。グローバル変数もたくさん使われている。控えめに言っても、何かを探すのは大変だ。

そうなんだ。

ライブラリーのコードを解析する必要はない。記事には作成過程が書かれており、興味のある人には詳しいチュートリアルとして役立つ。

各記事にはテストアドバイザーがついていて、ライブラリのあれやこれやの機能の使い方を示しています。もしその機能が必要なければ、初期化する必要はありません。

ライブラリーはまだ完成していません。データへのアクセスやポジションを開くためのシンプルで便利な関数ができる予定です。ところで、あなたはデフォルト値でポジションをオープンすることを説明しました。また、トレード・オブジェクトの初期化を(意図的に?)スキップしています。

現時点で単純なBuy(), Sell()メソッドがライブラリにないとしても、将来的にないとは限りません。あるでしょうし、それだけではありません。

では、例えばMQL4でクローズしたポジションを簡単に識別する方法を教えてください。現在のシンボルではなく、マジク123でクローズしたポジションです。また、どのような注文ですか?

 
Artyom Trishkin:

未決注文がトリガーされたときにオープンされたかどうか。どのような注文か。

MQL4はトリガーされた未決 注文の履歴を保存しません:

- クローズされた注文がOP_BUYまたはOP_SELLタイプの場合、成行注文がクローズされたことを意味します。

- 決済された注文が OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、または OP_SELLSTOP タイプの場合 - 保留注文が取り消されたことを意味します。


注文の終了時刻は、成行注文の終了時刻または保留注文の取消時刻に対応します。

ただし、この時刻は、保留注文がトリガーされた時点で、成行注文が開始された時刻に置き換えられます。

注文のチケットとマジックナンバーは、その間変更されません(注文の反対売買または一部決済の場合を除く。異なる状況が発生しますが、マジックは変更されません)。


つまり、MQL4注文の履歴には未決注文が発生した事実はなく、未決注文が取り消された事実だけが残っている。この情報がどの程度必要なのかさえ覚えていない。おそらく、関係するすべての作業を知らないのだろう。

 
Igor Makanu:

どこまでが必要な情報なのか--思い出すことすらできないが、おそらくタスクは私が知っているすべてではないのだろう

スリッページの推定。MT5では、この目的のためにOrderOpenPriceRequestとOrderClosePriceRequestがあります。

 
Igor Makanu:

MQL4はトリガーされた未決注文の 履歴を保存しません:

- 決済された注文がOP_BUYまたはOP_SELLタイプの場合 - 成行注文が決済されたことを意味します。

- クローズされた注文がOP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、またはOP_SELLSTOPタイプの場合 - 保留注文がキャンセルされたことを意味します。


注文が閉じられた時刻は、成行注文が閉じられた時刻または未決注文が取り消された時刻に対応します。

ただし、この時刻は、保留注文がトリガーされた時点で、成行注文の開始時刻に置き換えられます。

注文のチケット番号とマジック番号は、全時間帯で変更されません(注文の反対売買または一部決済の場合を除く - 状況が異なりますが、マジックは変更されません)。


つまり、MQL4注文の履歴には、未決注文がトリガーされたという事実そのものが存在せず、未決注文がキャンセルされたという事実だけが存在する。この情報がどの程度必要なのかさえ覚えていない。おそらく、私は関係するすべての作業を知らないのだろう。

そこで、ライブラリーの機能を理解していない人に、どのように「簡単かつ単純に」認識するのかを書いてもらった。

そして、ライブラリーはできる。そして、ユーザーはそれについて考える必要さえない。

読んでないけど、非難する」。

 
fxsaber:

スリッページ値の推定。MT5には、この目的のためにOrderOpenPriceRequestとOrderClosePriceRequestがあります。

完璧なものを作るのに行き詰っているので、まだ評価していない。

しかし、こういうこと(ブローカーの仕事の評価)は、メインのExpert Advisorの仕事と並行して行うべきで、ログに記録されるようなデータは、テスターでは意味がないのでは?


-------------------

Artyom Trishkin:

というわけで、ライブラリの機能を理解していない人に、「簡単かつ単純に」認識する方法を書いてもらいました。

そして、ライブラリはできる。そして、ユーザーはそれについて考える必要さえない。

読んでないけど、非難する」。

記事の資料に、私は選択的に目を通す、情報量が多すぎるので、それは尋ねる方が簡単です:

テスト例のTSの状態を保存することは可能ですか?- 私は自分のマジックの注文を「拾う」ことに興味があるのではなく、ターミナル・リロードの場合にExpert Advisorの状態を保存することの実現に興味があるのです。

 
Igor Makanu:

このようなデータはテスターには無意味なのか?

テスターでは大いに意味がある。スリッページを見積もらないと、非常にだまされる可能性がある。

例えば、私はすぐにこんな状況に気づいた。

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

MetaTrader 5 Strategy Tester:エラー、バグ、機能改善の提案

fxsaber, 2019.10.13 16:58

株式カスタムシンボルでは、テイクアウトは最終価格で受け付けられ、ビッド/アスクで執行されます。

例えば、買いポジションのテイクは1.09801です。買値/売値/最終ティック = 1.09799/1.09802/1.09801。最終価格がタッチされたのでトリガーされますが、最終価格より悪い買値でトリガーされます。

負のスリッページで常にテイクがトリガーされる ことが判明しました

私はテスターのReport-bidなしで何もしません。そうしないと、長い間無意味なことをやっていても気づかない。
 
Igor Makanu:
...

記事の資料に、厳選して目を通すと、情報量が、まあ、とにかく多いので、聞きやすい:

テスト例では、TCの状態を保存する可能性を提供していますか?- 私は、自分のマジックの注文を "拾う "ことに興味があるのではなく、ターミナル・リロードの場合にExpert Advisorの状態を保存することの実現に興味があるのです。

テスト例は、この特定の記事で説明されていることを確認するためのものです。操作性のテストとして。

機能の使用例とその説明は、メインのライブラリ機能が完成し、すべてのライブラリ機能に素早くアクセスするためのユーザー関数が作成された後に、別の記事で紹介する予定です。

----------------------

エキスパート状態」とはどういう意味ですか?