Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 100

 
trader781:

No entiendo dónde ponerlo y por qué no (-1)

hay un parámetro de entrada bool

void OnTick

{análisis de la apertura de la orden, trailing stop}

void Trailing Stop

{responde a las condiciones de cierre

si es que sí cubrimos todo lo que hay

}

De hecho, vuelve; es un vacío

No sé qué lógica tienes ahí. ¿Cómo esperas que adivine lo que tienes ahí?
 
trader781:

por tres puntos

1 punto externo donde establecemos si queremos abrir la segunda o más órdenes

2) una condición en la que tenemos que abrir la primera orden

3) cerrar el punto de pedido

Puedo enviarte el código pero es el mismo para todos

Entonces, ¿por qué ensucias el hilo si no necesitas ayuda?

No encontrará mensajes útiles en mil páginas inútiles

P.D. ¿O tu objetivo es rellenar al máximo tus posts?
 
trader781:
Entonces pido un diagrama del interruptor en estos tres puntos. Entonces borraré mis mensajes si los consideras basura.

¿Cuál es este punto?

1 punto externo donde establecemos si queremos abrir la segunda o más órdenes

2) una condición en la que tenemos que abrir la primera orden

3) cierre del punto de orden

¿Sabes siquiera lo que quieres?

En el punto 2 no se puede establecer una orden, no se puede cerrar y sólo se puede eliminar. En general, todo lo que tienes es de alguna manera lógicamente incoherente y vago, necesitas ser un diputado.

 

Está esta parte del código:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Pregunta:Period() devuelve un valor sano hasta M30, a partir de H1 un conjunto de dígitos, y el marcador ya no puede ser desplazado de esta manera.

¿Cómo desplazarse por N - candelabros independientemente del período? No tengo que escribir una función aparte, ¿verdad?

 
Vitaly Muzichenko:

Está esta parte del código:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Pregunta:Period() devuelve un valor sano hasta M30, a partir de H1 un conjunto de dígitos, y el marcador ya no puede ser desplazado de esta manera.

¿Cómo desplazarse por N - candelabros independientemente del período? No tengo que escribir una función aparte, ¿verdad?

PeriodSeconds(PERIOD_CURRENT)*3
 
Artyom Trishkin:
PeriodSeconds(PERIOD_CURRENT)*3

Gracias.

La pregunta es: ¿Qué tan correcta es esta entrada, está al principio del programa, mientras que a lo largo del programa se utiliza mucho Time[0] y Time[1], y no para ser llamado cada vez, se escribe en una variable. Parece que no hay errores fuera de la matriz, pero todo está definido superficialmente:

datetime TM[], TIME0, TIME1;

//------------
void OnTimer()

ArraySetAsSeries(TM, true);
  if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, TM)==-1) return;
   TIME0 = TM[0];
   TIME1 = TM[1];

Gracias.

 
Vitaly Muzichenko:

¿Cuál es este punto?

1 punto externo donde establecemos si queremos abrir la segunda o más órdenes

2) una condición en la que tenemos que abrir la primera orden

3) cierre del punto de orden

¿Sabes siquiera lo que quieres?

En el punto 2 no se puede establecer una orden, no se puede cerrar y sólo se puede eliminar. En general, siempre eres de alguna manera lógicamente incoherente y vago, necesitas ser un diputado.

por favor. Aquí está el parámetro externo bool OpenOrders=false;//+--abrir pedido

Necesito que abra órdenes, las cierre y luego se quede en el gráfico sin consumir recursos

por el momento es auto-aserrado (funciona, pero inaceptable para un elemento de panel)

Archivos adjuntos:
 
trader781:

por favor. Aquí está el parámetro externo bool OpenOrders=false;//+--abrir pedido

Necesito que abra una orden, la cierre y luego se quede en el gráfico sin consumir recursos

por el momento es auto-aserrado (funciona, pero inaceptable para un elemento de panel)

Yo lo habría hecho. Añadir "Desactivado" al código

P.D. Sustituye la línea 72 por "if(! Disabled) return;". Creo que la lógica de la bandera es clara.
Archivos adjuntos:
 
Vitaly Muzichenko:

Yo haría lo siguiente. Añade "Desactivado" al código.

P.D. Sustituye la línea 72 por "if(! Disabled) return;". Creo que la lógica de la bandera es clara.

No, no está claro. Volviendo al lugar de donde venimos.

1) Disabled=true

inicializar a true inite

pasar a ontik if(!Disabled) return;

abrir cerrar

Disabled=false; exit. Todo está bien.

2) Desactivado=falso

inicializar ontik a true

pasar a ontic if(!Disabled) return;

abrir cerrar

Disabled=false; exit. ¿Dónde abro el siguiente pedido? Alguna variante debería permitirlo.

¿Ahora entiendes por qué te he pedido que describas la lógica?

Tengo una opción de 2 EAs también.

 
trader781:

No, no lo entiendo. De vuelta al lugar de donde venimos.

1) Disabled=true

inicializar en el inite a true

pasar a ontik if(!Disabled) return;

abrir cerrar

Disabled=false; exit. Todo está bien.

2) Desactivado=falso

inicializar ontik a true

pasar a ontic if(!Disabled) return;

abrir cerrar

Disabled=false; exit. ¿Dónde abro el siguiente pedido? Alguna variante debería permitirlo.

¿Ahora entiendes por qué te he pedido que describas la lógica?

Tengo una opción de 2 EAs también.

No está claro. Si necesita detener el EA, entonces la variante sugerida hace frente a esto, si no hay necesidad de detenerlo, entonces déjelo operar y no lo limite de ninguna manera. Si quiere operar a la carta después del stop, basta con cambiar la hora, Disabled se hará realidad y el programa seguirá funcionando
Razón de la queja: