Hangi durumlarda robot kodunun bir kısmını göstergede tutmak mantıklıdır? - sayfa 33

 

Çok faydalı bir konuşma...

Ve katılımcıların kaynaklarını ve potansiyelini bilerek, kışkırtıcı bir şekilde kenelerin hızını ve "yutkunmasını" ölçmeyi öneriyorum:

1) Danışman

2) 1 milisaniyelik bir komut dosyası sıklığıyla döngülendi

3) türkiye

4) üçüncü taraf DDE alıcısı.

Acemi taraftarlar için - benim gibi, aynı zamanda faydalı olacaktır.

;)

 

Gece bakıyor:

Dosyalar:
experts.zip  1 kb
 

Beş sentimi ekleyeceğim:

Gösterge kodunun tamamen Expert Advisor'a yerleştirildiği Expert Advisor'ların çalışma hızı, özel gösterge çağrılarına sahip emsallerinden genellikle üç kat daha hızlıdır. Bu, çok zor gösterge hesaplamaları olan seçenekler için geçerlidir. Bu hesaplamalar çok kolay ise, o zaman hiçbir fark olmayacaktır. EMA göstergesi, bu tür ölçümlerde kullanılamayacak kadar ilkel bir hesaplamaya sahiptir. Bu sitedeki son makalelerimden birinde, çok zor bir JMA gösterge hesaplamasıyla bir EA'nın varyantlarını bile yayınladım. Gösterge çağrıları olmayan kodlu varyant üç kat daha hızlı çalışır.

Şahsen kimseye bir şey kanıtlamak gibi bir arzum yok, sadece kendi gözlerimle ve bir kereden çok uzaklarda gördüğüm sonuçları belirtiyorum, elbette, böyle şeyleri sonsuza kadar yapmıyorum ve pekala olabilir. MT4'ün son sürümleri bu resim bir şekilde farklı görünmeye başladı. Ve ilk başta MT5'te bile her şey kesinlikle benzerdi. Ancak bu tür detayları takip etmiyorum ve bu nedenle artık her şeyin tamamen aynı kaldığını söyleyemem.

 

GODZILLA :

Bu sitedeki son makalelerimden birinde, çok zor bir JMA gösterge hesaplamasıyla bir EA'nın varyantlarını bile yayınladım. Gösterge çağrıları olmayan kodlu varyant üç kat daha hızlı çalışır.

Burada mı? Sonuç basit, 3 seçenek var:

1. Gösterge çağrıları olmayan kod yanlış yazılmıştır, bu pek olası değildir.

2. Gösterge verimsiz yazılmış.

3. Verilen rakamlar gerçeği yansıtmamaktadır.

 
GODZILLA :

Beş sentimi ekleyeceğim:

Gösterge kodunun tamamen Expert Advisor'a yerleştirildiği Expert Advisor'ların çalışma hızı, özel gösterge çağrılarına sahip emsallerinden genellikle üç kat daha hızlıdır. Bu, çok zor gösterge hesaplamaları olan seçenekler için geçerlidir. Bu hesaplamalar çok kolay ise, o zaman hiçbir fark olmayacaktır. EMA göstergesi, bu tür ölçümlerde kullanılamayacak kadar ilkel bir hesaplamaya sahiptir. Bu sitedeki son makalelerimden birinde, çok zor bir JMA gösterge hesaplamasıyla bir EA'nın varyantlarını bile yayınladım. Gösterge çağrıları olmayan kodlu varyant üç kat daha hızlı çalışır.

Şahsen kimseye bir şey kanıtlamak gibi bir arzum yok, sadece kendi gözlerimle ve bir kereden çok uzaklarda gördüğüm sonuçları belirtiyorum, elbette, böyle şeyleri sonsuza kadar yapmıyorum ve pekala olabilir. MT4'ün son sürümleri bu resim bir şekilde farklı görünmeye başladı. Ve ilk başta MT5'te bile her şey kesinlikle benzerdi. Ancak bu tür detayları takip etmiyorum ve bu nedenle artık her şeyin tamamen aynı kaldığını söyleyemem.


Beni güldürme. Henüz gösterge yazmayı öğrenmediniz.

Bu sapkınlıktan sonra:

 //---- ЭМУЛЯЦИЯ ИНДИКАТОРНЫХ БУФЕРОВ
  int NewSize = iBars(symbol, timeframe);
  //----  Проверка на смену нулевого бара
  if ( ArraySize (Ind_Buffer0) < NewSize)
    {
      //---- Установить прямое направление индексирования в массиве 
      ArraySetAsSeries (Ind_Buffer0, false);
      ArraySetAsSeries (Ind_Buffer1, false);
      ArraySetAsSeries (Ind_Buffer2, false);
      //---- Изменить размер эмулируемых индикаторных буферов 
      ArrayResize (Ind_Buffer0, NewSize); 
      ArrayResize (Ind_Buffer1, NewSize); 
      ArrayResize (Ind_Buffer2, NewSize); 
      //---- Установить обратное направление индексирования в массиве 
      ArraySetAsSeries (Ind_Buffer0, true);
      ArraySetAsSeries (Ind_Buffer1, true);
      ArraySetAsSeries (Ind_Buffer2, true); 
    } 
//----

genellikle bu konudaki görüşlerinden kaçınabilirler.

 

Yanlış anlama #1: IndicatorCounted() Olmadan Yapabilirsiniz

Türkiye onunla:

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

extern double Alpha = 0.9 ;

double EMA[];

int init()
{
   SetIndexBuffer ( 0 , EMA);
   return ( 0 );
}

int start()
{
   int toCount = MathMin ( Bars - 1 , Bars - IndicatorCounted());
   if (toCount == Bars - 1 ) EMA[ Bars - 1 ] = Open[ Bars - 1 ];
   for ( int i = toCount - 1 ; i >= 0 ; i--)
   {
      EMA[i] = ( 1 - Alpha)*Open[i] + Alpha*EMA[i + 1 ];
   }
   return ( 0 );
}

Onsuz , hrenfx ilkesine göre

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow

extern double Alpha = 0.9 ;

double EMABuffer[];

double GetPrice( int Shift )
{
   return (Open[Shift]);
}

double EMA;

int init()
{
   EMA = GetPrice( Bars - 1 );

   SetIndexBuffer ( 0 , EMABuffer);
   return ( 0 );
}

double GetEMA()
{
   static int PrevTime = 0 ;

   if (PrevTime == Time[ 0 ])
       return (EMA);

   int i = iBarShift( Symbol (), Period (), PrevTime) - 1 ;

   PrevTime = Time[ 0 ];
   while (i >= 0 )
   {
      EMA = EMA * Alpha + ( 1 - Alpha) * GetPrice(i);
      EMABuffer[i] = EMA;
      i--;
   }
   return (EMA);
}

void start()
{
  GetEMA();
}

Ardından, hindileri tabloya atıyoruz ve makinenin çalışması sırasında iletişim kaybını taklit ediyoruz. Sonuç:


 

Evet, ben de biraz araştırma yaptım. Tabii ki, aslında, platform geliştiricilerinin saçmalıklarıyla uğraşmak saçma, ama mesele bu değil.

Uzman Danışmanımı bir göstergeye dönüştürdünüz. Tıpkı senin gibi, bir gün önce bir danışmandan gelen bir göstergenin ve sadece bir danışmanın aynı sonuçları göstermesi gerektiğinden emindim, çünkü. her ikisi de bir kene üzerinde "tetik". Ama bir şekilde farklı çalışıyorlar. Bağlantı göründükten sonraki ilk onay işaretindeki EA, EA'dan alınan göstergeden tamamen farklı davranır. Kendiniz kontrol edebilirsiniz.

Yukarıda, bağlantı kesildikten sonra Expert Advisor'ın (Uzman Danışmanın göstergesi değil) iCustom ile karşılaştırıldığını görebileceğiniz ekran görüntüsü verilmiştir. Orada, bağlantı sorunsuz bir şekilde kopuyor.

 

Bağlantı koptuktan sonraki ilk tıklamada göstergenin hemen çalışmadığını varsayıyorum. Daha doğrusu gösterge, IndicatorCounted() işlevinin yürütülmesini bekler. Ve bu işlev (bağlantıya bağlı olarak) birkaç saniyeye kadar yürütülebilir. Onlar. böyle bir şema:

  1. Bağlantı kesildikten sonra ilk onay işareti.
  2. Gösterge başladı.
  3. Bir süredir IndicatorCounted() yürütülüyor (göstergenin gövdesinde IndicatorCounted() mevcut olmasa bile, gösterge başladıktan hemen sonra görünüyor).
  4. Sonucu aldıktan sonra ticaret ortamı güncellenir.
  5. Ve gösterge, sanki ilk tikte değil de IndicatorCounted() sonucundan önceki son tikte başlamış gibi kodunu yürütmeye başlar.

PS 226. yapı üzerinde test ediyorum.

     
    "Hepsi bir arada" Uzman Danışmanların mutlak güvenilirliği için, işlevin en başında EMPTY göstergesinin ve RefreshRates() çağrısının başlatılması gerektiği ortaya çıktı. Bu, geçmişin değiştirilmesini (aradan sonra) ve önceden indirilmiş geçmişe karşılık gelen ilk onay işaretinde EA'nın yürütülmesini garanti edecektir.
     
    hrenfx :
    "Hepsi bir arada" Uzman Danışmanların mutlak güvenilirliği için, işlevin en başında EMPTY göstergesinin ve RefreshRates() çağrısının başlatılması gerektiği ortaya çıktı. Bu, geçmişin değiştirilmesini (aradan sonra) ve zaten indirilmiş geçmişe karşılık gelen ilk onay işaretinde Uzman Danışmanın yürütülmesini garanti edecektir.


    Bu varsayımla ilgili araştırma ve doğrulama yayınlayabilir misiniz?

    hmm... eğer öyleyse ve indirme garantisi veriyorsa, o zaman seçenek çok bile sıfırdır.

    Terminalin ve Expert Advisor'ın başlatıldığı sırada geçmişi takas etme sorununa hiçbir çözüm bulunmayan bir ForexTools şubesi gördüm.


    Neden: