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

 
solnce600:

Gracias por tu ayuda. Iré a buscar oxígeno y luego descifraré tus consejos.

Tal vez puedas darme algún consejo más específico, o arreglar un fragmento de mi código.

Así se me quedará grabado en el cerebro y no cometeré los mismos errores.

Gracias.



Para arreglar cualquier parte, hay que escribir un TdR, ¿estás preparado para ello?
 
ALXIMIKS:

Pregunta: ¿Cuál es el último pedido cerrado en el historial de pedidos cuando se selecciona OrderSelect?

1) Cero "0";

2) El último "OrderHystoryTotal -1 "

3) Al azar

4) Depende de la fecha de apertura del pedido (que está más cerca del 1 o del 2 entonces?)

¿Está absolutamente seguro de que así es como se ubican los pedidos en la lista? ¿Qué pasa si la historia se baraja de nuevo en un momento desagradable y las órdenes en ella empiezan a ubicarse de forma diferente? La forma más fiable es encontrar el extremo por el tiempo, no por una suposición hipotética en la cabeza...

Una cosa es hacer un juguete para un probador y otra cosa es trabajar en el mundo real. Que se acostumbre a tener en cuenta todos los posibles escollos que puedan surgir "de repente"...

 
ALXIMIKS:

Pregunta: ¿Cuál es el último pedido cerrado en el historial de pedidos cuando se selecciona OrderSelect?


https://www.mql5.com/ru/forum/131859/page4#434227
 
solnce600:

Le agradecería mucho que explicara lo de "en los dedos" en relación con mi ejemplo.

Donde mi lógica es defectuosa. No entiendo de qué se trata.

Gracias.



si(su_primera_condición)

{

//habrá

// ejecutar

// todos

// estos

// cadenas, sólo si

// su_primera_condición es verdadera

}

// esta línea se ejecutará en cualquier caso



si(su_segunda_condición)

// esta cadena sólo se ejecutará si su_segunda_condición es verdadera

// esta cadena se ejecutará en cualquier caso aunque su_primera_precondición devuelva false

// esta cadena se mantendrá verdadera incluso si su_segunda_condición devuelve falso.


 
Vinin:

Para arreglar cualquier parte, hay que escribir un TdR, ¿estás preparado para ello?
Todavía no.
 
artmedia70:

¿Está absolutamente seguro de que así es como se colocan los pedidos en la lista? ¿Qué pasa si, en algún momento desagradable, la historia se baraja de nuevo y las órdenes de detención comienzan a ordenarse de forma diferente? La forma más fiable es encontrar la última por el tiempo, no por una conjetura hipotética en tu cabeza...

Una cosa es hacer un juguete para un probador y otra muy distinta es trabajar en el mundo real. Que se acostumbre a tener en cuenta todas las cosas posibles que puedan ocurrir "de repente"...


Esta pregunta no es del todo correcta ((

No tiene mucho sentido repasar todas las órdenes cerradas cada vez antes de abrirlas.

¿Qué podemos hacer? Pues bien, los datos de la última orden cerrada deben guardarse en un archivo y actualizarse cuando cambie el número total de órdenes cerradas. (Esto ya representa algún tipo de economía).

¿Y si hay 1000 o 5000 pedidos en el historial? ¿Se limpia alguna vez el historial de pedidos, o siempre se limpia? Si es así, ¿quién lo hace?

He preguntado qué parte de OrderSelect contendrá los últimos pedidos cerrados, ya que aumenta el tiempo necesario para la búsqueda cuando aumenta el historial,

Sólo me gustaría acotar la búsqueda.

 
digits:

Buenas tardes.

Mi estrategia tiene en cuenta el spread, el spread está definido por una función:

Pero como el spread es constante en el probador de estrategias, necesito un emulador de spread aleatorio. Quiero emular los cambios de propagación en el probador en el rango de 2 a 3 puntos (4 dígitos) en el 80% de los casos y más de 3 puntos en el 20% de los casos. Tal vez tengas ideas de cómo implementar esto, o enlaces donde se haya resuelto esta idea.


Probablemente a nadie le interese este tema, pero para que opinen voy a publicar una versión en la que el spread es de sólo 2 o 3 pips.

double Spread_(){
   int compare = 0;
   int MaRand = 0;
   double sp = 0.0;
   double spread = 0.0;
     if (IsTesting() == TRUE){
         MathSrand(OrderTicket() + TimeLocal() / Bid);
         MaRand = MathRand();
         MaRand = MaRand % 2;
         if(MaRand == compare){
         sp = 2.0;
         }else{
         sp = 3.0;
       }
       spread = sp;
    }else{
       RefreshRates();
       spread = MathRound((Ask - Bid) / Point);
     }
   return(spread);
}  

 
digits:

Probablemente a nadie le interese este tema, pero para que opinen voy a publicar una versión en la que la diferencia es de sólo 2 o 3 puntos.


Deberías cambiar tu avatar. Que sea algo neutral. Los enlaces están prohibidos.
 

¡¡¡Hola amigos, ¿alguien puede dar una respuesta clara!!! Análisis técnico+martin

He buscado por toda la red y no he encontrado una respuesta clara, si alguien tiene alguna información, por favor que me lo haga saber.

 
artmedia70:

si(su_primera_condición)

{

// habrá

// ejecutar

// todos

// estos

// cadenas, sólo si

// su_primera_condición es verdadera

}

// esta línea se ejecutará en cualquier caso



si(su_segunda_condición)

// esta cadena sólo se ejecutará si su_segunda_condición es verdadera

// esta cadena se ejecutará en cualquier caso aunque su_primera_precondición devuelva false

// esta cadena se ejecutará en cualquier caso aunque su_segunda_condición devuelva false



Si entiendo cuáles son mis condiciones primera y segunda y la cadena que siempre se ejecuta - me acercaré a resolver este misterio.

ESTA ES LA PRIMERA CONDICIÓN

si ((ot==0))
&&(Oferta==Precio)
&&(Open[1]-Close[1]>100*Point&&Open[1]-Close[1]<120*Point)
&&(High[1]-Open[1]>40*Point&&High[1]-Open[1]<60*Point)
&&(Close[1]-Low[1]>40*Point&&Close[1]-Low[1]<60*Point))

ESTA ES LA SEGUNDA CONDICIÓN

if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))

ESTA ES UNA CADENA QUE SIEMPRE SE EJECUTARÁ

return(0);

¿Verdad?