mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 9

 
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로 표시되어야 합니다.
 
알렉세이 볼찬스키 :
좋아, 예금 통화 로 마진을 가져와야하기 때문에 남아 있습니다. 예를 들어, 보증금 통화 USD가 있는 AUDCAD의 경우 담보는 USD로 표시되어야 합니다.
이것이 완료된 것입니다.
 
알렉세이 볼찬스키 :
좋아, 예금 통화 로 마진을 가져와야하기 때문에 남아 있습니다. 예를 들어 USD 예금 통화가 있는 AUDCAD의 경우 담보는 USD로 표시되어야 합니다.
함수에서 SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE ) 과 같은 일종의 ... pip-lot을 디포 통화로 변환
 
fxsaber :
이것이 완료된 것입니다.

Forex에서는 모든 것이 잘 작동하지만 마지막 질문이 남아 있습니다. "왜 절반으로 줄어들고 어떻게 수정합니까?"

 
비탈리 무지첸코 :

Forex에서는 모든 것이 잘 작동하지만 마지막 질문이 남아 있습니다. "왜 두 배나 낮고 어떻게 수정합니까?"

나는 SGDJPY에서 마진이 FIBOGroup-MT5 서버와 MetaQuotes-Demo 서버에서 여러 번 다르다는 사실을 발견했습니다. 이는 MT5 자체가 오차가 있는 마진을 계산 한다는 것을 의미합니다. 글쎄, 그렇다면 단순히 비교를위한 표준이 없습니다. 따라서 이것이 내 구현 또는 개발자의 실수인지 말하기는 확실히 불가능합니다. 여기 저기에 오류가 있는 것 같아요. 문제는 정확한 정보가 없다는 것입니다.
 
fxsaber :
나는 SGDJPY에서 마진이 FIBOGroup-MT5 서버와 MetaQuotes-Demo 서버에서 여러 번 다르다는 사실을 발견했습니다. 이는 MT5 자체가 오차가 있는 마진을 계산 한다는 것을 의미합니다. 글쎄, 그렇다면 단순히 비교를위한 표준이 없습니다. 따라서 이것이 내 구현 또는 개발자의 실수인지 말하기는 확실히 불가능합니다. 여기 저기에 오류가 있는 것 같아요. 문제는 정확한 정보가 없다는 것입니다.

빨간색으로 강조 표시된 한 가지 예외를 제외하고 두 대의 서버가 올바르게 표시됩니다.

빨간색으로 강조 표시된 속성을 찾는 방법은 무엇입니까?

고맙습니다!

 
비탈리 무지첸코 :

빨간색으로 강조 표시된 한 가지 예외를 제외하고 두 대의 서버가 올바르게 표시됩니다.

빨간색으로 강조 표시된 속성을 찾는 방법은 무엇입니까?

팁 고마워! 야생에서 이것은 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 옵션은 롤링되지 않을 수 있습니다. Forex는 물론 이런 일이 발생하지 않습니다. 하지만 기억해야 합니다. 따라서 일반적으로 다음과 같이 작성해야 합니다.
// Альтернатива OrderCalcMargin
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);  
}
 
fxsaber :
이것이 완료된 것입니다.
그래 맞아, 흥분했어
 

FIBOGroup-MT5 서버의 재미있는 MT5 SGDJPY

이 상황에서 MyOrderCalcMargin은 올바르게 계산하지만 표준 OrderCalcMargin은 계산하지 않습니다!

 
fxsaber :

FIBOGroup-MT5 서버의 재미있는 MT5 SGDJPY

이 상황에서 MyOrderCalcMargin은 올바르게 계산하지만 표준 OrderCalcMargin은 계산하지 않습니다!

헤지 마진은 어떻게 계산할 수 있습니까?
사유: