プログラムによる「マージン率」の取得方法 - ページ 7 1234567891011 新しいコメント Alexey Viktorov 2017.06.04 17:00 #61 K-2SO:テストによると、マージン率が1に等しい場合、レバレッジは考慮されないことがわかりましたしかし、100以上の場合は、すでに考慮されているのです。証拠金率が2~99包括のブローカーがあればいいのですが。何かが間違っている。1標準ロットの証拠金からこの割合を計算するときに、レバレッジがそこに考慮されます。このスクリプトをコンパイルし、未決済の注文がある場合、任意のペアで実行します。void OnStart() { double size = 0, percentage = 0, orderMargin = 0, accountMargin = 0; long leverage = 0; for(int i = 0; i < OrdersTotal(); i++) { int tupe = -1; if(OrderSelect(i, SELECT_BY_POS) && (tupe=OrderType()) < OP_BUYLIMIT) { string symbol = OrderSymbol(); string symbolCurencyMargin = SymbolInfoString(symbol, SYMBOL_CURRENCY_MARGIN); double orderOpenPrice = OrderOpenPrice(); double margin = MarketInfo(symbol, MODE_MARGINREQUIRED); double ask = MarketInfo(symbol, MODE_ASK); double bid = MarketInfo(symbol, MODE_BID); double price = symbolCurencyMargin == "USD" ? 1 : tupe == OP_BUY ? bid : ask; size = SymbolInfoDouble(symbol, SYMBOL_TRADE_CONTRACT_SIZE); leverage = AccountInfoInteger(ACCOUNT_LEVERAGE); percentage = NormalizeDouble(margin/(size*price/100)*leverage, 0); orderMargin = (size*orderOpenPrice*percentage/100)/leverage; accountMargin += orderMargin; Print(symbolCurencyMargin, " ******** Маржа ", symbol, " = ", orderMargin); } } Print(AccountInfoString(ACCOUNT_CURRENCY), " ******** AccountMargin = ", DoubleToString(accountMargin, 2)); }/********************************************************************/ 注文は2つしか開いていませんが、正しく表示されています。 K-2SO 2017.06.04 21:21 #62 Alexey Viktorov:何かが間違っている。レバレッジは、1標準ロットの証拠金からその割合をカウントすると、そこにレバレッジが加味されます。このスクリプトをコンパイルし、未決済の注文がある場合、任意のペアで実行します。 注文は2つしか開いていませんが、正しく表示されています。してきました。現在、デモモードでは市場は閉鎖されて おり、金地金の注文のみが可能です。インスタで私の言葉を確認すると(マージン率:1)、あなたのスクリプトでは何らかのスペースが表示されていますね...。 メタクォートとロボットのやつでマージンの割合を100と200で正しく計算しないといけないのですが、どうすればいいのでしょうか? K-2SO 2017.06.04 21:25 #63 Renat Akhtyamov: 5ポンド、レバレッジ100でデモ口座を開設し、マージン率を確認します。例えば、金やもっと面白いことにルーブルでも同じです... マージン率の計算はまだマスターしておらず、計算のロジックは理解できているようですが、コードはまだ書いていません。自分の言っていることを確認しよう ) Alexey Viktorov 2017.06.05 07:51 #64 K-2SO:完了しました。現在、私のデモでは、マーケットが閉じて いる間、ゴールドの注文だけが開かれています。インスタで私の言葉を確認すると(マージン率:1)、あなたのスクリプトでは何らかのスペースが表示されていますね...。SYMBOL_CURRENCY_MARGINも 同様です。 MetaQuotesとRoboQuotesはマージン率が100と200の場合、すべて正しく表示されます。何を間違えて表示しているのかがわからない。原油の注文を2つ追加しました。マージン率=1、契約サイズは1000のみで、通貨のように10万ではありません。このように印刷されています。2017.06.05 08:40:04.978 test EURUSD.e,H1: USD ******** AccountMargin = 2207.23 2017.06.05 08:40:03.360 test EURUSD.e,H1: US_ ******** Маржа BRENT = 508.0 2017.06.05 08:39:34.326 test EURUSD.e,H1: US_ ******** Маржа WTI = 484.9 2017.06.05 08:39:25.185 test EURUSD.e,H1: XAU ******** Маржа XAUUSD.e = 840.4333333333334 2017.06.05 08:39:19.651 test EURUSD.e,H1: EUR ******** Маржа EURUSD.e = 373.8933333333333 以下はスクリーンショットです。なぜか正確な1円玉が表示される。だから、言葉とは別に、絵を入れて...。 K-2SO 2017.06.05 11:17 #65 Alexey Viktorov:だから、言葉だけでなく、写真も載せて...。 こんなところ(ロット0.05、レバレッジ300)。2017.06.05 12:06:11.968 Script gold_test_vik XAUUSD,H1: removed 2017.06.05 12:06:11.953 gold_test_vik XAUUSD,H1: uninit reason 0 2017.06.05 12:06:11.953 gold_test_vik XAUUSD,H1: USD ******** AccountMargin = 8193395.74 2017.06.05 12:06:11.953 gold_test_vik XAUUSD,H1: USD ******** Маржа XAUUSD = 8193395.736 2017.06.05 12:06:11.953 gold_test_vik XAUUSD,H1: initialized 2017.06.05 12:06:11.937 Script gold_test_vik XAUUSD,H1: loaded successfully Alexey Viktorov 2017.06.05 11:37 #66 K-2SO: こんなところ(ロット0.05、レバレッジ300)。なるほど。証拠金の通貨に 注意する。私のはXAU、あなたのはUSDで、この行をどうにかしてください。double price = symbolCurencyMargin == "USD" ? 1 : tupe == OP_BUY ? bid : ask;ので、見積もりは計算に含まれます。シンボルにパスを追加するとか。また、ダブルチェックのため、この行を次のように変更します。double price = tupe == OP_BUY ? bid : ask;しかし、この場合、通貨については正しく動作しません。一般的には、シンボルへのパスのすべてのバリエーションと、マージン通貨のすべてのバリエーションを、普遍性のために考慮する必要があります。 K-2SO 2017.06.05 11:54 #67 Alexey Viktorov:なるほど。証拠金の通貨に 注意する。私のはXAU、あなたのはUSDで、この行をどうにかしてください。ので、見積もりは計算に含まれます。シンボルにパスをつけるといいかもしれませんね。もう一度確認するには、この行を次のように変更します。すべて同じ、正しくない、順番も同じ、結果も同じ。2017.06.05 12:47:50.984 gold_test_vik XAUUSD,H1: USD ******** AccountMargin = 6392.70 2017.06.05 12:47:50.984 gold_test_vik XAUUSD,H1: USD ******** Маржа XAUUSD = 6392.7 アレクセイ・ヴィクトロフ一般に、シンボルと証拠金通貨へのパスのすべてのバリエーションは、普遍性のために考慮されるべきです。証拠金通貨は明確ですが、シンボルへのパスバリエーションはどのようなものなのでしょうか?p.s. レバレッジのない計算式は、すべてを正確にカウントしています。margin=(OrderLots()*contract*OrderOpenPrice())/100*Percentage; // инста - процент маржи 1% Alexey Viktorov 2017.06.05 13:26 #68 K-2SO:まだ間違っている、同じ順序、同じ結果。証拠金通貨は明確だが、どの経路で計測するのか?p.s. レバレッジなしの計算式によると、すべてが正確に計算されます。ああ、ちょっと失敗した...。敷地面積は全く考慮されていません。私の注文は1標準ロットなので、正しく表示されていますが...。この行を追加する必要があります。orderMargin = (OrderLots()* size*orderOpenPrice*percentage/100)/leverage;シンボルまでのパスは以下のように定義されています。SymbolInfoString(symbol, SYMBOL_PATH);が、残念ながら曖昧な命名ではないので、条件を設定するのはそう簡単ではありません。Roboさん、ecnのデモにはそのようなパスがあります。 と1セントで。 その他は、似ていても一概には言えません。もちろん、部分文字列で比較することもできますが、普遍性を確認するためには、多くの証券会社をチェックする必要があります。とはいえ...担保の計算方法を確認してみてはいかがでしょうか。 これから確認します。 K-2SO 2017.06.05 13:57 #69 Alexey Viktorov:ああ、ちょっと失敗した...。敷地面積は全く考慮されていません。注文が1標準ロットずつなので、うまくいっているのですが・・・。この一行を付け加えなければならない。したのですが、結果はやはり間違っていました)アレクセイ・ヴィクトロフシンボルまでのパスは以下のように定義されています。 つまり、このパスをどのように、どこで、なぜ使う必要があるのか? Alexey Viktorov 2017.06.05 19:01 #70 なんて面倒なんだ...。自分にとってどのようにカウントされるかを確認する。void OnStart() { double contractSize = 0, orderMargin = 0, accountMargin = 0; double percentage = 0; long leverage = 0; for(int i = 0; i < OrdersTotal(); i++) { int type = -1; if(OrderSelect(i, SELECT_BY_POS)) { type = OrderType(); string symbol = OrderSymbol(); string symbolCurencyMargin = SymbolInfoString(symbol, SYMBOL_CURRENCY_MARGIN); double orderLots = OrderLots(); leverage = AccountInfoInteger(ACCOUNT_LEVERAGE); double margin = MarketInfo(symbol, MODE_MARGINREQUIRED); double ask = MarketInfo(symbol, MODE_ASK); double bid = MarketInfo(symbol, MODE_BID); int calcMode = int(SymbolInfoInteger(symbol, SYMBOL_TRADE_CALC_MODE)); int stringFind = StringFind(symbol, "USD"); double price = stringFind == 0 ? 1 : type%2 == OP_BUY ? bid : ask; double orderOpenPrice = stringFind == 0 ? 1 : OrderOpenPrice(); contractSize = SymbolInfoDouble(symbol, SYMBOL_TRADE_CONTRACT_SIZE); percentage = NormalizeDouble(margin/(contractSize*price/100)*(calcMode == 0 ? leverage : 1), 0); orderMargin = (orderLots*contractSize*orderOpenPrice*percentage/100)/(calcMode == 0 ? leverage : 1); Print("******** Процент маржи ", int(percentage), " Маржа ордера ", symbol, " ", orderLots, " = ", orderMargin); if(type < OP_BUYLIMIT) accountMargin += orderMargin; } } Print("******** AccountMargin = ", DoubleToString(accountMargin, 2)," ", AccountInfoString(ACCOUNT_CURRENCY)); }/********************************************************************/ これは、保留中の注文も カウントするようにしたのですが、マージンの合計が含まれていません。 1234567891011 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
テストによると、マージン率が1に等しい場合、レバレッジは考慮されないことがわかりましたしかし、100以上の場合は、すでに考慮されているのです。証拠金率が2~99包括のブローカーがあればいいのですが。
何かが間違っている。1標準ロットの証拠金からこの割合を計算するときに、レバレッジがそこに考慮されます。
このスクリプトをコンパイルし、未決済の注文がある場合、任意のペアで実行します。
注文は2つしか開いていませんが、正しく表示されています。何かが間違っている。レバレッジは、1標準ロットの証拠金からその割合をカウントすると、そこにレバレッジが加味されます。
このスクリプトをコンパイルし、未決済の注文がある場合、任意のペアで実行します。
注文は2つしか開いていませんが、正しく表示されています。してきました。現在、デモモードでは市場は閉鎖されて おり、金地金の注文のみが可能です。インスタで私の言葉を確認すると(マージン率:1)、あなたのスクリプトでは何らかのスペースが表示されていますね...。
メタクォートとロボットのやつでマージンの割合を100と200で正しく計算しないといけないのですが、どうすればいいのでしょうか?
5ポンド、レバレッジ100でデモ口座を開設し、マージン率を確認します。例えば、金やもっと面白いことにルーブルでも同じです...
完了しました。現在、私のデモでは、マーケットが閉じて いる間、ゴールドの注文だけが開かれています。インスタで私の言葉を確認すると(マージン率:1)、あなたのスクリプトでは何らかのスペースが表示されていますね...。SYMBOL_CURRENCY_MARGINも 同様です。
MetaQuotesとRoboQuotesはマージン率が100と200の場合、すべて正しく表示されます。
何を間違えて表示しているのかがわからない。原油の注文を2つ追加しました。マージン率=1、契約サイズは1000のみで、通貨のように10万ではありません。
このように印刷されています。
以下はスクリーンショットです。
なぜか正確な1円玉が表示される。
だから、言葉とは別に、絵を入れて...。
だから、言葉だけでなく、写真も載せて...。
こんなところ(ロット0.05、レバレッジ300)。
こんなところ(ロット0.05、レバレッジ300)。
なるほど。証拠金の通貨に 注意する。私のはXAU、あなたのはUSDで、この行をどうにかしてください。
ので、見積もりは計算に含まれます。シンボルにパスを追加するとか。
また、ダブルチェックのため、この行を次のように変更します。
しかし、この場合、通貨については正しく動作しません。
一般的には、シンボルへのパスのすべてのバリエーションと、マージン通貨のすべてのバリエーションを、普遍性のために考慮する必要があります。
なるほど。証拠金の通貨に 注意する。私のはXAU、あなたのはUSDで、この行をどうにかしてください。
ので、見積もりは計算に含まれます。シンボルにパスをつけるといいかもしれませんね。
もう一度確認するには、この行を次のように変更します。
すべて同じ、正しくない、順番も同じ、結果も同じ。
一般に、シンボルと証拠金通貨へのパスのすべてのバリエーションは、普遍性のために考慮されるべきです。
証拠金通貨は明確ですが、シンボルへのパスバリエーションはどのようなものなのでしょうか?
p.s. レバレッジのない計算式は、すべてを正確にカウントしています。
まだ間違っている、同じ順序、同じ結果。
証拠金通貨は明確だが、どの経路で計測するのか?
p.s. レバレッジなしの計算式によると、すべてが正確に計算されます。
ああ、ちょっと失敗した...。敷地面積は全く考慮されていません。私の注文は1標準ロットなので、正しく表示されていますが...。この行を追加する必要があります。
シンボルまでのパスは以下のように定義されています。
が、残念ながら曖昧な命名ではないので、条件を設定するのはそう簡単ではありません。
Roboさん、ecnのデモにはそのようなパスがあります。
と1セントで。
その他は、似ていても一概には言えません。もちろん、部分文字列で比較することもできますが、普遍性を確認するためには、多くの証券会社をチェックする必要があります。
とはいえ...担保の計算方法を確認してみてはいかがでしょうか。
これから確認します。
ああ、ちょっと失敗した...。敷地面積は全く考慮されていません。注文が1標準ロットずつなので、うまくいっているのですが・・・。この一行を付け加えなければならない。
したのですが、結果はやはり間違っていました)
シンボルまでのパスは以下のように定義されています。
なんて面倒なんだ...。自分にとってどのようにカウントされるかを確認する。
これは、保留中の注文も カウントするようにしたのですが、マージンの合計が含まれていません。