Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1076

 

Buenas tardes, por favor, ayuda con esta pregunta. Tengo un código (descargado en algún lugar de la buena gente) - la esencia del código es la siguiente: si la orden se cierra por una pérdida de la parada, se vuelve a establecer de nuevo con los mismos parámetros. ¡Pero el problema es que si lo ejecuto ahora mismo, el código reinserta todas las órdenes de los periodos pasados, y yo quiero sólo las órdenes que se han cerrado por stoploss por ejemplo sólo para hoy! ¿Qué filtro poner, por favor aconsejar? ¿No sabe cómo obtener la fecha del pedido y compararla con la fecha actual? Gracias.

  1. doble OOP=0,OTP=0,OSL=0,OL=0;
  2. int OT=0;
  3. for (int i=OrdersHistoryTotal()-1; i>=0; i--)
  4. {
  5. if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
  6. {
  7. OT = OrderType();
  8. OSL = NormalizeDouble(OrderStopLoss(),Digits);
  9. si (OT<2)
  10. {
  11. if (NormalizeDouble(OrderClosePrice(),Digits)==OSL)
  12. {
  13. OOP = NormalizeDouble(OrderOpenPrice(),Digits);
  14. //OSL = NormalizeDouble(OrderStopLoss(),Digits);
  15. OTP = NormalizeDouble(OrderTakeProfit(),Digits);
  16. OL = OrderLots();
  17. }
  18. Si no, OOP=0;
  19. romper;
  20. }
  21. }
  22. }
  23. si (OOP!=0)
  24. {
  25. for (i=0; i<OrdersTotal(); i++)
  26. {
  27. if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  28. {
  29. if (OrderSymbol()==Symbol())
  30. {
  31. if (NormalizeDouble(OrderOpenPrice(),Digits) == OOP && OL == OrderLots()) return(0)
  32. }
  33. }
  34. }
  35. si (OT==OP_BUY) OT=OP_BUYLIMIT;
  36. si (OT==OP_SELL) OT=OP_SELLLIMIT;
  37. si (OrderSend(Symbol(),OT,OL,OOP,0,OSL,OTP,NULL,0,0,clrNONE)==-1);

 
rabanik:   Cómo obtener la fecha del pedido y compararla con la fecha actual

¿Está bien? if (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Pero antes de la medianoche, los pedidos del día serán densos, e inmediatamente después de la medianoche, estarán vacíos

RequiredInterval=36000; // 10 horas

¿Es mejor así? si ((TimeCurrent()-OrderCloseTime()) < RequiredInterval) ...

 
LRA:

¿Servirá esto? if (OrderCloseTime() > iTime(Symbol(), PERIOD_D1, 0) ...

Pero antes de la medianoche, los pedidos de hoy serán densos, y justo después de la medianoche, estarán vacíos.

RequiredInterval=36000; // 10 horas

¿Es mejor así? si ((TimeCurrent()-OrderCloseTime()) < RequiredInterval) ...

Muchas gracias. Lo intentaré.
 
chicos, no entiendo qué pasa... al cruzar, tocando la línea de precio, la Alerta no se calla y funciona por cada tick, ¿cómo lo arreglo? ¿cómo hago que pite por un tiempo determinado, o el número de veces?
Archivos adjuntos:
 
Gracias.
 

Ayuda a quien pueda, hay un error en la línea de abajo. Código en mt5.

StringTrimLeft( StringSubstr(ResultSymbols,1,StringLen(StringSubstr(ResultSymbols,0,1))- 1));

 
ara66676: Se produce un error en la cadena. Código en mt5. StringTrimLeft( StringSubstr(ResultSymbols,1,StringLen(StringSubstr(ResultSymbols,0,1))- 1));
Añadida la cadena ResultSymbols="12345"; Compilado sin error. Prueba a dividir
 
LRA:
Añadida la cadena ResultSymbols="12345"; Compilado sin error. Prueba a dividir en partes
gracias, he encontrado la razón, en la quinta MT no se pueden introducir cálculos en la funciónStringTrimLeft( ), es decir, primero hay que declarar una cadena, luego asignarle cálculos y después pasar esta cadena a la función StringTrimLeft()
 
ObjectGetValueByShift es una interpolación ?
 
mario_SC--:   ObjectGetValueByShift es una interpolación, ¿verdad?
Se trata más bien de una extrapolación lineal. La ayuda dice: El valor del precio se calcula mediante una ecuación lineal