mql5言語の特徴、微妙なニュアンスとテクニック - ページ 9 12345678910111213141516...247 新しいコメント Alexey Volchanskiy 2017.02.27 16:20 #81 fxsaber 解決策はすぐに見つかった。// Размер свободных средств, необходимых для открытия 1 лота на покупкуdouble GetMarginRequired( const string Symb ){ MqlTick Tick; return(SymbolInfoTick(Symb, Tick) ? Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) * SymbolInfoDouble(Symb, SYMBOL_TRADE_CONTRACT_SIZE) * SymbolInfoDouble(Symb, SYMBOL_POINT) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0); } これはFOREXの計算です。あとは似たようなものです。 素晴らしい、あとは証拠金を入金通貨で持って くるだけです。例えば、入金通貨がUSDのAUDCADの場合、証拠金はUSDである必要があるからです。 fxsaber 2017.02.27 16:31 #82 アレクセイ・ヴォルチャンスキー 素晴らしい!あとは証拠金を預け入れ通貨で持って くるだけです。例えば、預け入れ通貨がUSDのAUDCADの証拠金はUSDである必要がありますから。 されています。 Maxim Kuznetsov 2017.02.27 16:34 #83 アレクセイ・ヴォルチャンスキー 証拠金は、たとえばAUDCADの場合、預け入れ通貨がUSDでなければなりませんから、預け入れ通貨で 証拠金を持参する必要があります。 関数内のSymbolInfoDouble(Symbol,SYMBOL_TRADE_TICK_VALUE) がそれのためにあるように見える... 通貨を預けるためにたくさん持ってくるために。 Vitaly Muzichenko 2017.02.27 16:45 #84 fxsaber ということが行われてきました。FXではすべてうまくいっているのですが、最後の疑問が残ります。"なぜ半分なのか、どうすれば解決できるのか "ということです。 fxsaber 2017.02.27 17:17 #85 ヴィタリー・ムジチェンコFXではすべてうまくいっているのですが、最後の疑問があります。"なぜ半減しているのか、どうすれば直るのか "ということです。 FIBOGroup-MT5サーバーとMetaQuotes-Demoサーバーで、SGDJPYの証拠金が何倍も違うことがあります。これは、MT5自体が誤差を含んだマージンを計算して いることを示唆しています。そして、そうである以上、比較するための参考資料がない。したがって、これが私の実装のミスなのか、開発者のミスなのか、はっきりしたことは言えません。どちらにも間違いがあると思います。問題は、正しい情報がないことです。 Vitaly Muzichenko 2017.02.27 17:18 #86 fxsaber SGDJPYでFIBOGroup-MT5サーバーとMetaQuotes-Demoサーバーで証拠金が何倍も違うという現象が発生したことがあります。これは、MT5自体が誤差を含んだマージンを計算して いることを示唆しています。まあ、そうなると、比較する基準がないんですけどね。したがって、これが私の実装のミスなのか、開発者のミスなのか、はっきりしたことは言えません。どちらにも間違いがあると思います。問題は、正しい情報がないことです。2つのサーバーが正しく表示されていますが、1つの例外があります(赤でハイライトされています)。赤色で表示されている物件はどうすれば確認できますか?ありがとうございました。 fxsaber 2017.02.27 17:40 #87 Vitaly Muzichenko: 2つのサーバーが正しく表示されていますが、1つの例外があります(赤でハイライトされています)。赤色で表示されているプロパティを確認するにはどうしたらよいですか? ご指摘ありがとうございます。荒野では、SymbolInfoMarginRate です。だから、今はこんな感じです。// Размер свободных средств, необходимых для открытия 1 лота на покупкуdouble GetMarginRequired( const string Symb ){ MqlTick Tick; double MarginInit, MarginMain; return((SymbolInfoTick(Symb, Tick) && SymbolInfoMarginRate(Symb, ORDER_TYPE_BUY, MarginInit, MarginMain)) ? MarginInit * Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);} MT5では、方向によって必要な証拠金が大きく異なる可能性があることを明確に理解する必要があります。すなわち、単一のMT4バリアントが機能しない場合があります。もちろん、FXの場合はそうではないでしょう。でも、忘れてはいけないことがあります。したがって、一般的には次のように書けばよいでしょう。// Альтернатива OrderCalcMarginbool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin ){ double MarginInit, MarginMain; const bool Res = SymbolInfoMarginRate(symbol, action, MarginInit, MarginMain); margin = Res ? MarginInit * price * volume * SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0; return(Res); } エラー、バグ、質問 how to convert MarketInfo(Symbol(), Features of the mql5 Alexey Volchanskiy 2017.02.27 17:46 #88 fxsaber それが実現したのです。 そうです、その通りです。 fxsaber 2017.02.27 17:53 #89 FIBOGroup-MT5サーバーSGDJPYでのMT5ジョーク。この場合、MyOrderCalcMarginは正しくカウントされますが、通常のOrderCalcMarginはカウントされません! Alexey Volchanskiy 2017.02.27 18:03 #90 fxsaberFIBOGroup-MT5サーバーSGDJPYにMT5のいたずらこの場合、MyOrderCalcMarginは正しくカウントされますが、通常のOrderCalcMarginはカウントされません! ヘッジマージンを計算する方法はありますか? 12345678910111213141516...247 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
解決策はすぐに見つかった。
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
return(SymbolInfoTick(Symb, Tick) ? Tick.ask * SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) * SymbolInfoDouble(Symb, SYMBOL_TRADE_CONTRACT_SIZE) *
SymbolInfoDouble(Symb, SYMBOL_POINT) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
素晴らしい!あとは証拠金を預け入れ通貨で持って くるだけです。例えば、預け入れ通貨がUSDのAUDCADの証拠金はUSDである必要がありますから。
証拠金は、たとえばAUDCADの場合、預け入れ通貨がUSDでなければなりませんから、預け入れ通貨で 証拠金を持参する必要があります。
ということが行われてきました。
FXではすべてうまくいっているのですが、最後の疑問が残ります。"なぜ半分なのか、どうすれば解決できるのか "ということです。
FXではすべてうまくいっているのですが、最後の疑問があります。"なぜ半減しているのか、どうすれば直るのか "ということです。
SGDJPYでFIBOGroup-MT5サーバーとMetaQuotes-Demoサーバーで証拠金が何倍も違うという現象が発生したことがあります。これは、MT5自体が誤差を含んだマージンを計算して いることを示唆しています。まあ、そうなると、比較する基準がないんですけどね。したがって、これが私の実装のミスなのか、開発者のミスなのか、はっきりしたことは言えません。どちらにも間違いがあると思います。問題は、正しい情報がないことです。
2つのサーバーが正しく表示されていますが、1つの例外があります(赤でハイライトされています)。
赤色で表示されている物件はどうすれば確認できますか?
ありがとうございました。
2つのサーバーが正しく表示されていますが、1つの例外があります(赤でハイライトされています)。
赤色で表示されているプロパティを確認するにはどうしたらよいですか?
double GetMarginRequired( const string Symb )
{
MqlTick Tick;
double MarginInit, MarginMain;
return((SymbolInfoTick(Symb, Tick) && SymbolInfoMarginRate(Symb, ORDER_TYPE_BUY, MarginInit, MarginMain)) ? MarginInit * Tick.ask *
SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
MT5では、方向によって必要な証拠金が大きく異なる可能性があることを明確に理解する必要があります。すなわち、単一のMT4バリアントが機能しない場合があります。もちろん、FXの場合はそうではないでしょう。でも、忘れてはいけないことがあります。したがって、一般的には次のように書けばよいでしょう。
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
double MarginInit, MarginMain;
const bool Res = SymbolInfoMarginRate(symbol, action, MarginInit, MarginMain);
margin = Res ? MarginInit * price * volume * SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) /
(SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0;
return(Res);
}
それが実現したのです。
FIBOGroup-MT5サーバーSGDJPYでのMT5ジョーク。
この場合、MyOrderCalcMarginは正しくカウントされますが、通常のOrderCalcMarginはカウントされません!
FIBOGroup-MT5サーバーSGDJPYにMT5のいたずら
この場合、MyOrderCalcMarginは正しくカウントされますが、通常のOrderCalcMarginはカウントされません!