초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 658

 
Vladimir Karputov :
이제 간단한 어드바이저로 확인해보자...
확인할 필요가 없습니다. 논리는 MQL4와 동일합니다. Profit, Commission 및 Swap은 별도의 엔터티입니다.
 
fxsaber :
확인할 필요가 없습니다. 논리는 MQL4와 동일합니다. Profit, Commission 및 Swap은 별도의 엔터티입니다.
코드와 함께 표시하십시오. 여기에 mql5의 직접 코드가 있으며 바람직하게는 변태가 없습니다.
 
Vladimir Karputov :
이제 간단한 어드바이저로 확인해보자...

블라디미르, 요점은 4가지에서 내가 다음과 같이 한다는 것입니다.

// считаем комиссии и свопы в пипки
     swap= OrderSwap ();
     commission= OrderCommission ();
     if (swap+commission< 0.0 ) {
      costs= NormalizeDouble ( MathAbs (((swap+commission)/( SymbolInfoDouble (_symbol, SYMBOL_TRADE_TICK_VALUE )*ol))* _Point ), _Digits );
     } else {
      costs= 0.0 ;
     }
// прибавляем количество пипок
if ((( Bid -(br+costs+((BreakevenStep* _Point )*D)))>=op) && typ== 0 )
{
   OrderModify (...);
}

다섯 번째에서 그것을하는 방법?

 
Vitaly Muzichenko :

블라디미르, 요점은 4가지에서 내가 다음과 같이 한다는 것입니다.

// считаем комиссии и свопы в пипки
     swap= OrderSwap ();
     commission= OrderCommission ();
     if (swap+commission< 0.0 ) {
      costs= NormalizeDouble ( MathAbs (((swap+commission)/( SymbolInfoDouble (_symbol, SYMBOL_TRADE_TICK_VALUE )*ol))* _Point ), _Digits );
     } else {
      costs= 0.0 ;
     }
// прибавляем количество пипок
if ((( Bid -(br+costs+((BreakevenStep* _Point )*D)))>=op) && typ== 0 )
{
   OrderModify (...);
}

다섯 번째에서 그것을하는 방법?

처음에 추가
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
또는 모든 것을 강력하게 다시 작성하십시오.
 
Vitaly Muzichenko :
코드와 함께 표시하십시오. 여기에 mql5의 직접 코드가 있으며 바람직하게는 변태가 없습니다 .
거의 불가능합니다! SB에서 뽑아, 다이렉트 코드
//+------------------------------------------------------------------+
//| Get the property value "POSITION_COMMISSION"                     |
//+------------------------------------------------------------------+
double CPositionInfo::Commission( void ) const
  {
   return ( PositionGetDouble ( POSITION_COMMISSION ));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP"                           |
//+------------------------------------------------------------------+
double CPositionInfo::Swap( void ) const
  {
   return ( PositionGetDouble ( POSITION_SWAP ));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT"                         |
//+------------------------------------------------------------------+
double CPositionInfo::Profit( void ) const
  {
   return ( PositionGetDouble ( POSITION_PROFIT ));
  }
 
fxsaber :
거의 불가능합니다! SB에서 뽑아, 다이렉트 코드
//+------------------------------------------------------------------+
//| Get the property value "POSITION_COMMISSION"                     |
//+------------------------------------------------------------------+
double CPositionInfo::Commission( void ) const
  {
   return ( PositionGetDouble ( POSITION_COMMISSION ));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP"                           |
//+------------------------------------------------------------------+
double CPositionInfo::Swap( void ) const
  {
   return ( PositionGetDouble ( POSITION_SWAP ));
  }
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT"                         |
//+------------------------------------------------------------------+
문서에 쓰는 것을 잊었지만 이 " POSITION_COMMISSION "이 작동합니까?
 
new-rena :
문서에 쓰는 것을 잊었지만 이 " POSITION_COMMISSION "이 작동합니까?
당신은 변태없이 물었다. 그리고 그들과 함께라면

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

fxsaber , 2016.07.19 12:40

테스터(RoboForexEU-MetaTrader 5)의 POSITION_COMMISSION 속성은 항상 수수료를 0으로 반환합니다.

 //+------------------------------------------------------------------+
//| Get the property value "POSITION_COMMISSION"                     |
//+------------------------------------------------------------------+
double CPositionInfo::Commission( void ) const
  {
   return ( PositionGetDouble ( POSITION_COMMISSION ));
  }

또한 POSITION_COMMISSION(== 8)이 도움말 및 메타 편집기(강조 표시)에 없지만 컴파일러는 익숙합니다. 포지션 커미션은 다른 (작업) 방법으로 결정하기 어렵지 않습니다. POSITION_COMMISSION 속성이 흔적입니까?


그래서 이렇게
double GetPositionCommission( void )
{
   double Commission = :: PositionGetDouble ( POSITION_COMMISSION );

   // На случай, если POSITION_COMMISSION не работает
   if (Commission == 0 )
  {
     const ulong Ticket = MT4ORDERS::GetPositionDealIn();

     if (Ticket > 0 )
    {
       const double LotsIn = :: HistoryDealGetDouble (Ticket, DEAL_VOLUME );

       if (LotsIn > 0 )
        Commission = :: HistoryDealGetDouble (Ticket, DEAL_COMMISSION ) * :: PositionGetDouble ( POSITION_VOLUME ) / LotsIn;
    }
  }

   return (Commission);
}
또는

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

초보자의 질문

fxsaber , 2016.10.29 16:23

나는 MT4Orders 라이브러리를 강요하지 않습니다. 하지만 좋은 오래된 OrderCommission 을 호출하는 것이 더 쉬울 수도 있습니다.

그러나 그것은 헤지 계정뿐만 아니라 인터넷에서도 작동합니다.

 
Vladimir Karputov :
이제 간단한 어드바이저로 확인해보자...

여기: POSITION_PROFIT 는 포지션 이익을 보여줍니다.

POSITION_PROFIT

. 이것은 스왑 등을 고려하지 않습니다.

 
Vitaly Muzichenko :

블라디미르, 요점은 4가지에서 내가 다음과 같이 한다는 것입니다.

// считаем комиссии и свопы в пипки
     swap= OrderSwap ();
     commission= OrderCommission ();
     if (swap+commission< 0.0 ) {
      costs= NormalizeDouble ( MathAbs (((swap+commission)/( SymbolInfoDouble (_symbol, SYMBOL_TRADE_TICK_VALUE )*ol))* _Point ), _Digits );
     } else {
      costs= 0.0 ;
     }
// прибавляем количество пипок
if ((( Bid -(br+costs+((BreakevenStep* _Point )*D)))>=op) && typ== 0 )
{
   OrderModify (...);
}

다섯 번째에서 그것을하는 방법?

수수료는 닫힌 거래에 대해서만 결정할 수 있는 예측할 수 없는 물질입니다. 오픈 포지션 에서 현재 이익(스왑의 효과나 커미션의 효과는 고려하지 않음)과 스왑만 알 수 있습니다. 코드는 다음과 같습니다.

" m_trade.PositionClose(Symbol());" 줄에 중단점을 넣습니다. 그리고 백테스트를 실행합니다. 테스터가 중단점에서 멈추면 Profit 및 Swap 열의 숫자를 테스터의 저널에 인쇄될 숫자와 비교하십시오.

파일:
3.mq5  5 kb
 
Vladimir Karputov :

여기: POSITION_PROFIT 는 포지션 이익을 보여줍니다.

. 이것은 스왑 등을 고려하지 않습니다.

확인. 이해했다.

fxsaber 의 솔루션이 적용되었습니다.

원칙적으로 내 프로그램을 MQL4에서 MQL5로 거의 문제 없이 옮겼습니다.

뉘앙스 - 위.

모두 감사합니다!

사유: