[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 49

 
vovan-gogan:
Gente, ayúdenme con el código: Por qué este EA no pone una pausa en un cruce de MA.


¿Es eso lo que tienes en mente?

if (OrdersTotal()<= 1)
   return;
Sólo abrirá órdenes a partir del segundo. Ni siquiera del segundo, sino del tercero.
 
¡¡¡¡¡¡DhP, Roman, gracias!!!!!!
 
Dimka-novitsek:
¡¡¡¡¡¡DhP, Roman, gracias!!!!!!

¿La limpieza fue exitosa?
 
Hola, ¿podría darme una pista? En el siguiente código, obtengo la hora de cierre de la última orden para un valor concreto:

for(j=0; j<OrdersHistoryTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime();
break;
}

Me gustaría que la siguiente orden sobre este valor se abriera sólo después de tres barras, es decir, en la cuarta barra, pero no antes. ¿Cómo puedo hacer un cheque?
 
first_may:
Hola, ¿podría darme una pista? En el siguiente código, obtengo la hora de cierre de la última orden para un determinado valor:

for(j=0; j<OrdersHistoryTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime();
romper;
}

Quiero abrir la siguiente orden sobre este valor después de tres barras, es decir, en la cuarta barra, pero no antes. ¿Cómo puedo hacer un cheque?

¿Estás seguro de que es el último que se cerró? ¿Y si es el primero que conoces? Te estás quedando fuera de onda.

 
artmedia70:

¿Estás seguro de que es el último que se cerró? ¿Y si es el primero que conoces? Te estás quedando fuera de onda, ¿no?




Estoy revisando el historial, ¿no están todas las órdenes de arresto?
 
first_may:

Estoy revisando el historial, ¿no están todos los pedidos?

se recorre el historial hasta la primera orden en el símbolo, después de la cual se rompe - se sale del bucle.

Si tiene 100 pedidos sólo verá uno
.

 
first_may:

Estoy revisando el historial, ¿todos los pedidos están ahí?

Aquí. La función le devolverá el número de barra de la última barra cerrada por este EA:

int BarLastClosePose() {
datetime t;
for (int i=0; i<OrdersHistoryTotal(); i++) {
   if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
      if (OrderMagicNumber()!=Magic)   continue;
      if (OrderSymbol()!=Symbol())     continue;
      if (OrderType()>1)               continue;
      if (t<OrderCloseTime()) t=OrderCloseTime();
      }
   }
   return(iBarShift(Symbol(), Period(), t, True));
}

Se llama, por ejemplo, int BarClose=BarLastClosePose();

La variable BarClose almacenará el número de la barra de la última posición cerrada, o -1 (si no hay barra). Magia - magia EA - escriba su variable allí.
O bien, elimine esta línea si desea comprobar todas las órdenes (incluso las que han sido colocadas por otro EA o que han sido abiertas manualmente por usted mismo)
Y entonces podrá comprobar cuándo se puede abrir la siguiente orden (después de cuántas barras).

 
En general, el objetivo es abrir una orden sólo después de al menos tres barras, es decir, en la cuarta barra, pero no antes, después de la última orden cerrada sobre el valor. Para ello, reviso el historial y si veo una orden sobre este valor del historial, la considero cerrada y última. ¿Me equivoco al pensar que los pedidos se seleccionarán por orden cronológico?
 
first_may:
En general, el objetivo es abrir una orden sólo después de al menos tres barras, es decir, en la cuarta barra, pero no antes, después de la última orden cerrada sobre el valor. Para ello, reviso el historial y si veo una orden sobre este valor del historial, la considero cerrada y última. ¿Me equivoco al pensar que los pedidos se seleccionarán por orden cronológico?
Te equivocas al no querer estudiar el ejemplo anterior