Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 65

 

Hepinize iyi günler! Herhangi biriniz böyle bir sorunla karşılaştınız mı: gerçek hayatta trol çalışıyor, ancak test cihazında çalışmıyor. Genel olarak, böyle bir şeyim var - test cihazında, danışmanın zararı durdurması gerektiğinde - bu olmaz, ancak zaman zaman ayarlar, ancak doğal olarak herhangi bir kalıp bulamadım, testlerin doğruluğu bu nedenle önemli ölçüde zarar görür. Bir demo depozitosundaki aynı danışman, yolun çalıştığını gösteriyor. Aynı zamanda, terminal herhangi bir hata bildirmez. Bu koddaki bir hata mı yoksa bir terminal hatası mı? Anlamama yardım et? Zaten tüm koda dokundum ve sorunun ne olduğunu anlayamıyorum, trol stratejisini değiştirmek istemem. Danışmanın tam kodunu ekliyorum ve aşağıdaki kodun kendisi aşağıdadır ( Yuri Dzyuban'ın mum gölgesi tarafından biraz değiştirilmiş sonda)

 void TrailingByShadows( int ticket, int tmfrm, int bars_n, int indent) {  
   int i;
   double new_extremum;

   if ((bars_n< 1 ) || (indent< 0 ) || (ticket== 0 ) || ((tmfrm!= 1 ) && (tmfrm!= 5 ) && (tmfrm!= 15 ) && (tmfrm!= 30 ) && (tmfrm!= 60 ) && (tmfrm!= 240 ) && (tmfrm!= 1440 ) && (tmfrm!= 10080 ) && (tmfrm!= 43200 )) || (! OrderSelect (ticket,SELECT_BY_TICKET))) {
       Print ( "Трейлинг функцией TrailingByShadows() невозможен из-за некорректности значений переданных ей аргументов." );
       return ( 0 );
   } 
   if (OrderType()==OP_BUY) {
       for (i= 1 ;i<=bars_n;i++) {
         if (i== 1 ) new_extremum = iLow( Symbol (),tmfrm,i); else if (new_extremum>iLow( Symbol (),tmfrm,i)) new_extremum = iLow( Symbol (),tmfrm,i);
      }  
  
       if ((((new_extremum - indent* Point )>OrderStopLoss() + 1.0 * Point ) || (OrderStopLoss()== 0 )) && ((new_extremum - indent* Point )>OrderOpenPrice()) && (new_extremum - indent* Point <Bid-MarketInfo( Symbol (),MODE_STOPLEVEL)* Point ) && (getLots(new_extremum) > 0 ))
       if (!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent* Point ,OrderTakeProfit(),OrderExpiration()))
         Print ( "Не удалось модифицировать ордер №" ,OrderTicket(), ". Ошибка: " , GetLastError ());
   }
   if (OrderType()==OP_SELL) {
       for (i= 1 ;i<=bars_n;i++) {
         if (i== 1 ) new_extremum = iHigh( Symbol (),tmfrm,i); else if (new_extremum<iHigh( Symbol (),tmfrm,i)) new_extremum = iHigh( Symbol (),tmfrm,i);
      }         
       if ((((new_extremum + (indent + MarketInfo( Symbol (),MODE_SPREAD))* Point )<OrderStopLoss() - 1.0 * Point ) || (OrderStopLoss()== 0 )) && ((new_extremum + (indent + MarketInfo( Symbol (),MODE_SPREAD))* Point )<OrderOpenPrice()) && (new_extremum + (indent + MarketInfo( Symbol (),MODE_SPREAD))* Point >Ask+MarketInfo( Symbol (),MODE_STOPLEVEL)* Point ) && (getLots(new_extremum) > 0 ))
       if (!OrderModify(ticket,OrderOpenPrice(),new_extremum + (indent + MarketInfo( Symbol (),MODE_SPREAD))* Point ,OrderTakeProfit(),OrderExpiration()))
         Print ( "Не удалось модифицировать ордер №" ,OrderTicket(), ". Ошибка: " , GetLastError ());     
   }      
}

double getLots( double newSL) {
   int opnTime = 0 ; // время открытия трейда для цикла пересчета позиций
   double lotSum = 0 ; 
   for ( int i = 0 ; i <= OrdersTotal ()- 1 ; i++) {
       OrderSelect (i, SELECT_BY_POS);     
       if ((OrderOpenTime() > opnTime) && (OrderType() == OP_BUY) || (OrderType() == OP_SELL)) { 
         opnTime = OrderOpenTime(); 
         if (OrderType() == OP_BUY)    { lotSum += OrderLots() * (newSL - OrderOpenPrice()) / Point ; }
         if (OrderType() == OP_SELL)   { lotSum -= OrderLots() * (newSL - OrderOpenPrice()) / Point ; }
      }
   }   
   return (lotSum);
}
Dosyalar:
avalanche.mq4  12 kb
 
Hangi zaman diliminde ve hangi kalitede test yapıyorsunuz?
 

EURUSD, M1, %99, %90

İlk olarak, MT kullanılarak indirilen testler için standart kene geçmişini kullandım, bu sorun keşfedildi ve ayrıca alıntı geçmişindeki açıklanamayan boşluklar ve Tick Data Suite'e geçtim, Dukascopy ile teklif yükledim, kalite 90'dan yükseldi 99, ancak sorun devam etti.

Not: Belki gerçek hayatta da durum aynıdır ya da yeterince uzun süre (yaklaşık 3 hafta) test yapmadım, bu süre zarfında birkaç kez manuel olarak kapatmak zorunda kaldım. trol kurulmadı, ama bunun nedeni terminalli makinenin periyodik olarak kapatılması gerektiğini düşündüm ve bu bir şekilde danışmanın işini etkiledi, en son bu davayı belki bir hafta önce VPS'ye aktardım ve şimdi aynı durum yaklaşıyor gibi görünüyor

 

ve test, tmfrm değişkeninin değerine eşit olan veya olmayan bir zaman çerçevesinde gerçekleştirilir?

değilse, tmfrm zaman çerçevesi için bir geçmiş olduğundan emin olmalısınız.

ve bar_n değişkeninde aktarılan tankların sayısı, tmfrm değişkeninde aktarılan zaman çerçevesine karşılık geliyor mu?

 
keekkenen :

ve test, tmfrm değişkeninin değerine eşit olan veya olmayan bir zaman çerçevesinde gerçekleştirilir?

değilse, tmfrm zaman çerçevesi için bir geçmiş olduğundan emin olmalısınız.

ve bar_n değişkeninde aktarılan tankların sayısı, tmfrm değişkeninde aktarılan zaman çerçevesine karşılık geliyor mu?


Evet, haklısınız, başka birinin fonksiyonunun kodunu kötülemişsiniz, detaylı incelememişsiniz ve bu parametreyi dikkate almamışsınız. Sonuç olarak, stop loss farklı bir döneme yerleştirildi. Yardım için teşekkürler.

Not: Her zaman böyledir: küçük bir şey yüzünden kod hiç istediğimiz gibi çalışmıyor.

 

Tünaydın! Bir dergide kırmızı bir tuğla ile ne halt olduğunu kim bilebilir?!

2013.08.05 08:00:41 '9291791': Sinyal - güncelleme sinyali bulunamadı - tabanda 7400

Kodumda her şey yolunda! Hem de sinyallerle! Ve bu ne anlama geliyor?

 
Mepkypuu :


Evet, haklısınız, başka birinin fonksiyonunun kodunu kötülemişsiniz, detaylı incelememişsiniz ve bu parametreyi dikkate almamışsınız. Sonuç olarak, stop loss farklı bir döneme yerleştirildi. Yardım için teşekkürler.

Not: Her zaman böyledir: küçük bir şey yüzünden kod hiç istediğimiz gibi çalışmıyor.


Erken sevinmeye başladım, takip daha doğru çalışmaya başladı, ancak tarihte hala çalışmadığı durumlar var, yani. sorun sadece kısmen çözüldü.
 
splxgf :

yayılmayı düzeltir misin? aksi takdirde, koşular sırasında mevcut olan alınır ve haberlerde ve akşamları gündüz olandan farklıdır.

Yayılmayı nasıl düzeltebilirsin? Gerçekten de, OrderSend'de Ask veya Bid belirtilir.
 
Mepkypuu :

Erken sevinmeye başladım, takip daha doğru çalışmaya başladı, ancak tarihte hala çalışmadığı durumlar var, yani. sorun sadece kısmen çözüldü.

Sürükleme dediğin aslında öyle değil, farklı bir şekilde hesaplanıyor ve davranışı mantıksız olabilir.
 
Leo59 :

Yayılmayı nasıl düzeltebilirsin? Gerçekten de, OrderSend'de Ask veya Bid belirtilir.
TF altındaki test cihazında!