Hatalar, hatalar, sorular - sayfa 1857

 

Ve şöyle yazabilmeniz için [] ve = operatörlerinin nasıl aşırı yükleneceği:

class A
{
private:
   int arr[5];
};

A *obj = new A();

for(int i = 0; i < 5; ++i)    obj[i] = i;

 
Konstantin :

Ve şöyle yazabilmeniz için [] ve = operatörlerinin nasıl aşırı yükleneceği:

 class A
{
   int arr[ 5 ];
   
   int CurrentPos;
   
public :
  A* operator []( const int Pos )
  {
     this .CurrentPos = Pos;
    
     return (& this );
  }

   void operator =( const int Value )  
  {
     this .arr[ this .CurrentPos] = Value;
  }
};
 
fxsaber :


teşekkürler, ancak yukarıdakilere ek olarak aşağıdaki gibi yazabilmeniz için [] operatörünü tekrar nasıl aşırı yükleyebilirsiniz:

 class A
{
   int arr[ 5 ];
   
   int CurrentPos;
   
public :
  A* operator []( const int Pos )
  {
     this .CurrentPos = Pos;
    
     return (& this );
  }

   void operator =( const int Value )  
  {
     this .arr[ this .CurrentPos] = Value;
  }
};

for(int i = 0; i < 5; ++i)

   int _value = obj[i];

 
Konstantin :

teşekkürler, ancak yukarıdakilere ek olarak aşağıdaki gibi yazabilmeniz için [] operatörünü tekrar nasıl aşırı yükleyebilirsiniz:

 class A
{
   int arr[ 5 ];
   
   int CurrentPos;
   
public :
  A* operator []( const int Pos )
  {
     this .CurrentPos = Pos;
    
     return (& this );
  }

   void operator =( const int Value )  
  {
     this .arr[ this .CurrentPos] = Value;
  }

   int operator []( const uint Pos ) const
  {
     return ( this .arr[Pos]);
  }
};

void OnStart ()
{
  A obj;

   for ( int i = 0 ; i < 5 ; ++i)  
    obj[i] = i;
    
   for ( uint i = 0 ; i < 5 ; ++i)  
     int _value = obj[i];
}
 
fxsaber :

tekrar teşekkürler, aksi takdirde bu aşırı yüklenmelerle nasıl başa çıkacağımı bilmiyordum, ayrı ayrı yapıyorum, her şey yolunda gidiyor, ancak birlikte çalışmıyor))
 

belgelerde bir yazım hatası?

https://www.mql5.com/ru/docs/series/copyticksrange

 int    CopyTicks (
   const string      symbol_name,           // имя символа
   MqlTick &         ticks_array[],         // массив для приёма тиков
   uint              flags= COPY_TICKS_ALL ,   // флаг, определяющий тип получаемых тиков
   ulong             from_msc= 0 ,             // дата, начиная с которой запрашиваются тики
   ulong             to_msc= 0                // дата, по которую запрашиваются тики
   );
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyTicksRange - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Test cihazı, 25K işlemden sonra korkunç bir fren moduna giriyor.

1585'in piyasaya sürülmesi, onaylar, RTS-6.17, Metaquotes-Demo

 #include <MT4Orders.mqh>

void OnTick ()
{  
   static bool Error = false ;  
   static int Type = OP_BUY ;
  
   if (Error)
     return ;
  
   MqlTick Tick;    

   if ( OrderSelect ( 0 , SELECT_BY_POS ) && ( OrderType () <= OP_SELL ))
     OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 0 );    
   else if (( OrdersTotal () == 0 ) && SymbolInfoTick ( _Symbol , Tick) && (Tick.bid != 0 ) && (Tick.ask != 0 ))
  {
    Error = ( OrderSend ( _Symbol , Type + OP_BUYLIMIT , 1 , (Type == OP_BUY ) ? Tick.ask : Tick.bid, 0 , 0 , 0 , "" , 0 , 0 , INT_MAX ) == - 1 );        
    
     if (!Error)
    {
       OrderSend ( _Symbol , Type + OP_BUYLIMIT , 1 , (Type == OP_BUY ) ? Tick.ask : Tick.bid, 0 , 0 , 0 );
      
      Type = OP_SELL - Type;
    }    
  }
}

Frenlerin ortaya çıkmasının nedenlerini göremiyorum. Görünüşe göre ArrayResize (Orders, ArraySize(Orders) + 1) yazılmış. Onlar. Reserve_Size kullanılmıyor.

 
Expired kaydı devam ederken test kullanıcısı günlüğünde zaman yok
 2017.04 . 19 10 : 46 : 15.165 2017.04 . 06 23 : 09 : 37    sell limit 1.00 RTS- 6.17 at 114300 ( 114290 / 114300 / 114300 )
2017.04 . 19 10 : 46 : 15.168 order expired [ # 284 sell limit 1.00 RTS- 6.17 at 114300 ]
2017.04 . 19 10 : 46 : 15.168 2017.04 . 07 09 : 45 : 04    buy limit 1.00 RTS- 6.17 at 114170 ( 114140 / 114180 )
 
Test cihazının günlüğündeki geçmiş zamana milisaniye eklemenizi rica ediyorum.
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2017.04.19 08:58

Test cihazı, 25K işlemden sonra korkunç bir fren moduna giriyor.

1585'in piyasaya sürülmesi, onaylar, RTS-6.17, Metaquotes-Demo

 #include <MT4Orders.mqh>

void OnTick ()
{  
   static bool Error = false ;  
   static int Type = OP_BUY ;
  
   if (Error)
     return ;
  
   MqlTick Tick;    

   if ( OrderSelect ( 0 , SELECT_BY_POS ) && ( OrderType () <= OP_SELL ))
     OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 0 );    
   else if (( OrdersTotal () == 0 ) && SymbolInfoTick ( _Symbol , Tick) && (Tick.bid != 0 ) && (Tick.ask != 0 ))
  {
    Error = ( OrderSend ( _Symbol , Type + OP_BUYLIMIT , 1 , (Type == OP_BUY ) ? Tick.ask : Tick.bid, 0 , 0 , 0 , "" , 0 , 0 , INT_MAX ) == - 1 );        
    
     if (!Error)
    {
       OrderSend ( _Symbol , Type + OP_BUYLIMIT , 1 , (Type == OP_BUY ) ? Tick.ask : Tick.bid, 0 , 0 , 0 );
      
      Type = OP_SELL - Type;
    }    
  }
}

Kimse çoğalır mı? Test cihazı ayarları

Sonuç

Tester  RTS- 6.17 ,M1: 254907 ticks, 785 bars generated. Test passed in 0 : 15 : 54.180 (including ticks preprocessing 0 : 00 : 00.047 ).

Onlar. 16 dakikada 250 bin tik ile koş.


Test cihazında performansındaki düşüşü ölçmek nasıl mümkün olabilir? GetTickCount ve global değişkenler aracılığıyla denendi - çıkmıyor.