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

 
SanAlex :

여전히 0이고 커미션을 표시하고 싶지 않습니다.

 double Komsa( string Pair) {
   double   commicion= 0 ;
   int tikett,entry;
   ulong tik,ord;
//---------------------------------------------------------------   
   for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--) {
   if ( PositionGetSymbol (i)==Pair){  tik= PositionGetTicket (i); 
//---------------------------------------------------------------         
   HistorySelect ( 0 , TimeCurrent ());
   for ( uint r= HistoryDealsTotal ()- 1 ;r> 0 ;r--)   {
   if ((tikett= HistoryDealGetTicket (r))> 0 )   {
   ord= HistoryDealGetInteger (tikett, DEAL_ORDER );
   entry = HistoryDealGetInteger (tikett, DEAL_ENTRY );
   if (entry== DEAL_ENTRY_IN ) {
   if (tik==ord)  { commicion+= HistoryDealGetDouble (tikett, DEAL_COMMISSION )* 2 ;    }  }  } }  } }
//--------------------------------------------------------------  
   Comment ( " commisia " +commicion);
   return (commicion);  }

요컨대, 선택한 쌍을 계산하고 빠르게 눈을 멀게하고 x가 올바르게 표시되는지 여부를 잘 확인했습니다.

 
Aleksandr Egorov :

요컨대, 선택한 쌍을 계산합니다.

고맙습니다! - 이제 테스트하겠습니다. 여전히 이 기능을 처리해야 합니다.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

예! 쇼. 고맙습니다!

FX10 4

 
SanAlex :

고맙습니다! - 이제 테스트하겠습니다. 여전히 이 기능을 처리해야 합니다.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

예! 쇼. 고맙습니다!


여기에서 커미션이 한쪽에 대해서만 계산되면 2를 곱하기 때문에 기능이 올바르게 작동하지 않는다는 것이 밝혀졌습니다.

 DEAL_ENTRY_IN
어떻게든 이상형으로 끝내야 합니다.
 
Aleksandr Egorov :

여기에서 커미션이 한쪽에 대해서만 계산되면 2를 곱하기 때문에 기능이 올바르게 작동하지 않는다는 것이 밝혀졌습니다.

어떻게든 이상형으로 끝내야 합니다.

모든 것을 보여주는 것 같다

약간 - 수정했습니다 - 맞는지 아닌지 모르겠습니다. 하지만 경고는 사라졌다

 //+------------------------------------------------------------------+
//|                                                   Commission.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   Komsa( _Symbol );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Komsa( string Pair)
  {
   double   commicion= 0 ;
   ulong tikett,entry;
   ulong tik,ord;
//---------------------------------------------------------------
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( PositionGetSymbol (i)==Pair)
        {
         tik= PositionGetTicket (i);
         //---------------------------------------------------------------
         HistorySelect ( 0 , TimeCurrent ());
         for ( uint r= HistoryDealsTotal ()- 1 ; r> 0 ; r--)
           {
             if ((tikett= HistoryDealGetTicket (r))> 0 )
              {
               ord= HistoryDealGetInteger (tikett, DEAL_ORDER );
               entry = HistoryDealGetInteger (tikett, DEAL_ENTRY );
               if (entry== DEAL_ENTRY_IN )
                 {
                   if (tik==ord)
                    {
                     commicion+= HistoryDealGetDouble (tikett, DEAL_COMMISSION );
                    }
                 }
              }
           }
        }
     }
//--------------------------------------------------------------
   Comment ( " commisia " + DoubleToString (commicion, 2 ));
   return (commicion);
  }
//+------------------------------------------------------------------+

FX10 5

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

반대 위치를 열었고 커미션이 증가했습니다 - 올바른 것 같습니다

BTCUSDH1

 
SanAlex :

모든 것을 보여주는 것 같다

약간 - 수정했습니다 - 맞는지 아닌지 모르겠습니다. 하지만 경고는 사라졌다

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

반대 위치를 열었고 커미션이 증가했습니다 - 올바른 것 같습니다


여기서 또한 입장 및 퇴장으로 간주되는 항목을 확인하거나 1로트로 연 다음 0.5로 닫은 경우 입장 및 입장을 위해서만 포즈의 일부를 제거해야 합니다.

요컨대, 여전히 땜질해야합니다
 

기간별 수익, 총 로트 및 각 상품의 커미션을 보여주는 스크립트입니다.
고마워하지마

파일:
 
Dmitiry Ananiev :

기간별 수익, 총 로트 및 각 상품의 커미션을 보여주는 스크립트입니다.
고마워하지마

대본은 잘 규범되어 있습니다. 사실 우리는 공개 직위를 위한 위원회가 필요하며 이것은 역사에 있습니다.

 
Aleksandr Egorov :

대본은 잘 규범되어 있습니다. 사실 우리는 공개 직위를 위한 위원회가 필요하며 이것은 역사에 있습니다.

그것은 이미 이전에 논의되었습니다. 브로커의 거래 조건에서 수수료(브로커가 선언한)를 확인할 수 있습니다. 그리고 실제 주문(영장) 집행을 위한 커미션(영장)은 주문이 실행된 후에야 알 수 있으며, 집행 전에는 알 수 없습니다.

추신. 다음 틱에 스프레드와 같습니다. 현재 틱에서 우리는 가격도 스프레드도 스왑도 수수료도 다음 틱에 어떤 일이 일어날지 모릅니다. 그리고 브로커는 이를 변경할 권리가 있습니다.

 
Aleksandr Egorov :

여기서 또한 입장 및 퇴장으로 간주되는 항목을 확인하거나 1로트로 연 다음 0.5로 닫은 경우 입장 및 입장을 위해서만 포즈의 일부를 제거해야 합니다.

요컨대, 여전히 땜질해야합니다

현명한 것 - 내가 이해하지 못하는 동안. 포지션이 열릴 때 따로 기록하고, 닫을 때 따로 기록합니다.

지혜로운

 //+------------------------------------------------------------------+
//|                                                   Commission.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
#include <Trade\Trade.mqh>
CTrade trade;
#property script_show_inputs
//---
input bool Inp_open_close = false ; // Open --> false || Close --> true
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ( void )
  {
//---
   if (!Inp_open_close)
     {
       if (!trade.PositionOpen( _Symbol , ORDER_TYPE_BUY , 0.1 , SYMBOL_ASK , 0.0 , 0.0 ))
         Print (trade.ResultRetcode());
       PlaySound ( "ok.wav" );
      CSV_OPEN();
     }
   if (Inp_open_close)
     {
       if ( TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && Bars ( _Symbol , _Period )> 100 )
         trade.PositionClose( _Symbol , 3 );
       PlaySound ( "ok.wav" );
      CSV_CLOS();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Komsa( void )
  {
   double   commicion= 0 ;
   ulong tikett,entry;
   ulong tik,ord;
//---------------------------------------------------------------
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( PositionGetSymbol (i)== _Symbol )
        {
         tik= PositionGetTicket (i);
         //---------------------------------------------------------------
         HistorySelect ( 0 , TimeCurrent ());
         for ( uint r= HistoryDealsTotal ()- 1 ; r> 0 ; r--)
           {
             if ((tikett= HistoryDealGetTicket (r))> 0 )
              {
               ord= HistoryDealGetInteger (tikett, DEAL_ORDER );
               entry = HistoryDealGetInteger (tikett, DEAL_ENTRY );
               if (entry== DEAL_ENTRY_IN )
                 {
                   if (tik==ord)
                    {
                     commicion+= HistoryDealGetDouble (tikett, DEAL_COMMISSION );
                    }
                 }
              }
           }
        }
     }
//--------------------------------------------------------------
   Comment ( " commisia " + DoubleToString (commicion, 2 ));
   return (commicion);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CSV_OPEN( void )
  {
//---
   ResetLastError ();
   int filehandle= FileOpen ( "CommissionOpen.csv" , FILE_READ | FILE_WRITE | FILE_CSV );
   if (filehandle==- 1 )
     {
       int res= GetLastError ();
       Print ( "File open error :  " ,
            res);
       return ;
     }
   FileSeek (filehandle, 0 , SEEK_END );
   FileWrite (filehandle,Komsa());
   FileClose (filehandle);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CSV_CLOS( void )
  {
//---
   ResetLastError ();
   int filehandle= FileOpen ( "CommissionClose.csv" , FILE_READ | FILE_WRITE | FILE_CSV );
   if (filehandle==- 1 )
     {
       int res= GetLastError ();
       Print ( "File open error :  " ,
            res);
       return ;
     }
   FileSeek (filehandle, 0 , SEEK_END );
   FileWrite (filehandle,Komsa());
   FileClose (filehandle);
  }
//+------------------------------------------------------------------+
 
Valeriy Yastremskiy :

그것은 이미 이전에 논의되었습니다. 브로커의 거래 조건에서 수수료(브로커가 선언한)를 확인할 수 있습니다. 그리고 실제 주문(영장) 집행을 위한 커미션(영장)은 주문이 실행된 후에야 알 수 있으며, 집행 전에는 알 수 없습니다.

추신. 다음 틱에 스프레드와 같습니다. 현재 틱에서 우리는 가격도 스프레드도 스왑도 수수료도 다음 틱에 어떤 일이 일어날지 모릅니다. 그리고 브로커는 이를 변경할 권리가 있습니다.

글쎄, 그는 열린 위치로 찾아야합니다.

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

초보자의 질문 MQL5 MT5 MetaTrader 5

Alexander Egorov, 2021.07.14 22:30

대본은 잘 규범되어 있습니다. 사실 우리는 공개 직위를 위한 위원회가 필요 하며 이것은 역사에 있습니다.

사유: