[¡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 99

 
ScioMe:

Guardado, bajo estos nombres, el nuevo gráfico se abre de la misma manera, de la forma antigua. Hay un archivo strategytester.htm en la carpeta de plantillas No sé qué hacer con este archivo.

Significa que algo se hizo mal, tal vez MT no se reinició. Probado, debería funcionar.
 
zas:
Hola, ¿podéis ayudarme con esta pregunta? No la he encontrado en el foro. El caso es que al abrir un archivo en Excel, los datos se representan como una fecha, y si cambio el formato de la fecha, me salen los datos erróneos. He probado con diferentes tipos de fechas, pero lo mismo. He intentado especificar el tipo de datos (Excel lo pide) al cargar, pero los números parecen representarse como un número con puntos (por ejemplo 1,5624), y Excel no quiere hacer nada con ellos.

La pregunta no es sobre el tema del foro, porque tienes que ir a un curso de informática y aprender a usar Word y Excel, o buscar un libro sobre estos programas y estudiar.

Y en su pregunta específica, seleccione las celdas necesarias, lleve el cursor a ellas, haga clic en el botón derecho del ratón, luego en "Formatear celdas..." y seleccione el formato deseado de presentación de datos.

 

Chicos, decidme un consejo...

Hay que comparar el primer pico del histograma con el segundo, si el segundo es más pequeño en valor abs, entonces abrir comprar siempre que ambos estén por debajo de cero y después asignar el valor del segundo al primer pico, Si después de la formación del primer pico la columna del histograma pasó de área negativa a positiva, entonces anular la presencia del primer pico, como lo he hecho - es decir, por condición reiniciamos ambas banderas.

Resulta que cuando identifico los parámetros del primer pico, la misma condición (los mismos parámetros) se mantiene para el segundo. Y esto es un error... Me gustaría de alguna manera "separar" estos hechos (con sus parámetros únicos) de formación de las figuras 1 y 2, doy mi código y figura para la bahía...

double a1,a2,a11,a22;//  значения первого и второго пика 
bool fl1 = false;    //  флаги наличия 1-го и 2-го пика для их сравнения для входа в рынок по 3-ему варианту АО
bool fl2 = false;    //
bool signal_buy = false;
bool signal_sell = false;

double AO1 =  iAO(Symbol(), signal_period, 1);
double AO2 =  iAO(Symbol(), signal_period, 2);
double AO3 =  iAO(Symbol(), signal_period, 3);
  
 
 
if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO22; fl1=true; Print ("образование первого пика",DoubleToStr(a1,6) );}
//    определение наличия 1-го пика, флаг установлен
 Print ("первый пик = ", DoubleToStr(a1, 6) );
 
// в след строке ошибка - получается, что после идентификации 1-го пика - эти же условия выполняются и для 2-го, а этого быть не должно... 
 if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false)                        // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Print ("образование второго пика", DoubleToStr (a11,6));
        if (a1<a11 && High [0] > High [1]) 
           { signal_buy = true; a1=a11; fl1=true;fl2=false;}    // активируем бай и запоминаем параметры как первого пика   
        else { a1=a11; fl1=true;fl2=false;}                     // просто запоминаем новый минимум - первый пик   
      }                                                       
  
 if (AO2>0 || High [0] < High [1]) {fl1=false; fl2=false;}     // если какой - либо столбец гистограммы  пересекает 0-ю линию между сигналами 2-а пика
                                                               // то сигнал считается недействительным. Cбрасываем флаги
 if (Mas_Tip[0]!=0 && signal_buy == true )  return(10);        // при доливке и сигнале к покупке открываемся с рынка 
 signal_buy = false;                                           // сбрасываем сигнал к покупке
 
 

 

¡Cualquier chicos que pueden ayudar a crear un robot para el comercio, sólo tienen una idea y necesitan ayuda en su aplicación, yo mismo en la programación no es fuerte, incluso se puede obtener dinero, pero razonable!

 
ZahvatkiN:

¡Cualquier chico que puede ayudar a crear un robot para el comercio, sólo tiene una idea y necesita ayuda en su aplicación, no soy fuerte en la programación, incluso se puede obtener dinero, pero razonable!

Puedo hacerlo por un dinero razonable.
 

No puedo entenderlo.

Escrito en ruso, pero no puedo entender la sección del Manual https://docs.mql4.com/ru/basis/variables/formal

Cita:

Los parámetros por referencia sólo pueden pasarse dentro de un único módulo....... (¿De qué módulo estamos hablando?)

Los arrays también se pueden pasar por referencia, todos los cambios se reflejarán en el array original . (¿Cambia los elementos de la matriz?)

 
Hola a todos, he estado rebuscando en el foro todo el día y no he encontrado, por favor, aconsejadme donde se puede descargar el histórico de cotizaciones euro usd 1 min en formato hst, csv o la mejor forma de cargarlo para un periodo máximo de tiempo, el terminal solo da un año. Por favor, envíenme enlaces o archivos. SE LO AGRADEZCO DE ANTEMANO.
 
¿Preguntas?

He abierto una orden pendiente -

Ticket = OrderSend(...,OP_SELLSTOP,...,TP,SL);

Si(Billete>0)

{ todo está bien, espera a que se ejecute la orden pendiente, si se ejecuta entonces todo está bien}

si no

{espera a que la siguiente barra se CIERRE y si la orden no se abre, ciérrala forzosamente con OrderDelite();}

ayuda con el código

"esperar a que se ejecute la orden pendiente"

"esperar a que la siguiente barra se cierre y si la orden no se ha abierto, cerrarla forzosamente con OrderDelite();"

 
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)] - ¿correcto?

 
robot:
¿Preguntas?

{espera a que se cierre la siguiente barra y si la orden no se ha abierto, la cierra forzosamente con OrderDelite();}

ayuda con el código

"esperar a que se ejecute la orden pendiente"

"esperar a que la siguiente barra se cierre, y si la orden no se ha abierto, cerrarla forzosamente con OrderDelite();"

debes entender un poco de lógica y la esencia de trabajar con órdenes.

Para realizar un proceso pendiente o esperar algún evento, debe recordar el estado actual del sistema y compararlo con el esperado.

En su caso, tiene un evento: se ha abierto una nueva barra, pero la orden no se ha activado.

Para ello, puedes seguir este camino:

- recuerde el parámetro Ticket, y la hora del bar en la que abrió. Si hay una nueva barra, puede coger inmediatamente el billete guardado anteriormente y comprobar si se trata de un billete de mercado o de un billete inicial pendiente. Y si está pendiente, elimínela.

Esta variante no está pensada para el comercio real; es sólo para probadores.

----------

Por lo tanto, necesita Time[], OrderSelect(), OrderType(), OrderCloseTime().