TesterStop

Test etme sırasında program operasyonu tamamlanma komutunu verir.

void  TesterStop();

Geri dönüş değeri

Geri dönüş değeri yok.

Not

The TesterStop() fonksiyonu bir test temsilcisi üzerinde bir uzman danışmanın rutin erken kapanması için tasarlanmıştır – örneğin, belirli bir sayıdaki kayıp alım-satım işlemine veya önceden belirlenmiş bir zarar seviyesine ulaştığında.

TesterStop() çağrısı bir testin normal tamamlanması olarak kabul edilir, bu nedenle OnTester() fonksiyonu çağrılır ve birikmiş tüm alım-satım istatistikleri ve optimizasyon kriter değeri strateji sınayıcısına sunulur.

Strateji sınayıcısında ExpertRemove() un çağrılması da normal test tamamlanması anlamına gelir ve alım-satım istatistiklerini elde etmeyi sağlar, ancak burada uzman danışman temsilcinin hafızasından kaldırılır. Bu durumda, bir sonraki parametre setindeki geçişi tamamlamak için programı yeniden yüklemek zaman alacaktır. Bu nedenle, bir testin erken rutin tamamlanması için TesterStop() kullanılması tercih edilen bir seçenektir.

 

Örnek:

//--- tanımlar
#define BALANCE_LOSS_STOP  100.0       // testin durdurulduğu bakiye düşüşünün değeri
#define EQUITY_LOSS_STOP   100.0       // testin durdurulduğu varlık düşüşünün değeri
 
//--- girdi parametreleri
input  double  InpLots        =  0.1;  // Lot
input  uint    InpStopLoss    =  50;   // Puan cinsinden Zararı Durdur
input  uint    InpTakeProfit  =  150;  // Puan cinsinden Kârı Al
sinput ulong   InpMagic       =  123;  // Sihirli sayı
sinput ulong   InpDeviation   =  5;    // Sapma
//--- global değişkenler
CTrade      trade;                     // işlem sınıfı örneği
CSymbolInfo symb;                      // sembol sınıfı örneği
CAccountInfo account;                  // işlem hesabı sınıfı örneği
...
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ...
//--- başarılı başlatma
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- mevcut fiyatları güncelle
   if(!symb.RefreshRates())
      return;
   ...
 
//--- bakiye veya varlık BALANCE_LOSS_STOP ve EQUITY_LOSS_STOP makro ikamelerinde belirtilenden daha fazla düşmüşse,
//--- test başarısız olarak kabul edilir ve TesterStop() fonksiyonu çağrılır
//--- BALANCE_LOSS_STOP değerinden daha fazla bakiye kaybı olup olmadığını kontrol et
   if(balance_prev!=account.Balance())
     {
      if(account.Balance()<balance_prev-BALANCE_LOSS_STOP)
        {
         PrintFormat("The initial balance of %.2f %s decreased by %.2f %s, and now has a value of %.2f %s. Stop testing.",balance_prev,account.Currency(),balance_prev-account.Balance(),account.Currency(),account.Balance(),account.Currency());
         TesterStop();
         /*
        Sonuç:
         The initial balance of 10000.00 USD decreased by 100.10 USDand now has a value of 9899.90 USDStop testing.
         TesterStop() called on 9of testing interval
         */
        }
     }
//--- EQUITY_LOSS_STOP değerinden daha fazla varlık kaybı olup olmadığını kontrol et
   if(equity_prev!=account.Equity())
     {
      if(account.Equity()<equity_prev-EQUITY_LOSS_STOP)
        {
         PrintFormat("The initial equity of %.2f %s decreased by %.2f %s, and now has a value of %.2f %s. Stop testing.",equity_prev,account.Currency(),equity_prev-account.Equity(),account.Currency(),account.Equity(),account.Currency());
         TesterStop();
         /*
        Sonuç:
         The initial equity of 10000.00 USD decreased by 100.10 USDand now has a value of 9899.90 USDStop testing.
         TesterStop() called on 9of testing interval
         */
        }
     }
  }

Ayrıca bakınız

Program Yürütme, Alım-Satım Stratejilerini Sınama, ExpertRemove, SetReturnError