[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 103

 
Reshetov:

No, no le debe nada a nadie. Hay una diferencia entre una demo-real y un probador. Por ejemplo, el probador nunca mostrará un error al abrir órdenes, si todos los parámetros de OrderSend() son correctos. Pero un servidor de comercio, por el contrario, lo hará.

Por eso debemos modificar los programas después del probador y luego ejecutarlos en la demo, para que puedan manejar adecuadamente situaciones excepcionales, que no se dan en el probador.

¡¡¡Gracias!!!
Esta es una información muy útil para mí))
 
Reshetov:
Utiliza la hora de la barra Time[x].


No funcionará aquí, porque en la siguiente línea de la misma barra esta primera figura formada se iniciará como la segunda también... Y necesito separarlos... separar

para luego comparar las bajas -si son largas- y las altas -si son cortas-...

......
if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=TimeCurrent(); Print ("образование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 sleep (2000);
 if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false && TimeCurrent() > Time_Figure1)  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
.....

 
robot:

Si no es difícil escribir una plantilla, todavía no estoy pensando bien)

Gracias por su consideración.
Te sugiero que mires ejemplos de codificación comercial, por ejemplo, aquí
 
Roman.:


No funcionará aquí, porque en la siguiente línea de la misma barra esta primera figura formada se iniciará como la segunda también... Y necesito separarlos... separar

para la posterior comparación de los mínimos -si son largos- y los máximos -si son cortos-...

No así. Si tiene la barra de señal AO primero, entonces mire desde ella y busque el resto en el fondo de la historia. Cuando abra una posición, recuerde la hora de apertura de la barra y no vuelva a abrir sobre ella. Tan pronto como se forme la siguiente barra AO, comience a buscar un patrón de nuevo.
 
artmedia70:
No es así. Si tienes la primera barra de señal de AO, entonces de ella y busca las otras en el fondo de la historia. Cuando abra una posición, recuerde la hora de apertura de la barra y no la vuelva a abrir. Tan pronto como se forme la siguiente barra AO, comience a buscar un patrón de nuevo.


¿Puede explicarlo mejor? No necesito buscar en la historia...

Me basta con determinar en el presente si vino un pico - que es la Fig.1, y si después de algunas barras como en la figura vino otro pico, entonces compararlos y tomar una decisión...

La cuestión es que tanto los picos de la primera como de la segunda figura son iguales y no puedo (ni siquiera usando banderas para distinguir una figura de otra)... Estoy embotado que-que...

P.D. Los picos no se suceden necesariamente, pueden pasar por varias barras iguales, etc. Pueden ser diferentes - lo principal es que el principio de su construcción es el mismo.

Lo principal es separar uno de otro para poder compararlo.

 
Reshetov:
Utiliza la hora de la barra Time[x].

En general, es posible interrumpir el EA en un punto determinado del código antes de que se forme la siguiente barra tras la ejecución de algunos comandos.
 
Roman.:

En general, es posible interrumpir el EA en un lugar determinado del código antes de que se forme la siguiente barra tras la ejecución de algunos comandos.
Sí, lo hay. Se almacena el valor actual de Time[0] en una variable estática y se compara con cada nuevo tick. Si no ha cambiado, devolvemos(0). Si ha cambiado, estamos ante un nuevo bar. Recuerde la hora de la nueva barra, es decir, Time[0] y comience sus propios cálculos.
 

eddy:

for(k=0; k<KPeriod; k++)           // перебрать KPeriod баров
if(Low[k]<minimum) minimum=Low[k]; // найти минимум

¿cómo sustituirlo correctamente por la función iLowest?

minimum=Low[iLowest (NULL, 0, MODE_LOW, KPeriod, 0)] - ¿es esto correcto?

Me lo han dicho. Gracias a todos por ignorar mutuamente una simple pregunta)
 
Reshetov:
Sí, así es. Se almacena el valor actual de Time[0] en una variable estática y se compara con cada nuevo tick. Si no ha cambiado, se sale con return(0). Si ha cambiado, estamos ante un nuevo bar. Recuerde la hora de la nueva barra, es decir, Time[0] y comience sus propios cálculos.


Lo he sabido hace mucho tiempo... :-)) Más de un libro de texto... Gracias...

Ahora estoy comparando, creo que voy por el buen camino, pero de momento no funciona como debería...

double AO1 =  iAO(Symbol(), signal_period, 1);
 double AO2 =  iAO(Symbol(), signal_period, 2);
 double AO3 =  iAO(Symbol(), signal_period, 3);
 
 
 //  Расчет переменных для доливки 2-а пика
  
 if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=Time[0]; Print ("Oбразование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 if (Time_Figure1<Time[0] && Time_Figure1!=0)    // условие наличия первого пика...
   {
    if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false )  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Time_Figure2=Time[0]; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
        if (a1<a11 && High [0] > High [1]) 
           { signal_buy = true; a1=a11; fl1=true;fl2=false; Time_Figure1=Time[0];}   //  активируем бай и устанавливаем сигнал на бай и записываем параметры как первого пика  
        else { a1=a11; fl1=true;fl2=false;Time_Figure1=Time[0];}                     //  просто запоминаем новый минимум - "первый" сигнал   
      }                                                       
   }
 
 if (AO2>0 || High [0] < High [1]) {fl1=false; fl2=false; Time_Figure1=0;}// если какой - либо столбец гистограммы  пересекает 0-ю линию между сигналами 2-а пика
                                                               // то сигнал считается недействительным. Cбрасываем флаги 1-го и 2-го пика вниз,
 if (Mas_Tip[0]!=0 && signal_buy == true )  return(10);        // при доливке и сигнале к покупке открываемся с рынка 
 signal_buy = false;                                           // сбрасываем сигнал к покупке
Me has sugerido correctamente el uso de Time[x] - tratando de implementar...
 
Chicos realmente necesitan un script para añadir días de descanso al gráfico en MT4, donde encontrarlo