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

 

こんにちは、デニス、

この素晴らしいライブラリーのおかげで、僕のような初心者でも簡単に使えるようになりました。私はプロのプログラマーではありませんが、いくつかのコードを理解し、微調整し、デバッグすることはできます。

Test_Hedge_Properties "のサンプルコードを、私がテストしているEAの関数として使用しています。

"Update_Hedge_Info "関数を呼び出すと、1つ目のチケットがクローズした後、ポジション数を カウントする変数 "hdg_number_of_pos_total "が(2)から(1)に更新されます。

しかし、2枚目のチケットがクローズした後、変数は(1)のままで、(0)に更新されません。

私のコーディングが正しいかどうか分かりませんが、ご親切なご意見と専門知識をお聞かせください。

EAとスクリーンショットを添付します。

ありがとうございました。

ファイル:
 

私の EA で現在のマージンを計算するためにhedge_info.Margin() を使用しています。

CHedgePositionInfo::AveragePriceの 中の "switch(curr_quote_type) ... case QUOTE_TYPE_CROSS: "の中の以下の(*)行が気になります。

EURCHFを使用しており、major_symbolは USDEUR です。USDEURはすべてのFXブローカーの 99,9%でサポートされておらず、せいぜいユーザー定義のクロス なので、以下のSymbolSelectコマンドはバックテスト中にエラーメッセージにつながります。ブローカーの問題かもしれませんが、私の場合、アクティブなシンボルがUSDEURになり、最初にストラテジーテスターを開始したペア(EURCHF)ではなくなってしまったため、ストラテジーテスターが 突然中断してしまいました。

if(SymbolSelect(major_symbol,true))    // (*)

そこで私の場合、CHedgePositionInfo::AveragePriceの 最後にあるマーケットウォッチからUSDEURを削除することで解決しました

SymbolSelect(major_symbol,false);