Başarılı bir önceki satırdan sonra programın neden satırları atladığını ve bu satırlardaki talimatları görmezden geldiğini anlayamıyorum.
Aşağıdaki koda bakarsanız, Strategy Tester'da başarıyla gerçekleştirilen bir Satış işlemi olduğunu ancak Satış işleminin hiçbir zaman Journal'a kaydedilmediğini ve OrderSend'den sonraki kod satırlarının da yok sayıldığını ve ayrıca yok sayıldığını göreceksiniz. Dergisi'nde kaydedildi.
Ne oluyor?
ernest02,
Belki bu işinize yarar?
Print ( "Error description" , GetLastError ());
Teşekkür ederim.
Teşekkürler arkadaşlar....ama...
Tester stratejisi birkaç Satış işlemini gösteriyor - - ve işlemde bir hata olması durumunda bir hata rutinim var (aşağıda gösterilen kod), ancak rapor edilen herhangi bir hata yok.
// Error handling if (SellTicket == - 1 ) { ErrorCode = GetLastError (); ErrDesc = ErrorDescription(ErrorCode); ErrAlert = StringConcatenate ( "Open Sell Order - Error " ,ErrorCode, ": " ,ErrDesc); Alert (ErrAlert); ErrLog = StringConcatenate ( "Ask: " ,Ask, " Lots: " ,LotSize, " Price: " ,SellPrice, " Stop: " ,SellStopLoss, " Profit: " ,SellTakeProfit); Print (ErrLog); }
Teşekkürler arkadaşlar....ama...
Tester stratejisi birkaç Satış işlemini gösteriyor - - ve işlemde bir hata olması durumunda bir hata rutinim var (aşağıda gösterilen kod), ancak rapor edilen herhangi bir hata yok.
SellTicket bir Tamsayıdır.
İşte kodun daha fazlası:
if (SellSignal == true && CCIReal < (CCILevel - SellLevel) && TotalSellOrders <= MaxTrans && SellTrans == true ) { Print ( "CCI is " ,CCIReal); for (Count = OrdersTotal ()- 1 ; Count >= 0 ; Count--) if ( OrderSelect (Count, SELECT_BY_POS) && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) { int BuyOrder = OrderTicket(); while (IsTradeContextBusy()) Sleep ( 10 ); bool Closed = OrderClose(BuyOrder, OrderLots(), Bid, UseSlippage, Blue); // Error handling if (Closed == false ) { ErrorCode = GetLastError (); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert = StringConcatenate ( " Close Buy Order Error - Error " ,ErrorCode, ": " ,ErrDesc, " Bid is " , Bid, " SellTakeProfit is " , SellTakeProfit); Alert (ErrAlert); string ErrLog = StringConcatenate ( "OrderTicket: " ,OrderTicket()); Print (ErrLog); } } RefreshRates(); SellPrice = Bid; if (TrailingStopFunc == false ) SellStopLoss = Bid + (StopLoss * UsePoint); else SellStopLoss = 0 ; SellTakeProfit = Bid - (TakeProfit * UsePoint); if (IsTradeContextBusy()) Sleep ( 10 ); SellTicket = OrderSend ( Symbol (),OP_SELL,LotSize,SellPrice,UseSlippage,SellStopLoss,SellTakeProfit, "CCITrendReversal" ,MagicNumber, 0 ,Red); Print ( "SellTicket is " ,SellTicket); if (SellTicket >= 0 ) { PlaySound ( "news.wav" ); SellTime = OrderOpenTime(); SellSignal = false ; } Print ( "SellSignal2 is " , SellSignal); // Error handling if (SellTicket == - 1 ) { ErrorCode = GetLastError (); ErrDesc = ErrorDescription(ErrorCode); ErrAlert = StringConcatenate ( "Open Sell Order - Error " ,ErrorCode, ": " ,ErrDesc); Alert (ErrAlert); ErrLog = StringConcatenate ( "Ask: " ,Ask, " Lots: " ,LotSize, " Price: " ,SellPrice, " Stop: " ,SellStopLoss, " Profit: " ,SellTakeProfit); Print (ErrLog); } }
ernest02,
Bahsettiğiniz hataya neyin neden olduğunu anlamıyorum ama hatanın olmaması için kodunuzu bu şekilde yeniden yazmayı düşünebilirsiniz.
Bununla birlikte , EA'nızın gerçekleştirmesini istediğiniz eylemin bir tanımını yayınlayabilirseniz, benim (ve/veya başkalarının) size bir çözüm sunmam daha kolay olacaktır.
Hatayı izole etmeye çalışmak yerine, hatanın bulunması çok uzun sürüyorsa, hatayı gidermek için kodu yeniden yazmayı düşünün. Tamamen sana kalmış. Umarım bu yararlıdır.
Teşekkür ederim.
SellTicket bir Tamsayıdır.
İşte kodun daha fazlası:
Teşekkür ederim . . . Satış işe yararsa ne olacağı konusunda net olmak için. . .
Print ( "SellTicket is " ,SellTicket); // <--- this will be printed to the journal if (SellTicket >= 0 ) { PlaySound ( "news.wav" ); // <--- PlaySound does not work in the Strategy Tester SellTime = OrderOpenTime(); // <--- if the Sell worked this variable will be set (or do we first need an OrderSelect() ?) SellSignal = false ; // <--- if the Sell worked this variable will be set } Print ( "SellSignal2 is " , SellSignal); // <--- this will be printed to the journal
İşte bu çok garip!
Strateji Test Cihazı birçok Satış işlemini kaydeder ancak Günlükte hiçbir şey gösterilmez.
Kodu baştan tekrar inceleyeceğim, birkaç değişiklik yapacağım ve ne olacağını göreceğim.
Tüm yardımlarınız için teşekkürler arkadaşlar. Çok takdir edildi.
(Hatanın nedenini bulursam geri bildireceğim - aksi takdirde kodu yeniden yazacağım.)
İşte bu çok garip!
Strateji Test Cihazı birçok Satış işlemini kaydeder ancak Günlükte hiçbir şey gösterilmez.
Kodu baştan tekrar inceleyeceğim, birkaç değişiklik yapacağım ve ne olacağını göreceğim.
Tüm yardımlarınız için teşekkürler arkadaşlar. Çok takdir edildi.
(Hatanın nedenini bulursam geri bildireceğim - aksi takdirde kodu yeniden yazacağım.)
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Başarılı bir önceki satırdan sonra programın neden satırları atladığını ve bu satırlardaki talimatları görmezden geldiğini anlayamıyorum.
Aşağıdaki koda bakarsanız, Strategy Tester'da başarıyla gerçekleştirilen bir Satış işlemi olduğunu ancak Satış işleminin hiçbir zaman Journal'a kaydedilmediğini ve OrderSend'den sonraki kod satırlarının da yok sayıldığını ve ayrıca yok sayıldığını göreceksiniz. Dergisi'nde kaydedildi.
Ne oluyor?
(Birçok satırdan birinden görülebileceği gibi verilerle ilgili bazı sorunlarım var: 2012.12.31 11:21:27 TestGenerator: unmatched data error (ses sınırı 2430, 2012.11.05 06:00 aşıldı))
İşte bahsettiğim kod parçası: