Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 2008

 
elibrarius :
Evet. Eş anlamlılar özelliği, girdi, tahmin edici.
teşekkürler, kelime çarpık olmasına rağmen her zaman "özellikler" olarak vardı
 
Evgeny Dyuka'nın fotoğrafı.
teşekkürler, kelime çarpık olmasına rağmen her zaman "özellikler" olarak vardı

hatta tam tersi...

Bana göre en doğru olanı “işaretler”dir. " Nesnenin özelliklerine göre tanımı ". Ancak eşanlamlılar bir demet doğurdu. ve en iyisi değil

elibrarius :
Evet. Eş anlamlılar özelliği, girdi, tahmin edici.
 
Evgeny Dyuka :
teşekkürler, kelime çarpık olmasına rağmen her zaman "özellikler" olarak vardı

özellikle harf çevirisine aşina değilseniz

 
Maksim Kuznetsov :

çubuk, enstrüman tik tak edene kadar açılmayacaktır. Tika çok uzun bir süre gitmiş olabilir ;-)

Ancak kod, ne yazık ki, bu sorunu tam olarak çözmüyor. Hem OHLC simülasyon modunda hem de "Gerçek tiklere dayalı her tik" de aynı verileri Uzman Danışmanı olmayan bir sembolden almak mümkün olacak şekilde nasıl çözülebileceği hakkında bir fikriniz var mı? Genel olarak, OHLC sırasında senkronizasyon sorununun gecikmeden nasıl çözüleceği hakkında bir fikir var mı? başka bir sembolde henüz çubuk yoksa, önceki çubuk verilerini mi kullanıyoruz? Tüm keneleri kontrol ederseniz, (denememiş olmama rağmen) çubuktaki ilk tik ile ilgili verileri alabilir ve bunu kullanarak senkronizasyondan emin olabilirsiniz, yani. yeni bir çubuk açarken çubuğun mevcut grafikte olup olmadığını bilmek.

 
Alexey Vyazmikin :

Ancak kod, ne yazık ki, bu sorunu tam olarak çözmüyor. Hem OHLC simülasyon modunda hem de "Gerçek tiklere dayalı her tik" de aynı verileri Uzman Danışmanı olmayan bir sembolden almak mümkün olacak şekilde nasıl çözülebileceği hakkında bir fikriniz var mı? Genel olarak, OHLC sırasında senkronizasyon sorununun gecikmeden nasıl çözüleceği hakkında bir fikir var mı? başka bir sembolde henüz çubuk yoksa önceki çubuk verilerini kullanıyor muyuz? Tüm keneleri kontrol ederseniz, (denememiş olmama rağmen) çubuktaki ilk tik ile ilgili verileri alabilir ve bunu kullanarak senkronizasyondan emin olabilirsiniz, yani. yeni bir çubuk açarken çubuğun mevcut grafikte olup olmadığını bilmek.

Birkaç dakikalık çubukları bile atlayabilirler. Bir öncekinin Kapanış fiyatından bir çubuk oluşturun. Birkaç aracın birleşik davranışını analiz etmek için uygundur. Bir para birimi için, muhtemelen önemli değil.
 
elibrarius :
Birkaç dakikalık çubukları bile atlayabilirler. Bir öncekinin Kapanış fiyatından bir çubuk oluşturun. Birkaç aracın birleşik davranışını analiz etmek için uygundur. Bir para birimi için, muhtemelen önemli değil.

Bu yüzden senkronizasyonsuzluk olacak, çünkü OHLC'ye göre son çubuk son olacak ve gerçek ticarette bir önceki yıl olabilir.

 

OHLC optimizasyon modunda, enstrümanların zaman serisinin senkronize olmadığını bilmeyenler için burada bırakacağım - bu MO için kritik öneme sahiptir.


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

MetaTrader 5 platformunun yeni sürümü build 2615: Strateji test cihazında temel analiz ve karmaşık kriterler

Aleksey Vyazmikin , 2020.09.26 13:26


2622 oluşturun, dakika zaman çerçevesi, Si-12.20 aracısı "Açılış" aracı.

" Her tik , gerçek tiklere dayalı" ve "M1'de OHLC" modunda yeni bir çubuk açarken yazdırıyoruz:

 Print ( "Time" , TimeToString ( iTime ( Symbol (), PERIOD_CURRENT , 0 ), TIME_DATE | TIME_MINUTES ), " Time_TOM=" , TimeToString ( iTime ( "USDRUB_TOM" , PERIOD_CURRENT , 0 ), TIME_DATE | TIME_MINUTES ));

Yukarıdaki sonuçlar bir tabloda özetlenmiştir ve bunlarla ilgili sorularım var:

1. Gecikmenin, mevcut enstrümanda zaten yeni bir çubuk belirmişse, ancak bilgi talep ettiğimiz enstrümanda henüz görünmüyorsa olabileceğini umuyordum - bu durum gerçekten oluyor, ancak yalnızca yeni bir günün açılışında - vurgulandı yeşil.

2. Vurgulama yapılmadan, durum ilk paragraftakiyle aynıdır, ancak kene başına testte bu bekleniyorsa, bu durumun neden "OHLC on M1" modunda da meydana geldiği - senkronizasyon bozukluğunun nereden geldiği - belirsizdir. .

3. Sarı renk, iki tik aynı anda geldiğinde veya tik, istenen cihaz için bilginin alındığı cihaza göre daha hızlı geldiğinde durumu vurgular, ancak "OHLC on" da bu çubukta nasıl tik yok? M1" modu, zaten kene modunda gelse bile.

Geliştiricilerden şunu açıklamasını rica ediyorum, amaçlanan buydu, o zaman mantık nedir, yoksa bu düzeltilecek bir hata mı?


Cevap:

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

MetaTrader 5 platformunun yeni sürümü build 2615: Strateji test cihazında temel analiz ve karmaşık kriterler

Renat Fatkhullin , 2020.09.26 13:33

Sorunuz yalnızca OHLC test modu ile ilgili, çünkü kene modunda her şey doğru mu?

O zaman cevap basit - OHLC testi sırasında diğer kişilerin sembollerinin tam senkronizasyonuna dair hiçbir garantiye sahip olamazsınız . OHLC tamamen kirli testler içindir.


 

Başka bir sembolden veri talep ederken senkronizasyon sorununu çözmüş gibi görünüyor - bazı durumlarda bir dakikalık çubukları feda etmek zorunda kaldım, ancak diğer yandan, tüm keneler ve OHLC için modelleme yaparken istikrarlı bir sonuç, yani gerçek ticarette de aynı şey bekleniyor.

 //+------------------------------------------------------------------+
//|Получение информации о ценах OHLC текущего бара                   |
//+------------------------------------------------------------------+
void Get_OHLC( string symbol, ENUM_TIMEFRAMES TF, double &arr_OHLC[])
{
   ArrayResize (arr_OHLC, 4 );
   arr_OHLC[ 0 ]= iOpen (symbol,TF, 0 );
   arr_OHLC[ 3 ]= iOpen (symbol, PERIOD_M1 , 0 );
   datetime s= iTime (symbol,TF, 0 );
   datetime f= iTime (symbol, PERIOD_M1 , 1 );
   datetime Time_1= iTime ( Symbol (), PERIOD_M1 , 1 );

   if (TF!= PERIOD_M1 )
   {
       double arr_High[];
       double arr_Low[];
       int copied= 0 ;
       if ( Symbol ()!=symbol) //Если берем данные с другого символа, то проверяем синхронизацию - нужно, так как при открытии новой свечи на текущем символе данных можнт небыть на опрашиваемом символе
      {
         if (Time_1>f) //На текущем символе открылись раньше появления нового бара на запрашиваемом
         {
            f= iTime (symbol, PERIOD_M1 , 0 );
            arr_OHLC[ 3 ]= iClose (symbol, PERIOD_M1 , 0 );
         }
         else
         {
            arr_OHLC[ 3 ]= iClose (symbol, PERIOD_M1 , 1 );
         }
         if (s>f) //Если текущий бар ТФ открылся раньше, чем минутный бар до которого включительно берем информацию OHLC
         {
            s= iTime (symbol,TF, 1 );
            arr_OHLC[ 0 ]= iOpen (symbol,TF, 1 );
         }
         copied= CopyHigh (symbol, PERIOD_M1 ,s,f,arr_High);
         if (copied> 0 )
         {
            arr_OHLC[ 1 ]=arr_High[ ArrayMaximum (arr_High, 0 , WHOLE_ARRAY )];
         }
         else
         {
             Print ( "Ошибка копирования в массив arr_High" );
         }
         copied= CopyLow (symbol, PERIOD_M1 ,s,f,arr_Low);
         if (copied> 0 )
         {
            arr_OHLC[ 2 ]=arr_Low[ ArrayMinimum (arr_Low, 0 , WHOLE_ARRAY )];
         }
         else
         {
             Print ( "Ошибка копирования в массив arr_Low" );
         }

      }
       else
      {
         if (s<f)
         {
            copied= CopyHigh (symbol, PERIOD_M1 ,s,f,arr_High);
             if (copied> 0 )
            {
               arr_OHLC[ 1 ]=arr_High[ ArrayMaximum (arr_High, 0 , WHOLE_ARRAY )];
            }
             else
            {
               Print ( "Ошибка копирования в массив arr_High" );
            }
            copied= CopyLow (symbol, PERIOD_M1 ,s,f,arr_Low);
             if (copied> 0 )
            {
               arr_OHLC[ 2 ]=arr_Low[ ArrayMinimum (arr_Low, 0 , WHOLE_ARRAY )];
            }
             else
            {
               Print ( "Ошибка копирования в массив arr_Low" );
            }
         }
         else
         {
             if (s==f) //Если ТФ открылся на прошлом минутном баре
            {
               arr_OHLC[ 1 ]= iHigh (symbol, PERIOD_M1 , 1 );
               arr_OHLC[ 2 ]= iLow (symbol, PERIOD_M1 , 1 );
            }
             if (s>f) //Если ТФ открылся на текущем минутном баре
            {
               arr_OHLC[ 1 ]= iOpen (symbol, PERIOD_M1 , 0 );
               arr_OHLC[ 2 ]= iOpen (symbol, PERIOD_M1 , 0 );
            }
         }
      }
   }
   else
   {
      arr_OHLC[ 0 ]= iOpen (symbol, PERIOD_M1 , 0 );
      arr_OHLC[ 1 ]= iOpen (symbol, PERIOD_M1 , 0 );
      arr_OHLC[ 2 ]= iOpen (symbol, PERIOD_M1 , 0 );
      arr_OHLC[ 3 ]= iOpen (symbol, PERIOD_M1 , 0 );
       if ( Symbol ()!=symbol)
      {
         if (Time_1> iTime (symbol, PERIOD_M1 , 1 )) //Если не появился новый бар
         {
            arr_OHLC[ 0 ]= iOpen (symbol, PERIOD_M1 , 0 );
            arr_OHLC[ 1 ]= iHigh (symbol, PERIOD_M1 , 0 );
            arr_OHLC[ 2 ]= iLow (symbol, PERIOD_M1 , 0 );
            arr_OHLC[ 3 ]= iClose (symbol, PERIOD_M1 , 0 );
         }
         else //Если появился новый бар
         {
            arr_OHLC[ 0 ]= iOpen (symbol, PERIOD_M1 , 1 );
            arr_OHLC[ 1 ]= iHigh (symbol, PERIOD_M1 , 1 );
            arr_OHLC[ 2 ]= iLow (symbol, PERIOD_M1 , 1 );
            arr_OHLC[ 3 ]= iClose (symbol, PERIOD_M1 , 1 );
         }
      }
   }
}
 
Normal bir sağlam algoritma için, küçük bir eşitleme bozukluğu hiçbir şeyi etkilemez. yapmacık problemler)
 
Maksim Dmitrievski :
Normal bir sağlam algoritma için, küçük bir eşitleme bozukluğu hiçbir şeyi etkilemez. yapmacık problemler)

Bu "normal" olanları nereden alabilirim!? Etkileyip etkilemediği - rastgeledir, niceleme sırasında nicelikler arasındaki sınıra ulaşırsanız, eğitim sırasında sadece 1 niceliklik bir farkın gerçek hayatta girdiyi atlamanıza neden olacağı ortaya çıkabilir. Genel olarak, kapalı günün ticaretini test cihazında yeniden üretememekten hoşlanmıyorum, bu yüzden nedenini belirledim ve düzeltmeye başladım.