Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 913

 

Diziye yazarak, söyle bana, plz.

Fiş. Taze süreleri, örneğin 5 adet gibi bir miktarda kaydetmek gerekir. örneğin 5 tik için ortalama tik/sn değerini hesaplamak için tiklerin statik bir dizide gelişi.

Onlar. dizideki beş kenenin varış zamanlarını kaydetti. Ardından, ortalama kene hızını/saniyesini hesaplayın.

Terminaldeki son gelen tıklamanın zamanını kaydetmek için dizideki veriler her bir tıklamada nasıl değiştirilir? Tek boyutlu bir statik diziyi kene varış süreleri ile nasıl doldurabilirim? Dizideki indeksleme, timeseries dizisindeki gibi düzenlenir. Metin veya kod ile istenebilir. Anladım. Sayesinde.

Bu işe yaramaz. Dizi, kene varış zamanlarıyla düzgün şekilde doldurulmamış.

 int limit; //pBars;  
   int counted_bars=IndicatorCounted(); 
     //ArraySetAsSeries
 //---- последний посчитанный бар будет пересчитан
   if (counted_bars> 0 ) counted_bars--;  
   limit=counted_bars;  
   for ( int i=limit; i>= 0 ; i--) { xBuffer[i+ 1 ] = xBuffer[i]; xBuffer_Time[i+ 1 ] = xBuffer_Time[i];}

   xBuffer[ 0 ] = iClose(symbol, 1 , 0 );
   xBuffer_Time[tickCounter_Current] = NormalizeDouble ((iTime ( _Symbol , 1 , 0 )-_start), 2 ); 
   tickCounter_Current ++;  
   tickCounter=tickCounter+ 1 ;
   
   if (tickCounter_Current == Num_Aver_of_Ticks)    
       tickCounter_Current = 0 ;   
       
   for ( i = 0 ; i < Num_Aver_of_Ticks; i ++) Summ_Time = Summ_Time + xBuffer_Time[i];
       
   if (Num_Aver_of_Ticks != 0 )
   avgSpd = NormalizeDouble (Summ_Time / Num_Aver_of_Ticks, 2 ); 
Dosyalar:
 

Bir parça ile - anlaşıldı.

Dinamik bir diziye teklif yazarken neden sıfır yazdırıyor?

 //---------------------
extern int MaxDrawTicks= 100 ;
extern int Num_Aver_of_Ticks= 5 ;  
double      xBuffer_Time []; // Массив значений  
                         // В котором индекс - номер тика, значение - это бид 
int SIZE= 0 ;               // Вспомогательная переменная для массива                                  
int tickCounter, tickCounter_Current; 
//+------------------------------------------------------------------+
int init()
  {   
//--- устанавливаем размер динамического массива
   if ( ArrayResize (xBuffer_Time,SIZE)< 0 ) { Print ( " Ошибка в изменении размера массива времени поступления тиков " ); return ( false );}
//--- установим индексацию для буфера как в таймсерии для динамического массива
   // ArraySetAsSeries(xBuffer_Time,true);    
//---   Возвращает количество элементов указанного массива. 
   SIZE= ArraySize (xBuffer_Time);
   if (SIZE>= 0 ) Print ( "Размер массива: " ,SIZE);
   else Print ( "Ошибка. Массив не создан " ,SIZE);        
   ArrayInitialize (xBuffer_Time, 0 );
   return ( 0 );
  }  
//+------------------------------------------------------------------+
int start()
  {  
   //ArrayResize(ValueArr,size);
   //ValueArr[size-1] = GetValue();
   //size++; 
 //----------------------------------------  
   ArrayResize (xBuffer_Time,SIZE);
   xBuffer_Time[SIZE- 1 ] = Bid; //NormalizeDouble((iTime (_Symbol,1,0)-_start), 2); 
   SIZE ++;
   Print ( " Значение xBuffer_Time[SIZE-1] = " , DoubleToStr(xBuffer_Time[SIZE- 1 ], Digits ) );
   Print ( " Значение SIZE = " , DoubleToStr(SIZE, 2 ) );  
 //---------------------------------------      
//------------
   return ( 0 );
  }

 

Sorun çözüldü. Kim kullanmalı.

Dinamik bir diziye nasıl veri yazılır?

 //---------------------
extern int MaxDrawTicks= 100 ;
extern int Num_Aver_of_Ticks= 5 ;  
double      xBuffer_Time []; // Массив значений   динамический
                             // В котором индекс - номер тика, значение - это бид 
int SIZE= 0 ;                 // Вспомогательная переменная для массива                                  
int tickCounter, tickCounter_Current; 
//+------------------------------------------------------------------+
int init()
  {   
//--- устанавливаем размер динамического массива
   if ( ArrayResize (xBuffer_Time, 2000000 )< 0 ) { Alert ( " Ошибка в изменении размера массива времени поступления тиков " ); return ( false );}
//--- установим индексацию для буфера как в таймсерии для динамического массива
   // ArraySetAsSeries(xBuffer_Time,true);    
//---   Возвращает количество элементов указанного массива. 
   int S= ArraySize (xBuffer_Time);
   if (S>= 0 ) Alert ( "Размер массива: " ,S);
   else Print ( "Ошибка. Массив не создан " ,S);        
   ArrayInitialize (xBuffer_Time, 0 );
   return ( 0 );
  }  
//+------------------------------------------------------------------+
int start()
  {  
   //ArrayResize(ValueArr,size);
   //ValueArr[size-1] = GetValue();
   //size++; 
 //----------------------------------------  
   ArrayResize (xBuffer_Time,SIZE);
   xBuffer_Time[SIZE- 1 ] = Bid; //NormalizeDouble((iTime (_Symbol,1,0)-_start), 2); 
  
   if ( SIZE >= 0 && ArraySize (xBuffer_Time) < 2147483647 )
      {
       Alert ( " Значение xBuffer_Time[SIZE-1] = " , DoubleToStr(xBuffer_Time[SIZE- 1 ], Digits ) );
       Alert ( " Значение SIZE = " , DoubleToStr(SIZE, 2 ) );  
      } 
    SIZE ++;   
 //---------------------------------------      
//------------
   return ( 0 );
  }
 

Merhaba, Renko grafiği "RenkoLiveChart_v4.13.mq4" üzerinde işlem yapıyorum

Çevrimdışı bir grafikte bir danışman aracılığıyla bir ticaret başlatamıyorum veya açamıyorum.

 
Top2n :

Merhaba, Renko grafiği "RenkoLiveChart_v4.13.mq4" üzerinde işlem yapıyorum

Çevrimdışı bir grafikte bir danışman aracılığıyla bir ticaret başlatamıyorum veya açamıyorum.

Çevrimdışı grafiklerde, keneleri taklit etmek gerekir, terminal onlara yeni bir kene geldiğine dair bir sinyal göndermez.

Örneğin, bu komut dosyasında şöyle:

 #include <WinUser32.mqh>

#import "user32.dll"


//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
    int whdl=WindowHandle ( Symbol (), Period ());    
        while (! IsStopped ())
         {
                PostMessageW (whdl, WM_COMMAND, 33324 , 0 );
                Sleep ( 100 );
         }
         return ( 0 );
}
 
Hepinize teşekkürler - neler olduğunu anladım.
 
_Roman :

Sorun çözüldü. Kim kullanmalı.

Dinamik bir diziye veri nasıl yazılır.


Teşekkür ederim! Benim için bu karanlık bir orman, orman masifi, kesim vb. ;)
 
evillive :

Çevrimdışı grafiklerde, keneleri taklit etmek gerekir, terminal onlara yeni bir kene geldiğine dair bir sinyal göndermez.

Örneğin, bu komut dosyasında şöyle:

Başka öneriniz var mı?

Komut dosyasını çevrimdışı grafiğe bağlarım, terminal donar. Belki kodu robota bağlayabilirsiniz, ardından #import "user32.dll" ile ne yapabilirsiniz?

 

Merhaba. Bana yardım et lütfen. Bir EA yazmak istedim: Açık fırsatlar yoksa ve ilk çubuğun açılış fiyatı birinci çubuğun kapanış fiyatından düşükse ve ikinci çubuğun açılış fiyatı ikinci çubuğun kapanış fiyatından düşükse, sonra bir anlaşma açıyoruz... Ama test cihazındaki EA, birbiri ardına anlaşmalar açmaya başlıyor, neyin yanlış olduğunu anlayamıyorum. TEŞEKKÜR.


 int init;

int start()
{

int bar1;
int bar2;
int    stoploss= 100 ; 
int    takeprofit= 100 ;
int        slipage= 2 ;
int total;
//-------------------------------------------------------------------+
  
   if ( OrdersTotal ()< 1 &&  Open[bar1]>Close[bar1] && Open[bar2]>Close[bar2])
    
     { OrderSend ( "EURUSD" ,OP_BUY, 0.1 ,Ask,slipage,Ask-stoploss* Point ,Ask+takeprofit* Point , "" , 123 , 0 ,Red);}
     
     //-------------------------------------------------------------------+  
     
                   
 
 return ;}
 
rylay :

Merhaba. Bana yardım et lütfen. Bir EA yazmak istedim: Açık fırsatlar yoksa ve ilk çubuğun açılış fiyatı birinci çubuğun kapanış fiyatından düşükse ve ikinci çubuğun açılış fiyatı ikinci çubuğun kapanış fiyatından düşükse, sonra bir anlaşma açıyoruz... Ama test cihazındaki EA, birbiri ardına anlaşmalar açmaya başlıyor, neyin yanlış olduğunu anlayamıyorum. TEŞEKKÜR.


 int init;

int start()
{

int bar1;
int bar2;
int    stoploss= 100 ; 
int    takeprofit= 100 ;
int        slipage= 2 ;
int total,ticket;

//-------------------------------------------------------------------+
  
   if ( OrdersTotal ()< 1 &&  Open[bar1]>Close[bar1] && Open[bar2]>Close[bar2])
       if (V1()== true ) 
     {
       ticket = OrderSend ( "EURUSD" ,OP_BUY, 0.1 ,Ask,slipage,Ask-stoploss* Point ,Ask+takeprofit* Point , "" , 123 , 0 ,Red);
      }
     
     //-------------------------------------------------------------------+                     
 return ;}
//+------------------------------------------------------------------+
bool V1(){
   int       i, k= OrdersTotal ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
     if (OrderType()==OP_BUY) {
       return ( false );
   }
  }    
 }
 return ( true ); 
}

bool V2(){
   int       i, k= OrdersTotal ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
     if (OrderType()==OP_SELL) {
       return ( false );
   }
  }
 }
 return ( true ); 
}