你是如何计算保证金的? - 页 4

 
Janis Ozols:

如果一个工具的杠杆率由于总手数的增加或其他原因而发生变化,那么合乎逻辑的是,这些查询应该返回增加的保证金数额,不是吗?

不,这些功能使用账户杠杆。

 
Andrey Khatimlianskii:

是的,它是。

只是,最有可能的是,杠杆的变化不是针对单个交易,而是针对整个工具,但它并没有改变本质。

我将在我的线人中加入关于此案的警报...

睿智,是睿智。

 
Andrey Khatimlianskii:

不,这些功能使用账户的杠杆。

请告诉我,如果某个工具的杠杆率与账户目前的杠杆率不一致,可以用哪个函数来计算该工具的当前保证金?

 
Janis Ozols:

请告诉我,如果某个工具目前的杠杆率与账户的杠杆率不同,可以用哪个函数来获取该工具的当前保证金?

这将是一个漫长的过程
 
Janis Ozols:

请告诉我,如果某个工具目前的杠杆率与账户的杠杆率不同,可以用哪个函数来获取该工具的实际保证金?

也许SymbolInfoDouble(Symbol, SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?

SymbolInfoDouble - Market Info - MQL4 Reference
SymbolInfoDouble - Market Info - MQL4 Reference
  • docs.mql4.com
2. Returns true or false depending on whether a function is successfully performed. In case of success, the value of the property is placed into a recipient variable, passed by reference by the last parameter. It is recommended to use SymbolInfoTick() if the function is used for getting information about the last tick. It may well be that not a...
 
Stanislav Korotky:

也许SymbolInfoDouble(Symbol, SYMBOL_MARGIN_INITIAL/SYMBOL_MARGIN_MAINTENANCE)?

不幸的是,在处理外汇市场工具时,带有任何这些常数的SymbolInfoDouble函数都会返回零。

 

所以,现在我们可以回答这个主题的问题了

直接报价的保证金计算公式

M=CC/CP

  • 其中M--保证金。
  • CC - 交易的金额。
  • MP - 杠杆。

例如,在货币对美元/加元上进行1个标准手(100 000单位)的交易,杠杆率为1:200,你需要赚取保证金

  • M=CC/CP
  • М=100 000/200
  • М=500

也就是说,保证金的数额将是500美元。 而在1:500的杠杆下,保证金将只有100,000/500=200美元。但在1:500的杠杆下,你将能够买入10手100万美元,并以100 000/500=2 000美元的保证金进行交易。

反向报价的保证金计算

M=MSC/KP x KP

  • 其中M--保证金。
  • CC - 交易的金额。
  • CC - 杠杆。
  • VC -货币利率

让我们以GBR/USD为例。

  • M = MOP / KP x TOR
  • M = 100,000/200 x 1, 5074
  • М= 753,7 $

你没有得到整数,但一个点的价值将永远是整数。而对于直接报价,在计算点子时有一些不便。

计算交叉费率的保证金

M = CC/KP x EF

  • M - 边缘。
  • CC - 交易的总和。
  • CC - 杠杆。
  • EF -(基础)货币 对美元的汇率

例如:


//+-------------- РАСЧЕТ МАРЖИ ---------------------+
double calcMGN(string SYMB, double VOL)
{
   double Res=0,Price=0;
   if(LEVERAGE!=0)
   {
      if(StringSubstr(SYMB,0,3)!="USD")
      {
         SYMB=StringSubstr(SYMB,0,3)+"USD";
         Price=iClose(SYMB,Period(),0);
         Res=VOL*Price/LEVERAGE;
      }
      else Res=VOL/LEVERAGE;
   }
   return(Res);
}


 
Janis Ozols:

请告诉我,如果某个工具目前的杠杆率与账户的杠杆率不同,可以用哪个函数来获取该工具的当前保证金?

你可以找到这些公式。但为什么呢?

取出该工具所有头寸的实际保证金,并计算出实际杠杆率是多少。

 
Andrey Khatimlianskii:

可以找到公式。但为什么呢?

拿出该工具所有头寸的实际保证金,并计算出实际杠杆率是多少。

这是不可能的。

杠杆是浮动的。

我也有过他描述的情况。

这真的是很不幸的,风险相当高。

 
Renat Akhtyamov:

所以,现在我们可以回答该分支的问题了

对不起,我在主题的标题中没有正确表述我的问题。事实上,我感兴趣的不是如何计算 保证金,而是如何从终端获得 它的实际(而不是计算)值。而且不是针对整个账户,而是单独针对单个头寸。这就是我们在第一篇文章中所谈论的内容。我已经明白,这不能通过MQL4来完成,这样的功能根本不存在。然而,@Andrey Khatimlianskii 前段时间提出,杠杆可能不是针对单个头寸,而是针对整个工具而变化。现在对我来说,重要的是找出如何获得这个杠杆的价值,以防它与账户的杠杆不同。


Renat Akhtyamov:

直接报价的保证金计算公式

M=CC/CP

  • 其中M--保证金。
  • CC - 交易的总和。
  • KP - 杠杆。

这个公式和所有后续公式的问题是,它们包含KP(杠杆)。不幸的是,我还没有想出如何为一个单一的乐器获得这个值。函数AccountMargin()和AccountInfoInteger(ACCOUNT_LEVERAGE)返回账户杠杆,而不是符号杠杆,函数MarketInfo(_Symbol,MODE_MARGINREQUIRED)返回与账户杠杆对应的保证金值,即使这个符号的头寸实际上是以绝对不同的杠杆开立的。带有常数SYMBOL_MARGIN_INITIAL或SYMBOL_MARGIN_MAINTENANCE 的SymbolInfoDouble函数在处理FOREX符号时总是返回0。

因此,我不明白,如果一个经纪人的杠杆,与一般账户的KP不同,是为特定的工具设置的,那么这个公式和所有其他公式如何使用。


Andrey Khatimlianskii:

可以找到这些公式。但为什么呢?

我不是要找公式(它们已经被提出得够多了),而是要准确地找到MQL4的功能。为了得到实际值,而不是计算值。谢谢Andrey,我已经明白了,不可能为一个单独的位置单独做这个。现在我想知道如何获得整个工具的杠杆率,如果它与账户的杠杆率不同。


Andrey Khatimlianskii:

取出该工具所有头寸的实际保证金,并计算出实际的杠杆率。

这正是我现在所做的。专家顾问将保证金的实际值与计算值进行比较,如果出现明显的超额,则停止交易并向交易者发出通知。到目前为止,我还没有收到任何此类通知(哎哟*3)。

但如果有其他工具的头寸,该怎么办呢?毕竟,上面已经很清楚,不可能从终端获得单个头寸的实际保证金值。但对于整个乐器来说,肯定可以做到这一点?