hafta sonu akşamı - sayfa 9

 
Aleksey Panfilov :

Üç zaman diliminde bir göstergeden altı tutamaç vardır.

Ve alınan değerin ofseti zaten ayarlanmıştır. Onlardan her seferinde bir değer kopyaladım.

Ancak, üç zaman diliminde bir göstergenin üç tutamağını kullanarak ve olası geçiş aralığını onlardan kopyalayarak kafam karıştı.

Bir seferde birden fazla çubuktan gösterge değeri almanız gerekiyorsa, değerleri bir diziye kopyalamanız gerekir. iATR örneğinde:

 //+------------------------------------------------------------------+
//| Get value of buffers for the iATR                                |
//+------------------------------------------------------------------+
double iATRGet( const int index)
  {
   double ATR[ 1 ];
//--- reset error code 
   ResetLastError ();
//--- fill a part of the iATR array with values from the indicator buffer that has 0 index 
   if ( CopyBuffer (handle_iATR, 0 ,index, 1 ,ATR)< 0 )
     {
       //--- if the copying fails, tell the error code 
       PrintFormat ( "Failed to copy data from the iATR indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated 
       return ( 0.0 );
     }
   return (ATR[ 0 ]);
  }
//+------------------------------------------------------------------+
//| Get value of buffers for the iATR in the array                   |
//+------------------------------------------------------------------+
bool iATRGetArray( const int start_pos, const int count, double &arr_buffer[])
  {
   bool result= true ;
   if (! ArrayIsDynamic (arr_buffer))
     {
       Print ( "This a no dynamic array!" );
       return ( false );
     }
   ArrayFree (arr_buffer);
   int        buffer_num= 0 ;           // indicator buffer number 
//--- reset error code 
   ResetLastError ();
//--- fill a part of the iATRBuffer array with values from the indicator buffer that has 0 index 
   int copied= CopyBuffer (handle_iATR,buffer_num,start_pos,count,arr_buffer);
   if (copied!=count)
     {
       //--- if the copying fails, tell the error code 
       PrintFormat ( "Failed to copy data from the iATR indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated 
       return ( false );
     }
//---
   return (result);
  }
 
Vladimir Karputov :

Bir seferde birden fazla çubuktan gösterge değeri almanız gerekiyorsa, değerleri bir diziye kopyalamanız gerekir. iATR örneğinde:

Evet, hata kopyaladığım dizilerin dinamik kalması gibi görünüyor. :(

kontrol edeceğim.

 
Aleksey Panfilov :

Evet, hata kopyaladığım dizilerin dinamik kalması gibi görünüyor. :(

kontrol edeceğim.

Yalnızca dinamik dizilere kopyalarım! Ve kopyalamadan önce zorla ArrayFree yapıyorum . Statik ile pervazlar vardı. O zamandan beri sadece dinamik.

 
Vladimir Karputov :

Yalnızca dinamik dizilere kopyalarım! Ve kopyalamadan önce zorla ArrayFree yapıyorum . Statik olan söveler vardı. O zamandan beri sadece dinamik.

Anladım. Hata burada değil.

İşte gitmeyen bir uzman.

Dosyalar:
 
Aleksey Panfilov :

Anladım. Hata burada değil.

İşte gitmeyen bir uzman.

HATA: Hâlâ BİR değer mi yoksa İKİ YÜZ mü kopyalıyorsunuz?

   //---  Используя функцию CopyBuffer, мы копируем по 1 последних новых значения индикаторов в динамические массивы

   if ( CopyBuffer (Handle_4P72_L0_1, 0 , 0 , 200 ,line1_L0)< 0    // || CopyBuffer(Handle_4P72_L0_2,0,0,1,line2_L0)<0   || CopyBuffer(SMA_Handle_00,0,0,1,SMA_L0)<0
   || CopyBuffer (Handle_4P72_L1_1, 0 , 0 , 200 ,line1_L1)< 0    // || CopyBuffer(Handle_4P72_L1_2,0,0,1,line2_L1)<0   || CopyBuffer(SMA_Handle_01,0,0,1,SMA_L1)<0
   || CopyBuffer (Handle_4P72_L2_1, 0 , 0 , 200 ,line1_L2)< 0    // || CopyBuffer(Handle_4P72_L2_2,0,0,1,line2_L2)<0   || CopyBuffer(SMA_Handle_02,0,0,1,SMA_L2)<0
   ||   CopyTime ( _Symbol , _Period , 0 , 1 ,New_Time)< 0 )
 
Vladimir Karputov :

HATA: Hâlâ BİR değer mi yoksa İKİ YÜZ mü kopyalıyorsunuz?

Bu Expert Advisor'da (tarihe göre değişir) üç tutamaç ve iki yüz değer denedim.

 

MT5 kapsamındaki değişim için robot yapmaya hazırsanız fikir atmaya başlayabilirim. TS-Lab'deki koşulları simüle ediyorum, ancak bunları otomatik modda MT5'te takas etmek istiyorum.

Testte herhangi bir sorun yoksa alım satım mantığını anlatacağım. İlki muhtemelen bu olacak.

 
Vladimir Karputov :

 

Küçük partilerle başlayacağım.

Mevcut mumun kapanmasına " Sinyal mumunu kapatmadan önce saniyeler" saniyesi kaldığında, mumların ortalama boyutunu " Ortalama mum boyutunu hesaplamak için mum sayısı " hesaplayın. Mevcut mum çubuğu ortalama boyutu " Mevcut mum: fazla vücut boyutu, yüzde " oranında aşarsa - " Lot " hacimli bir pozisyon açın ve " Lot " * " Çarpma faktörü " hacimli bekleyen bir limit emri verin " Bekleyen limit seviyesi: mevcut mumun yüksekliğinin yüzdesi" mesafesindeki pozisyon açılış fiyatı, sinyal mumunun yüksekliğinin yüzdesi olarak.

Doğru görünüyor mu?


Orada ne aldığımı hatırlamak zaman alıyor :) Ve burada, bilerek, taslaklar ve sonuç olarak soğuk algınlığı. Ve kötülük alır ve aynı zamanda komiktir: yazın sıcaklığı yakalamak ve üşütmek için :)

 
Vladimir Karputov :

Orada ne aldığımı hatırlamak zaman alıyor :) Ve burada, bilerek, taslaklar ve sonuç olarak soğuk algınlığı. Ve kötülük alır ve aynı zamanda komiktir: yazın sıcaklığı yakalamak ve üşütmek için :)

Acil şifalar.

 
Vladimir Karputov :

Yalnızca dinamik dizilere kopyalarım! Ve kopyalamadan önce zorla ArrayFree yapıyorum . Statik ile pervazlar vardı. O zamandan beri sadece dinamik.

Hadi ama.. Statik olanlarla da bir derdim yok. Yine de, neden bahsettiğimize bağlı olarak. Hindilerde, evet, tamponu yönetme ve pervazları yakalama arzusu yoksa dinamik olanlar daha iyidir. Ve böylece baykuşlarda aslında hiçbir fark yoktur.