OrderSend() işlevinde hata mı var? - sayfa 5

 
Sepulca :

statik %100 çalışır. İşte size bir test:

Ve sonuçlar:


Eh, her şey benim için daha önce çalıştığı gibi çalışıyor ... Değişiklik yok! Yeni bir çubuk açma işlevim bile var:

 bool isNewBar()
   {
       static datetime lastBar;                                   // Задаём переменную для времени открытия последнего бара
       datetime currBar;                                                   // Задаём переменную для времени открытия текущего бара
      currBar = iTime( Symbol (), PERIOD_M1 , 0 );           // Находим время открытия текущего бара
       if (lastBar!=currBar)                                               // Если время открытия последнего бара не равно времени открытия текущего бара, то...
         {
            lastBar=currBar;
             return ( true );
         }
       return ( false );
   }

bu da iyi çalışıyor. Bu nedenle, koduma nit toplama zaten mantıksız hale geldi. Ve soru genel olarak doğruydu. Görünüşe göre test cihazı buggy, bu nedenle okumalar eğri. M5'te bir şekilde daha temiz, M15'te de H1 zaten bir şekilde.

 
hoz :


Eh, her şey benim için daha önce çalıştığı gibi çalışıyor ... Değişiklik yok! Yeni bir çubuk açma işlevim bile var:

bu da iyi çalışıyor. Bu nedenle, koduma nit toplama zaten mantıksız hale geldi. Ve soru genel olarak doğruydu. Görünüşe göre test cihazı buggy, bu yüzden okumalar eğriler. M5'te bir şekilde daha temiz, M15'te de H1 zaten bir şekilde.


Hemen if(lastBar<currBar) yazmanızı tavsiye ederim, ancak bunun herhangi bir şeyi değiştirmesi pek olası değildir. Gönderinizi gözden geçireceğim ve daha fazlasını söyleyebilecek miyim bakacağım.
 
hoz :


Eh, her şey benim için daha önce çalıştığı gibi çalışıyor ... Değişiklik yok! Yeni bir çubuk açma işlevim bile var:

bu da iyi çalışıyor. Bu nedenle, koduma nit toplama zaten mantıksız hale geldi. Ve soru genel olarak doğruydu. Görünüşe göre test cihazı buggy, bu yüzden okumalar eğriler. M5'te bir şekilde daha temiz, M15'te de H1 zaten bir şekilde.



O yardımcı olabilir. start() işleviniz biraz elden geçirildi. Yeterince derine inmedi, ama yine de:

 int start()
{
   fastMa = iMA ( NULL ,i_TF,i_fastMaPeriod, 0 , MODE_EMA ,MODE_CLOSE, 1 );
   slowMa = iMA ( NULL ,i_TF,i_slowMaPeriod, 0 , MODE_EMA ,MODE_CLOSE, 1 );
   
 /*  Print("Bid = ", Bid);
   Print("Ask = ", Ask);
   Print("fastMa = ", fastMa);
   Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
   */
// Отслеживание открытия нового бара
   static datetime lastBarTime = iTime( NULL , 0 , 1 ));     // Время проведения последних рассчётов, изначально принимаем предыдущий бар
   
   if (lastBarTime < iTime( NULL , 0 , 0 ))         // Если случился новый бар
 // Рассчёт сигнала 
    {
     if ( "На этом баре случилось что-то, что вынуждает ждать следуещего бара" )
      {
       .......... // Выполняем действия открытия/закрытия или что-то там ещё...
       lastBarTime = iTime( NULL , 0 , 0 );               // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
      }
     else
      {
       "Ничего не случилось, ждем до следуещего тика"
      }
    }
                                       // .. успешно выполнены
   return ( 0 );
}
 
Sepulca :



O yardımcı olabilir. start() işleviniz biraz elden geçirildi. Yeterince derine inmedi, ama yine de:


Peki, burada hesaplama süresi önceki çubuktan alınır. Bu bir şekilde mantıklı değil. Mevcut bara ihtiyacımız var.
 
PapaYozh :

Şahsen, çalışmayan bir statik ile hiç karşılaşmadım.

Tabloda kontrol etmek isterseniz, burada bir Uzman Danışman örneği verilmiştir:

1. Expert Advisor'ı başlatın.

2. TF'yi değiştirin.

3. cc'nin 20'ye geri dönmediğinden emin olun.

 
hoz :


Eh, her şey benim için daha önce çalıştığı gibi çalışıyor ... Değişiklik yok! Yeni bir çubuk açma işlevim bile var:

bu da iyi çalışıyor. Bu nedenle, koduma nit toplama zaten mantıksız hale geldi. Ve soru genel olarak doğruydu. Görünüşe göre test cihazı buggy, bu yüzden okumalar eğriler. M5'te bir şekilde daha temiz, M15'te de H1 zaten bir şekilde.

Durumunuzla ilgili olarak:

Zaman bir kez başlatıldı - EA başlatıldığında tekrar başlatılmayacaktır, bu nedenle M1'den D1'e geçerken grafiğin yaklaşık bir gün güncellenmesini beklemeniz gerekecek :(

 
tara :

Durumunuzla ilgili olarak:

Zaman bir kez başlatıldı - EA başlatıldığında tekrar başlatılmayacaktır, bu nedenle M1'den D1'e geçerken grafiğin yaklaşık bir gün güncellenmesini beklemeniz gerekecek :(



Uzman Danışman daha sonra belirli bir TF üzerinde çalışır. Neden aniden değiştirmem gereksin ki?
 
tara :

3. cc'nin 20'ye geri dönmediğinden emin olun.

Bu, Uzman Danışmanların belgelenmiş bir özelliğidir.
 
TheXpert :
Bu, Uzman Danışmanların belgelenmiş bir özelliğidir.


O halde Statik nedir? Daha çok Fatalic gibi...


Bu arada, nerede belgeleniyor?

 
hoz :

Uzman Danışman daha sonra belirli bir TF üzerinde çalışır. Neden aniden değiştirmem gereksin ki?

Herhangi bir parametreyi değiştirebilirsiniz. Reaksiyon, yalnızca set TF'deki yeni bir çubuğun ilk işaretinden sonra olacaktır.

Evet, kendiniz şaşırdınız - neden bir danışmanın daha yüksek zaman dilimlerinde çalışması açıklanamaz :)