MA beslemesinin birikiminin tespiti nasıl algoritmalaştırılır? - sayfa 15

 

Soru kaldırıldı, hata şuydu ki Expert Advisor'da yük boşaltırken sınıfa daha fazla kontrol parametresi ekledim!

İyi günler, lütfen söyle bana - neyi yakalamadı?

Verileri .bat'a yüklüyorum, sonra yüklüyorum, ancak yalnızca ilk kayıt atıyor, sonra veriler eşleşmiyor.


Kodun anlamı -

gösterge

- Dosyada varsa yeni veriler ekleyin.

danışman

- Sınıfa veri yükleyin.


Göstergede şöyle yüklüyorum -

 //+------------------------------------------------------------------+
//| Выгружаю данные с файла если он есть                             |
//+------------------------------------------------------------------+
void TextCsv0( int size)
  {
   ArrayFree (cand_buff);
   ArrayResize (cand_buff, 0 );
   long count= FileLoad ( "test.bin" ,cand_buff);
   if (count!=- 1 )
     {
       for ( int i= 0 ; i<count; i++)
         PrintFormat ( "%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u" ,
                     TimeToString (cand_buff[i].time, TIME_DATE | TIME_SECONDS ),
                     cand_buff[i].bar,cand_buff[i].period,cand_buff[i].praceMA);
     }
   TextCsv1(size,( int )count);
  }
//+------------------------------------------------------------------+
//| Загружаю новые данные                                            |
//+------------------------------------------------------------------+
void TextCsv1( int size, int count)
  {
   int _count= 0 ;
   if (count==- 1 ) count= 0 ;
   for ( int i= 0 ; i<size; i++)
       if (TextCsv2(count,i)== true )
        {
         ArrayResize (cand_buff,count+( int )_count+ 1 );
         cand_buff[count+_count].period=Alt[i].period;
         cand_buff[count+_count].bar=Alt[i].bar;
         cand_buff[count+_count].praceMA=Alt[i].praceMA;
         cand_buff[count+_count].time=Alt[i].time;
         cand_buff[count+_count].High=Alt[i].High;
         cand_buff[count+_count].Low=Alt[i].Low;
         cand_buff[count+_count].type=Alt[i].type;
         _count++;
        }
   TextCsv(size,_count,count);
  }
//+------------------------------------------------------------------+
//| Проверка на новые данные                                         |
//+------------------------------------------------------------------+
bool   TextCsv2( long count, int i)
  {
   bool fl= true ;
   for ( int j=( int )count- 1 ; j>= 0 ; j--)
       if (cand_buff[j].period==Alt[i].period)
         if (cand_buff[j].time==Alt[i].time)
             return ( false );
   return ( true );
  }
//+------------------------------------------------------------------+
//| Загрузка                                                         |
//+------------------------------------------------------------------+
void TextCsv( int size, int _count, int count)
  {
//--- откроем файл для записи массива структуры в файл (если его нет, то создастся автоматически)
   ResetLastError ();
   int file_handle= FileOpen ( "test.bin" , FILE_READ | FILE_WRITE | FILE_BIN ); //FileOpen("test "+"//"+_symbol(),FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
   if (file_handle!= INVALID_HANDLE )
     {
       FileSeek (file_handle, 0 , SEEK_END );
       //--- подготовим счетчик количества байт
       uint counter= 0 ;
       //--- в цикле запишем значения массива
       for ( int i= 0 ; i<_count; i++)
         counter+= FileWriteStruct (file_handle,cand_buff[count+i]);
       //  PrintFormat("В файл %s записано %d байт информации",_symbol(),counter);
       PrintFormat ( "Всего байтов: %d * %d * %d = %d, %s" ,size, 4 , 7 ,size* 4 * 7 ,size* 4 * 7 ==counter ? "Верно" : "Ошибка" );
       //--- закрываем файл
       FileClose (file_handle);
       // PrintFormat("Данные записаны, файл %s закрыт",_symbol());
     }
   else
       PrintFormat ( "Не удалось открыть файл %s, Код ошибки = %d" ,_symbol(), GetLastError ());
  }

Danışmanda şöyle boşaltıyorum -

 //+------------------------------------------------------------------+
//| Выгрузка                                                         |
//+------------------------------------------------------------------+
void LoadFail( datetime InpTimeDrawTo)
  {
   ArrayFree (buf0);
   long count= FileLoad ( "test.bin" ,buf0);
   if (count!=- 1 )
     {
       for ( int i= 0 ; i<count; i++)
        {
         PrintFormat ( "%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u" ,
                     TimeToString (buf0[i].time, TIME_DATE | TIME_SECONDS ),
                     buf0[i].bar,buf0[i].period,buf0[i].praceMA,buf0[i].High,buf0[i].Low,buf0[i].type);
        }
     }
  }
 
Keşke evde çalıştırabilmeniz, çevirebilmeniz, alabilmeniz için böyle bir kod yayınlanmış olsaydı ...
 

Merhaba, MA koşum takımlarını tanımanın bir yolunu yapmaya devam ediyorum

Bir çubuktan oluşan bir dizi değer, 400 adet periyot değeri aldım: - sm.d[per-1].m[bar]

Demetleri nasıl tanımlayacağımı düşünmek için XY tablosuna getirdim. bir çubuğun 4. ila 400. MA aralığında

X ekseni - dönem 4-400



Farklılaştırılmış, bu grafiği aldım

Ortaya çıkan yuvarlamanın demetler olduğunu anlıyorum.


Özel bir programla farklılaştırdım ama mql'de yapamıyorum. Birisi bana bunu mql5 kullanarak nasıl yapacağımı söyleyebilir mi?

Bu yuvarlamanın da aralığını belirlemek kolay olmasa da !!! Herhangi bir önerisi olan var mı?

Bu aralık nasıl belirlenir?

ya da bu?


 
Mikhail Toptunov :

Merhaba, MA koşum takımlarını tanımanın bir yolunu yapmaya devam ediyorum

Bir çubuktan oluşan bir dizi değer, 400 adet periyot değeri aldım: - sm.d[per-1].m[bar]

Demetleri nasıl tanımlayacağımı düşünmek için XY tablosuna getirdim. bir çubuğun 4. ila 400. MA aralığında

X ekseni - dönem 4-400



Farklılaştırılmış, bu grafiği aldım

Ortaya çıkan yuvarlamanın demetler olduğunu anlıyorum.


Özel bir programla farklılaştırdım ama mql'de yapamıyorum. Birisi bana bunu mql5 kullanarak nasıl yapacağımı söyleyebilir mi?

Bu yuvarlamanın da aralığını belirlemek kolay olmasa da !!! Herhangi bir önerisi olan var mı?

Bu aralık nasıl belirlenir?

ya da bu?


"farklılaştırılmış" - nasıl olduğunu açıklayabilir misiniz?
 

Bence - sıradan bir diferansiyel denklem (farklılaşma ve entegrasyon)

Türev:1(X),2(Y)

 
Mikhail Toptunov :

Bence - sıradan bir diferansiyel denklem (farklılaşma ve entegrasyon)

Türev:1(X),2(Y)

mesela bir alıntı var

nasıl ayırt edilir?

paket yok, kod?

 
Renat Akhtyamov :

mesela bir alıntı var

nasıl ayırt edilir?

paket yok, kod?

Pardon, bana mı soruyorsunuz?

- Bilmiyorum. NASIL diye kendime sordum.

 
Mikhail Toptunov :

Pardon, bana mı soruyorsunuz?

- Bilmiyorum. NASIL diye kendime sordum.

Evet. ilginç

burada, googled

Zaman serisinin farklılaşması - X(t) serisinden geçiş bir dizi farka X(t) - X(t-1 )

 
Renat Akhtyamov :

Evet. ilginç

burada, googled

Zaman serisinin farklılaşması - X(t) serisinden geçiş bir dizi farka X(t) - X(t-1 )

Anlamıyorum!

 

Sevgili profesyoneller, bu aralık nasıl seçilir?