Non riesco a capire perché il programma salta le linee dopo una linea precedente di successo e ignora le istruzioni su quelle linee.
Se guardate il codice qui sotto vedrete che c'è una transazione Sell che viene eseguita con successo nello Strategy Tester, ma la transazione Sell non viene mai registrata nel Journal e anche le linee di codice dopo l'OrderSend vengono ignorate e non registrate nel Journal.
Cosa sta succedendo?
ernest02,
Forse questo ti sarà utile?
Print("Error description",GetLastError());
Grazie.
Grazie ragazzi.... ma...
La strategia Tester mostra diverse transazioni Sell - - e ho una routine di errore in caso di errore nella transazione (codice mostrato sotto) ma non ci sono errori riportati.
// 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); }
Grazie ragazzi.... ma...
La strategia Tester mostra diverse transazioni Sell - - e ho una routine di errore in caso di errore nella transazione (codice mostrato sotto) ma non ci sono errori riportati.
SellTicket è un intero.
Qui c'è altro codice:
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,
Non capisco cosa sta causando l'errore di cui parli, ma potresti considerare di riscrivere il tuo codice in modo tale che l'errore non esista.
Detto questo, se tu potessi postare una descrizione dell'azione che desideri che il tuo EA esegua, sarebbe più facile per me (e/o altri) fornirti una soluzione.
Invece di cercare di isolare l'errore, se l'errore costa troppo tempo per trovarlo, considera di riscrivere il codice per rimuovere l'errore. Dipende completamente da voi. Spero che questo sia utile.
Grazie.
SellTicket è un intero.
Qui c'è altro codice:
Grazie . . . solo per essere chiari su ciò che dovrebbe accadere se il Sell ha funzionato . . .
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
Questo è ciò che è così strano!
Lo Strategy Tester registra molte transazioni di vendita ma non viene mostrato nulla nel Journal.
Ho intenzione di lavorare di nuovo sul codice dall'inizio, fare alcune modifiche e vedere cosa succede.
Grazie per tutto l'aiuto ragazzi. Molto apprezzato.
(Se trovo la causa dell'errore lo comunicherò - altrimenti riscriverò semplicemente il codice).
Questo è ciò che è così strano!
Lo Strategy Tester registra molte transazioni di vendita ma non viene mostrato nulla nel Journal.
Ho intenzione di lavorare di nuovo sul codice dall'inizio, fare alcune modifiche e vedere cosa succede.
Grazie per tutto l'aiuto ragazzi. Molto apprezzato.
(Se trovo la causa dell'errore lo comunicherò - altrimenti riscriverò semplicemente il codice).
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Non riesco a capire perché il programma salta le linee dopo una linea precedente di successo e ignora le istruzioni su quelle linee.
Se guardate il codice qui sotto vedrete che c'è una transazione Sell che viene eseguita con successo nello Strategy Tester, ma la transazione Sell non viene mai registrata nel Journal e anche le linee di codice dopo l'OrderSend vengono ignorate e non registrate nel Journal.
Cosa sta succedendo?
(Ho qualche problema con i dati come si può vedere da una delle tante righe: 2012.12.31 11:21:27 TestGenerator: unmatched data error (volume limit 2430 at 2012.11.05 06:00 exceeded))
Ecco il frammento di codice a cui mi riferisco: