No puedo entender por qué el programa se salta las líneas después de una línea anterior exitosa e ignora las instrucciones de esas líneas.
Si mira el código de abajo verá que hay una transacción de venta que se lleva a cabo con éxito en el Probador de Estrategias, pero la transacción de venta nunca se registra en el Diario y las líneas de código después del OrderSend también se ignoran y tampoco se registran en el Diario.
¿Qué está pasando?
ernest02,
¿Tal vez esto le sea de utilidad?
Print("Error description",GetLastError());
Gracias.
Gracias chicos....pero...
El probador de estrategias muestra varias transacciones de venta - - y tengo una rutina de error en caso de un error en la transacción (código mostrado abajo) pero no hay errores reportados.
// 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); }
Gracias chicos....pero...
El probador de estrategias muestra varias transacciones de venta - - y tengo una rutina de error en caso de un error en la transacción (código mostrado abajo) pero no hay errores reportados.
SellTicket es un Integer.
Aquí está más del código:
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,
No entiendo qué es lo que está causando el error del que hablas, pero podrías considerar reescribir tu código de tal manera que el error no exista.
Dicho esto, si pudieras publicar una descripción de la acción que deseas que realice tu EA, sería más fácil para mí (y/o para otros) darte una solución.
En lugar de intentar aislar el error, si el error cuesta demasiado tiempo encontrarlo, considere reescribir el código para eliminar el error. Depende completamente de ti. Espero que esto sea útil.
Gracias.
SellTicket es un Integer.
Aquí está más del código:
Gracias . . sólo para tener claro lo que debería pasar si la Venta funcionara . .
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
¡Esto es lo que es tan extraño!
El Probador de Estrategias registra muchas transacciones de Venta pero no se muestra nada en el Diario.
Voy a trabajar a través del código desde el principio de nuevo, hacer algunos cambios y ver qué pasa.
Gracias por toda la ayuda chicos. Se agradece mucho.
(Si encuentro la causa del error, informaré al respecto; de lo contrario, simplemente reescribiré el código).
¡Esto es lo que es tan extraño!
El Probador de Estrategias registra muchas transacciones de Venta pero no se muestra nada en el Diario.
Voy a trabajar a través del código desde el principio de nuevo, hacer algunos cambios y ver qué pasa.
Gracias por toda la ayuda chicos. Se agradece mucho.
(Si encuentro la causa del error, informaré al respecto; de lo contrario, simplemente reescribiré el código).
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
No puedo entender por qué el programa se salta las líneas después de una línea anterior exitosa e ignora las instrucciones de esas líneas.
Si mira el código de abajo verá que hay una transacción de venta que se lleva a cabo con éxito en el Probador de Estrategias, pero la transacción de venta nunca se registra en el Diario y las líneas de código después del OrderSend también se ignoran y tampoco se registran en el Diario.
¿Qué sucede?
(Tengo algunos problemas con los datos como se puede ver en una de las muchas líneas: 2012.12.31 11:21:27 TestGenerator: unmatched data error (volume limit 2430 at 2012.11.05 06:00 exceeded))
Este es el fragmento de código al que me refiero: