プログラムによる「マージン率」の取得方法

 

端末の「契約仕様」ウィンドウに、「証拠金率」という項目があります。SymbolInfoDouble()が 返すはずなのですが、その指定子の中にこの「マージンの割合」を知ることができる値が見つかりませんでした。 プログラム的にどのように取得できるのですか?


 
このマージンの割合、どういう意味なんでしょうか?
 
Alexey Viktorov:
このマージンの割合、どういう意味なんでしょうか?
CFDの担保計算で使用されます。ENUM_SYMBOL_CALC_MODE の説明を参照してください。
 

不完全な質問で申し訳ありません、もっと明確に聞くべきでした。

質問の意図は何ですか?マージンの計算が正しいか/間違っているかを確認するため?そうでない場合は、説明文中のその計算式から算出することができます。そして、それをどうするのか?

 
Alexey Viktorov:

不完全な質問で申し訳ありません、もっと明確に聞くべきでした。

目標は何ですか?マージンの計算が正しいか正しくないかを確認するため?

想像力があれば、いろいろな目標が思い浮かびます。:)そして、「正しい/正しくない」を確認するためではまったくありません。

そうでない場合は、説明文中の計算式から算出することができます。

どうやって?まあ、そのための「マージン率」なんですけどね。手書きで入力しろというのか)プログラム的に取得できるコードであること。

そして、それをどうするか?

さて、問題は「マージンの割合」の値をプログラムで取得することです。テーブルの中にあるのであれば、プログラムで取得できるはずです。そして、次にどうするかは、このテーマとは関係ない別の問題です。
 

SymbolInfoDoubleを 参照してください。

SymbolInfoDouble(symbol, SYMBOL_MARGIN_INITIAL);
SymbolInfoDouble(symbol, SYMBOL_MARGIN_MAINTENANCE);
 
Taras Slobodyanik:

SymbolInfoDoubleを参照してください。


残念ながら、そうではありません。MT4では、これらの値は、多くの場合、ゼロです。
 

いいんですか?

double procentMgn;
procentMgn=AccountBalance()*100/MarketInfo("GOLD",MODE_MARGINREQUIRED);
 
Renat Akhtyamov:

でいいのかな?

いいえ、そうではありません。

1.MarketInfo()関数は廃止されました。

MODE_MARGINREQUIREDは、ロングポジションの場合のみ正しい結果を返し、ショートポジションの場合は正しくありません。

3.MODE_MARGINREQUIREDは、私が必要としない、すでにデポ通貨にある結果を返します。

4.預け入れのパーセンテージは必要ない。シンボルの「マージン率」パラメータの値だけが必要です。そして、自分で必要なものを計算できる。

 
ir0407:

いいえ、そうではありません。

1.MarketInfo()関数は廃止されました。

2.MODE_MARGINREQUIREDはロングポジションの場合のみ正しい結果を返し、ショートポジションの場合は間違った結果を返します。

3.MODE_MARGINREQUIREDは、結果をデポ通貨で返すが、これは必要ない。

4.預かり金の何割かは要らない。シンボルの「マージンの割合」の値だけが必要です。しかも、自分で計算できるんです。

MT5で必要な場合は、他のフォーラムのセクションに移動してください。

あなたの常識に驚かない、いや、もっと悪い。

1.MarketInfo()関数ではなく、計算結果がパーセンテージになる式です。

2. 小数点以下が4桁にならないので、ロングとショートのマージン率が同じになる。

3.掛け合わせるだけ

procentMgn

0.01を使っていただいても結構です。

 
ir0407:

想像力があれば、いろいろなターゲットが思い浮かびます。:)そして、正誤判定には全く関係ない。

どのように機能するのですか?まさにこの「余白の割合」が必要なんですね。手書きで入力しろというのか)プログラム的に取得できるコードであること。

さて、問題は「マージンの割合」の値をプログラムで取得することです。テーブルの中にあるのであれば、プログラムで取得できるはずです。そして、次にどうするかは、このトピックとは関係のない別の問題です。

ええ、まあ...ファンタジーはすべてです...あなたを助けようとする人が、あなたがファンタジーしていることをファンタジーしなければならない理由がわかりません。とにかく、そういう問題じゃないんです。

その計算式から必要なものを取り出すにはどうしたらいいのでしょうか?

計算式自体は、Margin = Lots *ContractSize*MarketPrice*Percentage/100 です。

したがって、パーセンテージ= マージン/(ロット*契約サイズ*市場価格/100)

ir0407 です。

1.MarketInfo()関数は廃止されました。

まだ非推奨の関数の リストには入っていません。そのため、マージン率を決定するためのミッシングバリューを生成する。

MarketInfo(_Symbol, MODE_MARGINREQUIRED);

現在の時点、現在の価格でのすべてのデータを入手した上で、注文を開始した時点で保留していた証拠金を、注文の開始価格で再計算することは容易である。

mql5で必要なら

bool  SymbolInfoMarginRate( 
   string             name,                     // символ 
   ENUM_ORDER_TYPE    order_type,               // тип ордера 
   double&            initial_margin_rate,      // коэффициент взимания начальной маржи 
   double&            maintenance_margin_rate   // коэффициент взимания поддерживающей маржи 
   );
Устаревшие функции - Справочник MQL4
Устаревшие функции - Справочник MQL4
  • docs.mql4.com
Устаревшие функции - Справочник MQL4