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

 
Alexey Viktorov:

なんて面倒なんだ...。数え方を確認する。

GOLD at metaquotes (証拠金率 - 1, レバレッジ - 300), CFD

2017.06.05 21:57:42.015 Script gold_test_vik2 GOLD,H4: removed
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: uninit reason 0
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** AccountMargin = 19188.75 USD
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: ******** Процент маржи 300 Маржа ордера GOLD 0.05 = 19188.75
2017.06.05 21:57:42.000 gold_test_vik2 GOLD,H4: initialized

クロスやロックポジションの計算も間違っていますが、個人的には気になりませんし、あなたのスクリプトがそれを処理できていないだけだと思います。これまでの苦労が、いずれにしても少なくとも1つのCFD注文の証拠金率や担保の計算に関わるものであれば、労力に見合うとは思えませんね。

p.s. 開発者がマージン率に直接アクセスできなかったのは偶然ではないとも思い始めています :D.

 

MetaQuote-Demoでレバレッジ300でデモを開設する方法について、体験談を聞かせてください。私は最大100...


MetaQuote-DemoでGOLD

2017.06.06 09:07:32.780 Data Folder: D:\MetaTrader 4\Programming
2017.06.06 09:07:32.780 Windows 7 Home Premium (x64 based PC), IE 11.00, UAC, 4 x AMD FX-4170 Quad-Core Processor , RAM: 10402 / 12255 Mb, HDD: 31535 / 244198 Mb, GMT+03:00
2017.06.06 09:07:32.780 MetaTrader 4 build 1090 started (MetaQuotes Software Corp.)

プリントアウト

2017.06.06 09:09:25.812 test GOLD,H1: ******** AccountMargin = 160.95 USD
2017.06.06 09:09:25.812 test GOLD,H1: ******** Процент маржи 1 Маржа ордера GOLD 0.05 = 160.9525

スクリーンショット



 
Alexey Viktorov:

MetaQuote-Demoでレバレッジ300でデモを開設する方法について、体験談を聞かせてください。私は最大100...


然うはこのテストでは、端末が混乱してしまいました。こちらはインスタ、それ以外は正解、GOLD、証拠金率-1、レバレッジ300、上記のスクリーンショット...でした。

申し訳ございません

 
ir0407:
マージン率は計算上の預金ではありません。あくまでマージンを計算するための要素の一つです。この計算結果は(表の計算式に従って)証拠金通貨 で返され、(それが預金通貨と異なる場合)預金通貨に変換されなければなりません。

それが、私にもよくわからないんです。例えば、ある数式を取り上げます。

Lots*Contract_Size/Leverage

ここで、ロット - これは、商品と契約の基本通貨でロットです - も基本通貨で、その後、必要に応じて、為替レートによって引用された通貨に基本通貨を乗算します。そして、その結果が証拠金通貨で得られるのです。どうしてですか?

 
K-2SO:

それが、私にもよくわからないんです。例えば、ある数式を取り上げます。

ここで、ロット - これは、商品と契約の基本通貨でロットです - も基本通貨で、その後、必要に応じて、為替レートによって引用された通貨に基本通貨を乗算します。そして、その結果が証拠金通貨で得られるのです。どうして?

この式

Lots*Contract_Size/Leverage

はUSD***通貨の証拠金計算に有効です。


まず、どの価格を預金の通貨に 換算する必要があるかを決定します。

商品名が預入通貨で始まる場合(この場合はUSD)、価格は考慮されない

注文がOP_BUYの場合、Bid価格が必要です。

注文がOP_SELLの場合、Ask

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;
percentage = NormalizeDouble(
                             margin          // Маржа получена в валюте депозита с учётом плеча
                           /(contractSize    // Размер контракта в базовой валюте
                            *price           // Умножаем на текущую цену и получаем в валюте депозита
                            /100)            // Это для того чтобы коэффициент перевести в проценты
                           *(calcMode == 0 ? leverage : 1) // Это получено методом научно-технического тыка.
                                    // Если способ расчёта 0 - Forex; то надо учесть плечо
                                    //                     1 - CFD; то плечо не учитывается
                                    //                     2 - Futures; 3 - CFD на индексы НЕ проверялись, их у меня нету...
                           , 0);
orderMargin = (orderLots         // правильно, в базовой валюте
              *contractSize      // и это тоже в базовой
              *orderOpenPrice    // а вот тут переводим в валюту депозита
              *percentage/100)   // у меня слов не хватает чтобы объяснить что это такое, но видимо очень нужное.
             /(calcMode == 0 ? leverage : 1);  // Это тоже получено методом научно-технического тыка.

分かりやすく説明できたでしょうか...。

 
Alexey Viktorov:

ご理解いただけたでしょうか...?

あの・・・また違う話をしてるような気がするんですが。ただ、証拠金計算の方法(計算方法ではない)ではなく、証拠金計算式の出力で、実質的に証拠金通貨を 扱わないところで、どうして証拠金通貨できっちり結果が出るのか、それを明らかにしてみようと思っただけなのです。ということで まだ見積もり会計が存在しない、最も単純な計算式を示しましたが・・・。

それ以外(直感法)については、私もすべて試しましたが、まだ一つの解が見つかっていないことを指摘しました。私はブローカーを混合したが、結果-いいえ、すなわちインスタで上記のパラメータとあなたの最後のオプションは、まだ同様に宇宙の数字を生成します: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.s. でも、コメントありがとうございました!とにかく考え方、計算の仕方がよくわかりました(笑)

 
K-2SO:

えーと、また違う話をしてるような気がするんですが。証拠金計算の方法(計算方法ではない)ではなく、証拠金計算式の出力で、実質的に証拠金通貨で 作業していないところで、証拠金通貨で結果が出るのはどうしてなのか、明らかにしてみようと思っただけです。ということで まだ見積もり会計が存在しない、最も単純な計算式を示しましたが・・・。

それ以外(直感法)については、私もすべて試しましたが、まだ一つの解が見つかっていないことを指摘しました。私はブローカーを混合したが、結果-いいえ、すなわちインスタで上記のパラメータとあなたの最後のオプションは、まだ同様に宇宙の数字を生成します: https://www.mql5.com/ru/forum/193833/page8#comment_5243991

p.s. でも、コメントありがとうございました!とにかく、考え方、計算の仕方がよくわかりました(笑)

インスタでデモを開く気にもならない。それが困難でなければ、デバッガで、どのような中間値が得られるかを示すことができます。スクリーンショットのように


 
Alexey Viktorov:

インスタでデモを開く気にもならない。もし差し支えなければ、デバッガで、どのような中間値が得られるかを表示することができます。スクリーンショットのように



またしても、私の運が悪いのか!?どうやらあなたのコードを解析する際に、私がその中の何かを変更したに違いなく(それを返すのを忘れていた)、そのためにこのようなエラーを吐いたのです。今(念のため)オリジナルを再コピー - 正しく、インスタのカウントで。その時は他のブローカーでテストしてみます。
 

ほぼ正解!脱帽です。以前レビューした証拠金率の異なる3つのブローカーでは、ゴールドの計算(一方向の注文の場合)は正しいです。

しかし、このスクリプトはエキゾチックでまだ失敗しています。fxcmブローカーで止まっています。金の証拠金率は70000、従来の通貨ペアの証拠金率は130、証拠金通貨はUSDのようです。また、どこにも正しさの痕跡を見ることはできませんでした(.私自身、2日前からその鍵を探していたのですが、実は今、その結果として、ベース通貨と そのレートを相場通貨で計算した結果、どうして証拠金通貨ができるのか...という疑問に対する答えを探しているところなんです。そのせいなのか、このブローカーは通常の通貨ペアでも証拠金の割合を考慮してくれるんです。

ここでは、ターミナル ru.files.fm/u/xfezz883#_ をダウンロードし、解凍して、exeファイルを使って実行し、デモを作成することができます...

 
K-2SO:

ほぼ正解!脱帽です。以前レビューした証拠金率の異なる3つのブローカーでは、ゴールドの計算(一方向の注文の場合)は正しいです。

しかし、このスクリプトはエキゾチックでまだ失敗しています。fxcmブローカーで止まっています。金の証拠金率は70000、従来の通貨ペアの証拠金率は130、証拠金通貨はUSDのようです。また、どこにも正しさの痕跡を見ることはできませんでした(.私自身、2日前からその鍵を探していたのですが、実は今、その結果として、ベース通貨と そのレートを相場通貨で計算した結果、どうして証拠金通貨ができるのか...という疑問に対する答えを探しているところなんです。そのせいなのか、このブローカーは通常の通貨ペアでも証拠金の割合を考慮してくれるんです。

ターミナルはここからダウンロードできます ru.files.fm/u/xfezz883#_ 、解凍してexeファイルを使って実行、デモを開始...

クロスの計算も問題ありません。証拠金通貨から預金通貨に変換される、見積もりを取るだけでいいのです。

例:EURJPYの価格

double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask;

入金額が米ドル建ての場合、EURUSDをご利用ください。CADJPYを計算する場合、USDCADを使用する必要があります。ここでは、証拠金通貨に入金通貨を追加する方法を確認する必要があります。

カウンターの方は、MarketInfo(symbol, MODE_MARGINHEDGED)があるので、それほど難しくはない。唯一の問題は、まず対抗通貨を見つけ、その一部を対抗通貨で分解し、残りを-完全な形で-分解することです...

一般に、この記事のメリットは、トレーダーが保留注文を有効にしたときにどの程度のマージンが取られるかを事前に把握し、間に合わなければ保留注文を削除してエラーを回避できることぐらいだと見ています。以前、EAをマーケットに投入する際に悩んだことがあります。