Doğru araçların bazı işaretleri - sayfa 15

 
Nikolai Semko :

Aracınızın çalışması için tüm hikayeye ihtiyacı yoksa size kötü bir haberim var.

Ancak tarihin etkisi derinliğiyle birlikte katlanarak azalır. Bu doğru.

Bu yüzden tarihin logaritmik temsilini kullanıyorum.

Onlar. 20 yıllık geçmişi kullanırsam, bir sonraki haftanın geçmişi, tüm geçmişin boyutunun %80'i kadardır.


Tehdit Yerçekimi ile iyi bir benzetme. Işığın 2,5 milyon yıl yol kat ettiği komşu Andromeda Galaksisi'nin yerçekiminin gezegenimizin yörüngesi üzerinde çok büyük bir etkisi olduğunu biliyor musunuz?

sayılar, sayılar, sayılar:

Dünya, Güneş'in etrafında ~30 km/sn'lik bir hızla dönmektedir.

Güneş, Galaksimizin merkezi etrafında yaklaşık 230 km/sn dönmektedir.

Samanyolu galaksimiz ve Andromeda Nebula galaksimiz ~ 300 km/s hızla birbirlerine doğru ilerliyorlar.

ZYY devam etti ... Hepsi bu kadar değil

Komşu galaksilerle birlikte galaksimiz ~ 500 km/s hızla M83 galaksisine doğru ilerliyor

Toplamda, galaksimiz evrende yaklaşık 1000 km/sn hızla hareket eder.

Uyuşturucu alıyor musun?

 

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

Doğru araçların bazı işaretleri

fxsaber , 2020.03.01 21:56

Yorumlarda, zaman tersine çevrildikten sonra TS'nin davranışı hakkında düşünmek önerildi - keneler ters yönde (gelecekten geçmişe), geri sarma açılmış gibi.

Ayrıca, ters çevirmenin hangi sembollerde TS sonucunu etkilemeyebileceğini ve piyasa modellerinde ciddi bir değişiklik olduğunu okumak da mümkündü.

Neyse ki, forex sembolleri teoride böyle bir zaman değişikliği ile piyasa modellerini yok etmemelidir. Bunu araçlarımdan birinde test etmek istiyordum.


İlk olarak, MQL5'teki kene satırı ters çevirme kodu.

 int TimeDayOfWeek( const datetime Date )
{
   MqlDateTime mTime;
  
   TimeToStruct (Date, mTime);
  
   return (mTime.day_of_week);
}

#define HOUR 3600
#define DAY ( 24 * HOUR)
#define WEEK 7

// https://www.mql5.com/ru/forum/170953/page8#comment_6940794
datetime GetTimeDayOfWeek( const datetime TimeSource, const int Shift = 0 , const ENUM_DAY_OF_WEEK Day = SUNDAY )
{
   const datetime Res = TimeSource / DAY * DAY;
  
   return (Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK) + Shift * WEEK) * DAY);
}

void ReverseTick( MqlTick &Tick, const long &Offset )
{
  Tick.time_msc = Offset - Tick.time_msc;
  Tick.time = ( datetime )(Tick.time_msc / 1000 );
  
   return ;
}

// Инверсирование времени.
void ReverseTicks( MqlTick &Ticks[] )
{
   const int Size = ArraySize (Ticks);
  
   if (Size)
  {
     const long Offset = ( long )(GetTimeDayOfWeek(Ticks[ 0 ].time, 0 , MONDAY ) + GetTimeDayOfWeek(Ticks[Size - 1 ].time, - 1 , SATURDAY )) * 1000 ;

     for ( int i = 0 ; i < Size; i++)
      ReverseTick(Ticks[i], Offset);

     ArrayReverse (Ticks);
  }

   return ;  
}


Bu işleve dayalı olarak, ters çevrilmiş bir sembol oluşturan bir komut dosyası eklenir. Onunla çalışacağız. Sonuçlar böyle.


En iyi Optimize Edici, düz bir sembolü geçer.


Aynı zaman ters çevrilmiş bir sembolde geçer.


Sonuç yok.


Bu sonuç sadece teorik olarak ilgi çekicidir. Yorumlamak zor.

Sembol kodu vardır, böylece herkes dilerse kendi aracını ters bir sembol üzerinde deneyebilir.

 
Алексей Тарабанов :

Uyuşturucu alıyor musun?

Gözlemlerime göre, bu en eğitici forum kullanıcılarından biri. Ve ifadeleri dikkatlice anlıyorsunuz.

 
Uladzimir Izerski :

Gözlemlerime göre, bu en eğitici forum kullanıcılarından biri. Ve ifadeleri dikkatlice anlıyorsunuz.

Sana değil ona sordum.

 
fxsaber :

Bu sonuç sadece teorik olarak ilgi çekicidir. Yorumlamak zor.

Sembol kodu vardır, böylece herkes dilerse kendi aracını ters bir sembol üzerinde deneyebilir.

Simetri kendini güzellikte gösterdi. Olması gereken yol bu. Ve daha önce bir şeyi kanıtlamak istedim. Acı çektim))

 
Алексей Тарабанов :

Sana değil ona sordum.

Boş ve kaba sorular sormaya gerek yok. Kendinizi ancak bu şekilde ayrıştırırsınız.

 
Uladzimir Izerski :

Boş ve kaba sorular sormaya gerek yok. Kendinizi ancak bu şekilde ayrıştırırsınız.

başım belada değil.

 
Алексей Тарабанов :

başım belada değil.

Ayrık daha doğru olacaktır.

 
Nikolai Semko :

...

Doğru TS için, doğru veri yapısı, bunların depolanması ve bunlara erişim için temel gereklidir.

Mevcut olan, doğru TS'yi oluşturmak için çok hantal ve beceriksiz.

Kendiminkini geliştirmek zorunda kaldım ve bence çok daha kullanışlı, daha kompakt ve daha hızlı olduğu ortaya çıktı.

kısaca anlatabilirim.

...

Bundan sonra, kene dizisi de silinebilir ve boyutu 30-40 Mb olan bir veritabanından 1 Mb boyutuna kadar logaritmik olarak sıkıştırılmış bir veritabanı oluştururuz. Bu veritabanı, mevcut andan itibaren sembolün tüm uzun geçmişinin tam bir resmini içerir.

...

Veritabanının "logaritmik sıkıştırması" ile ilgileniyor. Daha fazla olabilir mi?

 
Vladimir :

Veritabanının "logaritmik sıkıştırması" ile ilgileniyor. Daha fazla olabilir mi?

Tam olarak doğru ifade edilmemiş.

Daha doğru olurdu: "logaritmik veri gösterimi ölçeği nedeniyle sıkıştırma"

her şey basit.

İşte böyle bir sistemdeki paketlenmemiş çubuk yapısı:

 struct iRates {
   double     open;
   double     high;
   double     low;
   double     close;
   datetime   open_time;
   datetime   high_time;
   datetime   low_time;
   datetime   close_time;
   int        volume;
};

aynı zamanda, bir çubuğun zaman periyodu dizideki her bir çubuk için farklıdır.

Örneğin, 28000 miktarında bu tür çubukların sonlu bir dizisi vardır.

sıfır çubuğunun zaman periyodu örneğin 1 saniye olacaktır.
1. çubuğun zaman periyodu int(1.00047) = 1 saniye olacaktır.
2. çubuğun zaman aralığı int(1.00047^2) = 1 saniye olacaktır.
3. çubuğun zaman aralığı int(1.00047^3) = 1 saniye olacaktır.
...
1500. çubuğun zaman aralığı int(1.00047^1500) = 2 saniye olacaktır.
...
3000. çubuğun zaman periyodu int(1.00047^3000) = 4 saniye olacaktır.
...
10000. çubuğun zaman aralığı int(1.00047^10000) = 109 saniye = 1 dakika 49 saniye olacaktır.
...
12000. çubuğun zaman periyodu int(1.00047^12000) = 281 saniye = 4 dak 41 saniye olacaktır
...
15000. çubuğun zaman periyodu int(1.00047^15000) = 1150 saniye = 19.21 dakika olacaktır.
...
17000. çubuğun zaman periyodu int(1.00047^17000) = 2945 saniye = 49 dakika olacaktır.
...
20000. çubuğun zaman periyodu int(1.00047^20000) = 12061 saniye =3,35 saat olacaktır.
...
25000. çubuğun zaman aralığı int(1.00047^25000) = 126404 saniye=1.46 gün olacaktır.
...
27999. çubuğun zaman aralığı int(1.00047^27999) = 517331 saniye = 5,99 gün olacaktır.


çubuklar, çubuk başına ortalama 20 bayt büyüklüğünde paketlenmiş biçimde depolanır

hızlı erişim için dizin dizileri toplam boyutun yaklaşık %5'ini alır

onlar. böyle bir veritabanının toplam boyutu 28000*20*1.05 = 588 kB olacaktır.Böyle bir dizi 40-50 yıllık bir geçmişi kapsar.