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); } 这是对外汇的计算。其余的也差不多。 很好,剩下的就是带着存款货币 的保证金,因为保证金,例如,存款货币为美元的AUDCAD,需要用美元。 fxsaber 2017.02.27 16:31 #82 阿列克谢-沃尔昌斯基。 很好,我们所要做的就是把保证金带入存款货币,因为保证金,比如说,澳元兑美元的存款货币为美元,需要用美元。 它已经完成了。 Maxim Kuznetsov 2017.02.27 16:34 #83 阿列克谢-沃尔昌斯基。 很好,现在我们需要把保证金带入存款货币,因为保证金,例如澳元的存款货币为美元,应该是美元。 看起来函数中的SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)只是为了它......带来大量的入金货币 Vitaly Muzichenko 2017.02.27 16:45 #84 fxsaber: 这就是已经完成的工作。在外汇中一切运作正常,只是最后的问题仍然是:"为什么是一半,我如何解决?" fxsaber 2017.02.27 17:17 #85 维塔利-穆齐琴科。在外汇中一切运作正常,但有一个最后的问题:"为什么会减半,如何解决?" 我遇到过,在FIBOGroup-MT5服务器和MetaQuotes-Demo服务器上,SGDJPY的保证金是不同的。这表明MT5本身在计算保证金 时有误差。好吧,如果是这样的话,就没有比较的标准了。因此,我不能确定这是否是我的实现或开发者的错误。我认为这两种情况下都有错误。问题是缺乏正确的信息。 Vitaly Muzichenko 2017.02.27 17:18 #86 fxsaber: 我遇到的情况是,在FIBOGroup-MT5服务器和MetaQuotes-Demo服务器上,SGDJPY的保证金是不同的。这表明MT5本身在计算保证金 时有误差。好吧,如果是这样的话,就没有比较的标准了。因此,我不能确定这是否是我的实现或开发者的错误。我认为这两种情况下都有错误。问题是缺乏正确的信息。我有两个服务器显示正确,但有一个例外--以红色标出我怎样才能找到红色标示的财产?谢谢你! fxsaber 2017.02.27 17:40 #87 Vitaly Muzichenko: 我有两个服务器显示正确,但有一个例外--以红色标出我怎样才能找到红色标出的财产? 谢谢你的提示!在野外,它是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变体可能无法工作。当然,在外汇市场上,情况不会是这样的。但你必须记住。因此,一般来说,你应该这样写// Альтернатива 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 MT5在FIBOGroup-MT5服务器上的笑话 SGDJPY在这种情况下,MyOrderCalcMargin的计算是正确的,但普通的OrderCalcMargin却不正确!为什么? Alexey Volchanskiy 2017.02.27 18:03 #90 fxsaber:MT5对FIBOGroup-MT5服务器SGDJPY的恶作剧在这种情况下,MyOrderCalcMargin的计算是正确的,但普通的OrderCalcMargin却不正确!为什么? 有什么方法可以计算出套期保值的保证金吗? 12345678910111213141516...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 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);
}
很好,我们所要做的就是把保证金带入存款货币,因为保证金,比如说,澳元兑美元的存款货币为美元,需要用美元。
很好,现在我们需要把保证金带入存款货币,因为保证金,例如澳元的存款货币为美元,应该是美元。
这就是已经完成的工作。
在外汇中一切运作正常,只是最后的问题仍然是:"为什么是一半,我如何解决?"
在外汇中一切运作正常,但有一个最后的问题:"为什么会减半,如何解决?"
我遇到的情况是,在FIBOGroup-MT5服务器和MetaQuotes-Demo服务器上,SGDJPY的保证金是不同的。这表明MT5本身在计算保证金 时有误差。好吧,如果是这样的话,就没有比较的标准了。因此,我不能确定这是否是我的实现或开发者的错误。我认为这两种情况下都有错误。问题是缺乏正确的信息。
我有两个服务器显示正确,但有一个例外--以红色标出
我怎样才能找到红色标示的财产?
谢谢你!
我有两个服务器显示正确,但有一个例外--以红色标出
我怎样才能找到红色标出的财产?
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变体可能无法工作。当然,在外汇市场上,情况不会是这样的。但你必须记住。因此,一般来说,你应该这样写
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);
}
这就是所做的事情。
MT5在FIBOGroup-MT5服务器上的笑话 SGDJPY
在这种情况下,MyOrderCalcMargin的计算是正确的,但普通的OrderCalcMargin却不正确!为什么?
MT5对FIBOGroup-MT5服务器SGDJPY的恶作剧
在这种情况下,MyOrderCalcMargin的计算是正确的,但普通的OrderCalcMargin却不正确!为什么?