제 경우에는 작동하지 않습니다. 나는 새로운 직위를 요구하는 것이 아니다. 한 가지 유형의 거래에 대한 마진을 계산하고 반환한다는 것을 알고 있습니다. 그러나 거래가 이미 열려 있고 특정 기호의 한 거래에 의해 소비되는 마진을 알고 싶습니다.
도와주시겠어요? 제 상황이 이해가 안 되시면 알려주세요.
간단한 스크립트 설명:
도구 상자에 다음 필드가 표시됩니다.
이것은 AUDJPY, EURUSD 및 EURTRY 기호의 마진입니다.
AccountInfoDouble(ACCOUNT_MARGIN)을 사용하여 이 값을 얻을 수 있다는 것을 알고 있습니다. 하지만 특정 캐릭터의 값을 얻을 수 없습니다. 예를 들어 EURUSD가 얼마나 마진을 소비하는지 알고 싶습니다. 어떤 기능도 수행할 수 없다는 것입니다. 따라서 이를 어떻게 계산할 수 있는지 알고 싶습니다.
이 설명이 충분히 이해되기를 바랍니다.
//+------------------------------------------------------------------+#include <Trade\PositionInfo.mqh> CPositionInfo m_position;
//+------------------------------------------------------------------+struct str__
{
string symbol;
double margin;
};
str__ symb[];
//+------------------------------------------------------------------+voidOnTick ()
{
int total = PositionsTotal (), c = 0 ;
ArrayResize (symb, total);
for ( int k = total - 1 ; k >= 0 ; k--)
if (m_position.SelectByIndex(k))
{
symb[c].symbol = m_position. Symbol ();
if (m_position.PositionType() == POSITION_TYPE_BUY )
symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_BUY , m_position.Volume());
if (m_position.PositionType() == POSITION_TYPE_SELL )
symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_SELL , m_position.Volume());
c++;
}
ArrayPrint (symb, 2 );
}
//+------------------------------------------------------------------+double SymbolMargin( string aSymbol, ENUM_ORDER_TYPE aType, double aLot = 1.0 )
{
double margin = 0 ;
MqlTick m_tick;
if ( SymbolInfoTick (aSymbol, m_tick))
{
if (m_tick.ask != 0.0 )
if ( OrderCalcMargin (aType, aSymbol, aLot, m_tick.ask, margin))
return (margin * aLot);
if (m_tick.bid != 0.0 )
if ( OrderCalcMargin (aType, aSymbol, aLot, m_tick.bid, margin))
return (margin * aLot);
}
return - 1 ;
}
//+------------------------------------------------------------------+
@Vladimir Pastushak 시도하겠습니다. 그러나 이것은 실행 가능한 솔루션이 아님을 알려드립니다. OrderCalcMargin() 함수로 설정한 값은 매번 변경됩니다. 그러나 마진은 변경되지 않습니다. 거래를 성사하면 마진은 거래를 열었을 때와 동일합니다. 그러나 OrderCalcMargin()을 사용할 때 값이 변경되고 원본과 전혀 같지 않습니다.
측면에서도 이것을 시도했다면 알려주십시오. 나는 그것이 작동하지 않을 것이라는 것을 알고 있습니다. 그러나 나는 당신이 주장하는대로 그것을 사용할 것입니다.
@ Artyom Trishkin @ Vladimir Pastushak
제 경우에는 작동하지 않습니다. 나는 새로운 직위를 요구하는 것이 아니다. 한 가지 유형의 거래에 대한 마진을 계산하고 반환한다는 것을 알고 있습니다. 그러나 거래가 이미 열려 있고 특정 기호의 한 거래에 의해 소비되는 마진을 알고 싶습니다.
도와주시겠어요? 제 상황이 이해가 안 되시면 알려주세요.
간단한 스크립트 설명:
도구 상자에 다음 필드가 표시됩니다.
이것은 AUDJPY, EURUSD 및 EURTRY 기호의 마진입니다.
AccountInfoDouble(ACCOUNT_MARGIN)을 사용하여 이 값을 얻을 수 있다는 것을 알고 있습니다. 하지만 특정 캐릭터의 값을 얻을 수 없습니다. 예를 들어 EURUSD가 얼마나 마진을 소비하는지 알고 싶습니다. 어떤 기능도 수행할 수 없다는 것입니다. 따라서 이를 어떻게 계산할 수 있는지 알고 싶습니다.
이 설명이 충분히 이해되기를 바랍니다.
@Vladimir Pastushak 시도하겠습니다. 그러나 이것은 실행 가능한 솔루션이 아님을 알려드립니다. OrderCalcMargin() 함수로 설정한 값은 매번 변경됩니다. 그러나 마진은 변경되지 않습니다. 거래를 성사하면 마진은 거래를 열었을 때와 동일합니다. 그러나 OrderCalcMargin()을 사용할 때 값이 변경되고 원본과 전혀 같지 않습니다.
측면에서도 이것을 시도했다면 알려주십시오. 나는 그것이 작동하지 않을 것이라는 것을 알고 있습니다. 그러나 나는 당신이 주장하는대로 그것을 사용할 것입니다.
EURUSD에서 로트 크기 50으로 거래를 열었습니다. 귀하의 기능을 사용한 후 얻은 것을 보십시오.
봐, 마진은 계속 변하고 있어. 그러나 이미 열린 거래의 가치는 변하지 않습니다. 지금 무엇을 해야 하는지 알려주세요?
EURUSD에서 로트 크기 50으로 거래를 열었습니다. 귀하의 기능을 사용한 후 얻은 것을 보십시오.
봐, 마진은 계속 변하고 있어. 그러나 이미 열린 거래의 가치는 변하지 않습니다. 지금 무엇을 해야 하는지 알려주세요?
위의 코드를 시도했습니다.
나는 그것을 가지고있다 :
그러나 예상 값은 다음과 같습니다.
다른 기호 의 경우 여백 값 이 계속 변경됩니다. 따라서 OrderCalcMargin()은 솔루션이 아닙니다. 이해했나요. 먼저 옆에서 시도하십시오.
다른 기호 의 경우 여백 값 이 계속 변경됩니다. 따라서 OrderCalcMargin()은 솔루션이 아닙니다. 이해했나요. 먼저 옆에서 시도하십시오.
2 오더 5891 * 2 = 11782 배열 문자를 문자로 처리해야 한다면... 문제가 되지 않습니다...
2 오더 5891 * 2 = 11782 배열 문자를 문자로 처리해야 한다면... 문제가 되지 않습니다...
하지만 EURUSD에서 한 번만 거래했습니다. 그리고 이 기능은 다른 캐릭터와 제대로 작동하지 않습니다.
말해봐, mql5 표시기에 대한 후크가 있습니까? 두 개의 표시 속성을 설정합니다.
다른 출력을 각각 고유한 표시 속성에 바인딩하는 방법도 있습니다.
말해봐, mql5 표시기에 대한 후크가 있습니까? 두 개의 표시 속성을 설정합니다.
다른 출력을 각각 고유한 표시 속성에 바인딩하는 방법도 있습니다.
그런 후크가 없습니다. 오른쪽도 왼쪽도 아닙니다. MQL5도 MQL4도 아닙니다.
서브 윈도우의 메인 차트에서 자신만의 구성을 사용하십시오.