Je ne comprends pas pourquoi le programme saute les lignes après une ligne précédente réussie et ignore les instructions de ces lignes.
Si vous regardez le code ci-dessous, vous verrez qu'il y a une transaction de vente qui est exécutée avec succès dans le testeur de stratégie, mais la transaction de vente n'est jamais enregistrée dans le journal et les lignes de code après l'envoi d'ordre sont également ignorées et ne sont pas non plus enregistrées dans le journal.
Que se passe-t-il ?
ernest02,
Peut-être cela vous sera-t-il utile ?
Print("Error description",GetLastError());
Merci.
Merci les gars....mais...
Le testeur de stratégie montre plusieurs transactions de vente - - et je dispose d'une routine d'erreur en cas d'erreur dans la transaction (code ci-dessous) mais aucune erreur n'est signalée.
// 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); }
Merci les gars....mais...
Le testeur de stratégie montre plusieurs transactions de vente - - et je dispose d'une routine d'erreur en cas d'erreur dans la transaction (code ci-dessous) mais aucune erreur n'est signalée.
SellTicket est un Integer.
Voici la suite du code :
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,
Je ne comprends pas ce qui cause l'erreur dont vous parlez mais vous pourriez envisager de réécrire votre code de manière à ce que l'erreur n'existe pas.
Ceci dit, si vous pouviez poster une description de l'action que vous souhaitez que votre EA effectue, il serait plus facile pour moi (et/ou d'autres) de vous fournir une solution.
Au lieu d'essayer d'isoler l'erreur, si l'erreur coûte trop de temps à trouver, envisagez de réécrire le code pour supprimer l'erreur. C'est vous qui décidez. J'espère que cela vous sera utile.
Merci.
SellTicket est un Integer.
Voici la suite du code :
Merci. . juste pour être clair sur ce qui devrait se passer si la vente fonctionne... .
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
C'est ce qui est si étrange !
Le testeur de stratégie enregistre de nombreuses transactions de vente mais rien n'apparaît dans le journal.
Je vais retravailler le code depuis le début, apporter quelques modifications et voir ce qui se passe.
Merci pour votre aide. J'apprécie beaucoup.
(Si je trouve la cause de l'erreur, je ferai un rapport - sinon, je vais simplement réécrire le code).
C'est ce qui est si étrange !
Le testeur de stratégie enregistre de nombreuses transactions de vente mais rien n'apparaît dans le journal.
Je vais retravailler le code depuis le début, apporter quelques modifications et voir ce qui se passe.
Merci pour votre aide. J'apprécie beaucoup.
(Si je trouve la cause de l'erreur, je ferai un rapport - sinon je réécrirai simplement le code).
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Je ne comprends pas pourquoi le programme saute les lignes après une ligne précédente réussie et ignore les instructions de ces lignes.
Si vous regardez le code ci-dessous, vous verrez qu'il y a une transaction de vente qui est exécutée avec succès dans le testeur de stratégie, mais la transaction de vente n'est jamais enregistrée dans le journal et les lignes de code après l'envoi de l'ordre sont également ignorées et ne sont pas non plus enregistrées dans le journal.
Que se passe-t-il ?
(J'ai effectivement quelques problèmes avec les données comme on peut le voir sur l'une des nombreuses lignes : 2012.12.31 11:21:27 TestGenerator : unmatched data error (volume limit 2430 at 2012.11.05 06:00 exceeded))
Voici le bout de code auquel je fais référence :