記事"MQL5レシピ - オープンヘッジポジションのプロパティを取得しましょう"についてのディスカッション

 

新しい記事 MQL5レシピ - オープンヘッジポジションのプロパティを取得しましょう はパブリッシュされました:

MetaTrader 5プラットフォームでは、マルチマーケットだけでなく、さまざまなポジション計算システムの使用も可能です。このような機能は、取引アイデアの実装と形式化のためのツールを大幅に拡大します。この記事では、ポジションが独立してカウントされたとき(『ヘッジ』)のポジションのプロパティの処理と考慮の方法について説明します。派生クラスの提案と、ヘッジポジションのプロパティの処理と取得の例を提示します。

比較的最近、MetaTrader 5取引端末に多方向に注文を開く機能が現れました。この注文計算システムを『ヘッジ』といいます。この注文システムの存在により、全ての最新の利点を活用しながら、MetaTrader 4から5に取引アルゴリズムを簡単に転送することができます。MetaTrader 5のヘッジに関する詳細については、『MetaTrader 5にヘッジポジション計算システムが追加されました。』という資料をご参照ください。

この記事では、『ヘッジ』システムで扱われるポジション集計のプロパティに焦点を当てます。

ヘッジポジションプロパティパネル

図4 ヘッジポジションのプロパティパネル

作者: Denis Kirichenko

 

始値は 何らかの理由でDigitsによって正規化される。

手数料は誤差があり、ゆっくりと計算されます。手数料は正規化され、サイクルの各ステップで2倍になります。

 
fxsaber:

初値は なぜかDigitsで正規化されている。

手数料は誤差があり、ゆっくりと計算されます:正規化され、サイクルの各ステップで2倍になります。

ご意見ありがとうございます。

正規化に関するコードをチェックしました。CHedgePositionInfoクラスには手数料と証拠金の2つのケースしかありません。価格は正規化されていません。私の理解では、始値はTest_hedge_properties.mq5テストスクリプトの印刷のために暗黙的に正規化されています。

次に手数料について。履歴」タブの記録と比較しましたか?そこでは、各取引について、手数料の値が 2 の精度で正規化され、2 倍になるのは終了の瞬間(DEAL_ENTRY_OUT)を考慮しています。つまり、パネルは取引開始と決済の全サイクルの手数料を反映します。この点については、記事で言及しています。

 
Denis Kirichenko:

ご意見ありがとうございます。

正規化に関するコードを確認しました。CHedgePositionInfoクラスには手数料と証拠金の2つのケースしかありません。価格は正規化されていません。私が理解する限り、Test_hedge_properties.mq5 テストスクリプトの印刷では、始値は暗黙的に正規化されています。

そうです。

次に手数料について。履歴」タブの記録と比較しましたか?そこでは、各取引について、手数料の値は 2 に最も近い値に正規化され、倍増は終了の瞬間(DEAL_ENTRY_OUT)を考慮しています。つまり、パネルは取引開始と決済の全サイクルの手数料を反映します。この点については記事に言及があります。

いいえ、コードで判断しました。ポジションを建てて、その一部を決済する。あなたのコードによると、現在のポジションの手数料は変わりません。

さらに、ダブルダウンは善意であるがゆえに問題を引き起こす。ポイントは、すべてのポジションを決済した後、残高がエクイティ+ポジション・コミッションに等しくなる必要があるということです。なぜなら、MT5 はポジションを 建てるときに、すでに建玉手数料を残高に反映させているからです。


また、手数料を計算する際に、サイクルの各ステップで正規化を実行するのは非常にコストがかかります。最適化する際に重要です。

 
fxsaber:

...いや、コードから判断すると。ポジションをオープンし、その一部をクローズする。あなたのコードによると、現在のポジションの手数料は変わりません。

さらに、倍増は善意であるがゆえに問題が生じる。ポイントは、すべてのポジションを決済した後、残高がエクイティ+ポジション・コミッションに等しくなる必要があるという ことです。なぜなら、MT5 はポジションを 建てるときに、すでに建玉手数料を残高に反映させているからです。

はい、変わりません。目的は、現在のヘッジに対して支払う合計手数料の最大値を表示することです。しかも、その一部はすでに支払っており、後ほど2回目を支払う予定です。しかし、ニュアンスは異なる。

例えば、DEAL_ENTRY_OUT_BYという 取引がある。少なくとも私のブローカーでは、手数料はまったくかからない。また、口座通貨が基準通貨と一致しない場合、手数料が変わることもあります(エントリーとエグジットでコストが異なることもあります)。ですから、私の例は理想とは程遠いのです...。

なぜ必要 だと思うのですか?私は手数料のような諸経費を計算する方法の一つを示しただけです。


手数料を計算する場合、ループの各ステップで正規化するのは非常にコストがかかる。それは最適化において重要なことだ。

最適化を除いては。まあ、自分で変更を加えて、それをコードに反映させることは誰にも妨げられない。

 
Denis Kirichenko:

はい、変わりません。目的は、現在のヘッジに対して支払う手数料の合計額の上限を表示することでした。しかも、その一部はすでに支払い済みで、2回目も後で支払う予定です。しかし、ニュアンスが違います。

例えば、DEAL_ENTRY_OUT_BYという 取引がある。少なくとも私のブローカーでは、手数料はまったくかからない。

CloseByは定義上、手数料の対象外です。

また、口座通貨が基準通貨と同じでない場合、手数料が変わることがあります(エントリーとエグジットでコストが異なることがあります)。だから、私の例は完璧にはほど遠い...。

なぜそれが必要だと 思うのですか?私は手数料のような諸経費を計算する方法の1つを示しただけです。

MT4の言語では、Equity = Balance + Profit + Swap + Commissionだからです。これが最も一般的なロジックです。しかし、もちろん、独自のものを持つこともできます。

最適化を除いては。まあ、自分で変更を加えてコードに反映させることを妨げる人はいません。

開発者はオプティマイザーをより速くしようとしている。しかしArticlesでは遅いコードも許されている。それは奇妙に見える。

 
fxsaber:

なぜなら、同じMT4の言語では、Equity = Balance + Profit + Swap + Commissionだからです。これが最も一般的なロジックです。しかし、もちろん独自のロジックを持つこともできます。

信じられないかもしれませんが、私も株式については同じように考えています :-)))

手数料の計算方法を選択する。コードに変更を加える

...開発者はオプティマイザーの高速化について話している。しかし、記事では遅いコードを許可している。奇妙に見える。

外交用語でまだ煮え切らないのか?- 私は長い間クラウドですべてのテストをしてきたし、不必要な正規化や複数行のマクロがどこかにあるなんて心配はしていない...。

 
Denis Kirichenko:

私は長い間、クラウドであらゆるものをテストしてきたが、どこかに不必要な正規化があったり、複数行のマクロがなかったりしても心配はしていない...。

最も単純なアルゴリズムによる最適化でさえ、ハードウェアの力に置き換えようとする傾向が長く続いているようだ。私にはそれができない。

 
fxsaber:

最も単純なアルゴリズムの最適化でさえ、ハードウェアのパワーに取って代わられるのは、どうやら昔からの傾向のようだ。それはできない。

ギガヘルツ、ギガバイト世代。

 

こんにちは、

zipファイルをダウンロードし、解凍してエディターで開いたのですが、コンパイルすると大量のエラーが返ってきました。


何か使えるものはありますか?


何か使えるものはありますか?

 

私のやり方に従えば間違いはない。やり方は簡単だ。MetaEditorを開いて

1) フォルダ "SharedProjects"にサブフォルダ "Hedge "を作成する;

2) そのサブフォルダーにソースファイルを置きます。


MEナビゲーター

次に、HedgePropertiesEA.mq5(エキスパートアドバイザー)とTest_hedge_properties.mq5(スクリプト)をコンパイルします。コンパイルが正常に終了すると、ターミナル・ナビゲーターに実行ファイルが表示されます。


MT5ナビゲーター