Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 395

 
Максим Вдовицкий :
Bunu yapıyorum, komut dosyası penceresi AVERAGE RANGE komut dosyası tablosunda görünmüyor
Günlükte genellikle her şey sırayla yazılır, ne zaman arandığı, ne yaptığı, ne için kovulduğu ...
 
hepinize teşekkürler anladım!!!
 
Arkadaşlar, bana ikili opsiyon ticareti için emir açma komut dosyası söyleyin, aksi takdirde yeni bir fiyatım, yeni bir fiyatım var ve böylece 3 dakika kurcalayabilirsiniz .. ve sonra yapmanız gerekmez!!!
 
Максим Вдовицкий :
Arkadaşlar, bana ikili opsiyon ticareti için emir açma komut dosyası söyleyin, aksi takdirde yeni bir fiyatım, yeni bir fiyatım var ve böylece 3 dakika kurcalayabilirsiniz .. ve sonra yapmanız gerekmez!!!
Aynı şey senaryoda da olacak, eğer manuel işlemler yeniden fiyatlandırılırsa , otomatik olanlar daha da iyi olacaktır.
 
Максим Вдовицкий :
Arkadaşlar, bana ikili opsiyon ticareti için emir açma komut dosyası söyleyin, aksi takdirde yeni bir fiyatım, yeni bir fiyatım var ve böylece 3 dakika kurcalayabilirsiniz .. ve sonra yapmanız gerekmez!!!
Hangi komisyoncu?
 
Evgeny Belyaev :
Hangi komisyoncu?
Büyük ... ve sermaye ve alpari, genel olarak, insanlar ticaret panelinden veya senaryodan her şeyin daha eğlenceli olduğunu yazıyor, ancak ikili dosyalar için paneli bulamıyorum, sadece ücretli olanlar, birine minnettar olacağım yeni başlayana kim söyleyecek.
 

Hepiniz hoşgeldiniz! MA'yı bir dizi teklife göre hesaplama hakkında bir soru.

Neden sayılmadığını söyle.

 macurrent0 = 0 постоянно
 macurrent1 , macurrent2, macurrent3 имеют одинаковое не правильное не меняющееся значение

onlar. bir yorumda her zaman sıfırdırlar.

işlev

dizide depolanan veriler üzerinde hesaplanan Hareketli Ortalama teknik göstergesinin değerini döndürmez .

çift iMAOnArray (

...
 extern int Ma_period= 15 ;
double      xBuffer_Bid  []; // Массив значений   динамический, в котором индекс - номер тика, значение - это бид 
                            

int SIZE= 0 ;                 // Вспомогательная переменная для массива                                  
int tickCounter, tickCounter_Current; 
double MaxSpeed;       // максимальная средняя скорость тиков с запуска системы

//+------------------------------------------------------------------+
int init()
  {   
//--- устанавливаем размер динамического массива
   
   if ( ArrayResize (xBuffer_Bid, 2000000 )< 0 ) { Print ( " Ошибка в изменении размера массива " ); return ( false );}
//--- установим индексацию для буфера как в таймсерии для динамического массива
   // ArraySetAsSeries(xBuffer_Time,true);    
//---   Возвращает количество элементов указанного массива. 
   
   int S_Bid= ArraySize (xBuffer_Bid);   
   if (S_Bid>= 0 ) Print ( "Размер массива S_Бид: " ,S_Bid);
   else Print ( "Ошибка. Массив S_Time не создан " ,S_Bid);        
   ArrayInitialize (xBuffer_Bid, 0 );
   
      
   return ( 0 );
  }  
//+------------------------------------------------------------------+
int start()
  {  
   double avgBid = 0 ;     // средняя цена Бид
   int k= 0 ;               // вспомогательная переменная для цикла
   double Summ_Time = 0 ; // время поступления крайней котировки для расчёта 
   double avgTime;       // среднее время поступление тиков 
   double avgSpeed;       // средняя скорость их поступления
  

  
  
  ArrayResize (xBuffer_Bid,SIZE);                                         // увеличение размера массивов на 1
   
   if (SIZE> 0 ) 
      {
       xBuffer_Bid[SIZE- 1 ] = NormalizeDouble (MarketInfo( _Symbol , MODE_BID ), Digits );                     // заполнение массива Bid  
       if ( ArraySize (xBuffer_Bid) < 2147483647 ) //  
           Print ( " Текущее значение xBuffer_Bid [SIZE-1] = " , DoubleToStr(xBuffer_Bid[SIZE- 1 ], Digits ) );            
      } 
   Print ( " Текущее значение SIZE = " , DoubleToStr(SIZE, 2 ) );   
   SIZE ++;                                                               // счётчик индекса массивов                                                                                                      
  
...
     
       // --------------   Расчёт МА по массиву бидов  --------------------------
       
         if ( SIZE >= Ma_period)
         if ( ArraySize (xBuffer_Bid) < 2147483647 ) 
           { 
             double macurrent0=iMAOnArray(xBuffer_Bid, 0 ,Ma_period, 0 , MODE_EMA ,SIZE- 1 );
             double macurrent1=iMAOnArray(xBuffer_Bid, 0 ,Ma_period, 0 , MODE_EMA ,SIZE- 2 );
             double macurrent2=iMAOnArray(xBuffer_Bid, 0 ,Ma_period, 0 , MODE_EMA ,SIZE- 3 );
             double macurrent3=iMAOnArray(xBuffer_Bid, 0 ,Ma_period, 0 , MODE_EMA ,SIZE- 4 );
           //Print("
           }

  
     if (time_s!= 0 ) 
       Comment (
              
              
               "macurrent0 = " ,       NormalizeDouble (macurrent0, Digits ), "\n" ,
               "macurrent1 = " ,       NormalizeDouble (macurrent1, Digits ), "\n" ,
               "macurrent2 = " ,       NormalizeDouble (macurrent2, Digits ), "\n" ,
               "macurrent3 = " ,       NormalizeDouble (macurrent3, Digits ), "\n" ,              
              
           "" ) ; 
          
     
   return ( 0 );
  }
 

Daha önce, "TİCARET GEÇMİŞİNE DAYALI FİLTRE" ( www.mql5.com/en/articles/1441) makalesindeki Uzman Danışman mükemmel çalışıyordu, ancak şimdi derleme sırasında '[' - girdi ayarlarken geçersiz indeks değeri hatası veriyor. parametreler: çift virtClosedOrders[0][5]; Anlamama yardım et.

Фильтр на основании истории торговли
Фильтр на основании истории торговли
  • 2006.11.29
  • Andrey Khatimlianskii
  • www.mql5.com
В статье рассматривается использование виртуальной торговли, как составной части фильтра открытия сделок.
 
Roman Shiredchenko :

Hepiniz hoşgeldiniz! MA'yı bir dizi teklife göre hesaplama hakkında bir soru.

Neden sayılmadığını söyle.

onlar. bir yorumda her zaman sıfırdırlar.

işlev

dizide depolanan veriler üzerinde hesaplanan Hareketli Ortalama teknik göstergesinin değerini döndürmez .

çift iMAOnArray (

...

Dizi doğru dolduruldu mu? Bunu şu şekilde doldurmayı deneyin:

 //+------------------------------------------------------------------+
//|                                                   FillArrays.mq4 |
//|              Copyright 2015, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Artem A. Trishkin, Skype artmedia70"
#property link        "https://login.mql5.com/ru/users/artmedia70"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//|   Input variables                                                |
//+------------------------------------------------------------------+
input int NumberOfStorableTicks= 20 ; // Количество сохраняемых тиков
int numberOfStorableTicks; // Количество сохраняемых тиков
input int PeriodOfMA= 5 ;             // Период сглаживания
int periodOfMA; // Период сглаживания
//+------------------------------------------------------------------+
//|   Global variables                                               |
//+------------------------------------------------------------------+
string symbol;     // Symbol()
int digits;       // Digits
//+------------------------------------------------------------------+
//|   Arrays                                                         |
//+------------------------------------------------------------------+
double       Mass_ticks[];
double       Mass_smoothed_values[];
//+------------------------------------------------------------------+
//|   Structures                                                     |
//+------------------------------------------------------------------+
   MqlTick struct_tick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   symbol= Symbol ();
   digits=( int ) SymbolInfoInteger (symbol, SYMBOL_DIGITS );
   //---
   numberOfStorableTicks=(NumberOfStorableTicks< 2 )? 2 :NumberOfStorableTicks;
   periodOfMA=(PeriodOfMA< 1 )? 1 :PeriodOfMA;
   //---
   ArrayResize (Mass_ticks,numberOfStorableTicks);
   ArrayInitialize (Mass_ticks, 0.0 );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   Comment ( "" );
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if ( SymbolInfoTick (symbol,struct_tick)) {
       double tick_bid=struct_tick.bid;
      FillArrays(numberOfStorableTicks,tick_bid,Mass_ticks);
      }
   string txt= "" ;
   for ( int i=numberOfStorableTicks- 1 ; i>= 0 ; i--) {
      txt+= "\nmass[" + IntegerToString (i)+ "]: " + DoubleToString (Mass_ticks[i],digits);
      }
   Comment (txt);
  }
//+------------------------------------------------------------------+
void FillArrays( int array_size, double price, double &mass_price[]) {
   //--- сместим данные в массиве влево
   for ( int i=array_size- 1 ; i> 0 ; i--) {
      mass_price[i]=mass_price[i- 1 ];
      }
   //--- запишем новый тик в массив
   mass_price[ 0 ]=price;
}
//+------------------------------------------------------------------+

İlk olarak, dizinin kenelerle doğru şekilde doldurulduğundan emin olmanız ve ancak bundan sonra bir kene ile düzeltmeye çalışmanız gerekir.

 

Yani durum nedir?

iMAonArray ile doğru şekilde nasıl çalışılır???

İşte resim:


İşte kod:

Burada aynı değerlerin neden burada doğru olmadığını anlayamıyorum:

 Alert ( " macurrent0 = " ,      DoubleToStr(macurrent0, Digits ));
             Alert ( " macurrent1 = " ,      DoubleToStr(macurrent1, Digits ));
             Alert ( " macurrent2 = " ,      DoubleToStr(macurrent2, Digits ));


Burada her şey doğru sayılır ve görüntülenir - tek boyutlu bir dizinin üç uç hücresinin içeriğinden bahsediyorum.

 Alert ( " Текущее значение xBuffer_Bid [SIZE-1] = " , DoubleToStr(xBuffer_Bid[SIZE- 1 ], Digits ) );        
           if (SIZE> 1 )   Alert ( " Предыдущее значение xBuffer_Bid [SIZE-2] = " , DoubleToStr(xBuffer_Bid[SIZE- 2 ], Digits ) );    
           if (SIZE> 2 )   Alert ( " Предпредыдущее значение xBuffer_Bid [SIZE-3] = " , DoubleToStr(xBuffer_Bid[SIZE- 3 ], Digits ) );                
          } 
ArrayResize (xBuffer_Time,SIZE); ArrayResize (xBuffer_Bid,SIZE);                                         // увеличение размера массивов на 1
   
   if (SIZE> 0 ) 
      {
       xBuffer_Bid[SIZE- 1 ] = NormalizeDouble (MarketInfo( _Symbol , MODE_BID ), Digits );                     // заполнение массива Bid  
       if ( ArraySize (xBuffer_Bid) < 2147483647 ) 
          {  
           Alert ( " Текущее значение xBuffer_Bid [SIZE-1] = " , DoubleToStr(xBuffer_Bid[SIZE- 1 ], Digits ) );        
           if (SIZE> 1 )   Alert ( " Предыдущее значение xBuffer_Bid [SIZE-2] = " , DoubleToStr(xBuffer_Bid[SIZE- 2 ], Digits ) );    
           if (SIZE> 2 )   Alert ( " Предпредыдущее значение xBuffer_Bid [SIZE-3] = " , DoubleToStr(xBuffer_Bid[SIZE- 3 ], Digits ) );                
          } 
     
      } 
   Alert ( " Текущее значение SIZE = " , DoubleToStr(SIZE, 2 ) );  
   if ( SIZE >= Ma_period)
       if ( ArraySize (xBuffer_Bid) < 2147483647 ) 
           { 
             double macurrent0=iMAOnArray(xBuffer_Bid, 0 ,Ma_period, 0 , MODE_EMA ,SIZE- 1 );
             double macurrent1=iMAOnArray(xBuffer_Bid, 0 ,Ma_period, 0 , MODE_EMA ,SIZE- 2 );
             double macurrent2=iMAOnArray(xBuffer_Bid, 0 ,Ma_period, 0 , MODE_EMA ,SIZE- 3 );
          
                 
           
             Alert ( " macurrent0 = " ,      DoubleToStr(macurrent0, Digits ));
             Alert ( " macurrent1 = " ,      DoubleToStr(macurrent1, Digits ));
             Alert ( " macurrent2 = " ,      DoubleToStr(macurrent2, Digits ));
            
           }           
  
  
    SIZE ++;                                                               // счётчик индекса массивов для их заполнения необходимо его увеличение