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

 
Una cosa más - cuando inicio el EA, una orden se abre en la primera vela, aunque no había señales en ese momento. ¿Cómo se puede eliminar?
Archivos adjuntos:
 
artem artem precios de apertura dentro del mismo período - 29 órdenes ?

+ varias órdenes que explícitamente se perdieron su precio de apertura si se probaron por ticks. Adjunto una captura de pantalla que muestra

Prueba con

Archivos adjuntos:
artem.mq4  13 kb
 
Ahora abre el mismo número de órdenes tanto por ticks como por precio de apertura. 23órdenes en total durante el mismo periodo de tiempo. Sólo que ahora, por alguna razón, entro desde la 7ª vela, no desde la 4ª.
 
artem artem órdenes en total durante el mismo periodo de tiempo. Sólo que ahora entramos por la séptima vela, no por la cuarta.

Eliminado todo lo innecesario... parece que funciona como debería

Archivos adjuntos:
artem.mq4  11 kb
 
¿Puedes decirme si hay una forma de delimitar las cadenas de configuración de EA en el terminal para que no se puedan borrar? Si escribes una cadena externa en el código, te permite editar la cadena, y si la borras accidentalmente, tienes que pulsar "reset" para restaurarla, pero entonces se restablecen todos los ajustes. Por supuesto, se pueden guardar en un archivo de conjunto de antemano, pero tengo curiosidad por saber si es posible hacer una "tabla de piedra")
 

Comprobado, tanto en los ticks como en el precio de apertura... ¡¡¡¡RA-BO-TA-ET!!!!

MakarFX, ¡¡¡muchas gracias!!! Hace 2 semanas que estoy trasteando con este rompecabezas, todo en vano hasta hoy. Muchas gracias, una vez más. Me quedan literalmente unas cuantas aclaraciones, y no voy a entretenerte más, y ya se ha gastado mucho de tu tiempo. En realidad, esto es lo que me interesa:


1. Por lo que tengo entendido, si quiero cambiar el número de "velas de confirmación", sólo tengo que cambiar un número por otro en la constante, ¿y ya está?

void OnTick()
  {
//---
   StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); 
   //---
   if(newbar!=Time[0])
     {
      if(CheckForOpen()!=Start)
        {Start=CheckForOpen(); cnt=1;}
      else
        {cnt+=1;}
      //---
      if(cnt==8)
        {
         // Открытие ордера по методу Пуриа
         if(CheckForOpen()==0) // Если сигнал для покупок 
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");}
              else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1) // Если сигнал для продаж 
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");}
              else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];
     }
  }

2. Cuando ejecuto el Asesor Experto, la primera orden de VENTA se abre en la primera vela, a pesar de que no había señales. Esto significa que esta primera orden es redundante, y el EA no debe abrir una operación inmediatamente en la primera orden, sólo porque el EA acaba de iniciarse. ¿Cómo se puede arreglar esto? Tengo la idea de que el Init es el responsable de esto y que debería cambiarlo a "false", o eliminar este Init por completo?

bool OrderBuy = true, OrderSell = true, Order = false, Init = true;

Y por último, si lo dejo así y lo ejecuto para operar con varios pares de divisas a la vez, ¿funcionará como debería? O tengo que recetar algo más en el código, para que no haya fallos y demás. Especialmente, si este EA trabajará en varios pares de divisas a la vez?

En realidad, eso es todo lo que me interesa, pero de todos modos, ¡muchas gracias de nuevo! Si lo hubiera hecho yo mismo, no sé cuánto tiempo me habría llevado)

 
artem artem #:

Comprobado, tanto en los ticks como en el precio de apertura... ¡¡¡¡RA-BO-TA-ET!!!!

MakarFX, ¡¡¡muchas gracias!!! Hace 2 semanas que estoy trasteando con este rompecabezas, todo en vano hasta hoy. Muchas gracias, una vez más. Me quedan literalmente unas cuantas aclaraciones, y no voy a entretenerte más, y ya se ha gastado mucho de tu tiempo. En realidad, esto es lo que me interesa:


1. Según tengo entendido, si quiero cambiar el número de "velas de confirmación", sólo tengo que cambiar un número por otro en la constante, ¿y ya está?

2. Cuando ejecuto el Asesor Experto, la primera orden de VENTA se abre en la primera vela, a pesar de que no había señales. Esto significa que esta primera orden es redundante, y el EA no debe abrir una operación inmediatamente en la primera orden, sólo porque el EA acaba de iniciarse. ¿Cómo se puede arreglar esto? Tengo la idea de que el Init es el responsable de esto y que debería cambiarlo a "false", o eliminar este Init por completo?

Y por último, si lo dejo así y lo ejecuto para operar con varios pares de divisas a la vez, ¿funcionará como debería? O tengo que recetar algo más en el código, para que no haya fallos y demás. Especialmente, si este EA trabajará en varios pares de divisas a la vez?

En realidad, eso es todo lo que me interesa, pero de todos modos, ¡muchas gracias de nuevo! Si lo hubiera intentado yo mismo, no sé cuánto tiempo me llevaría)

1) Sí, estos son los valores del número de "velas de confirmación" .

2) No, en la primera no se abre, sólo después de un número determinado de "velas de confirmación"

3) Cambiar el magik y ponerlo en cualquier par

Es mejor hacer del magik una variable externa

 
Ivan Butko #:
¿Puedes decirme si hay una forma de delimitar las cadenas de configuración de EA en el terminal para que no se puedan borrar? Si escribes una cadena externa en el código, te permite editar la cadena, y si la borras accidentalmente, tienes que pulsar "reset" para restaurarla, pero entonces se restablecen todos los ajustes. Por supuesto, se pueden conservar en un archivo de conjunto, pero tengo curiosidad por saber si es posible hacer un "cuadro de piedra")
Hacer un ENUM
 
MakarFX #:
Hacer el ENUM

Lo intentaré, gracias.

 
Ivan Butko #:

Lo intentaré, gracias.

enum MODE
  {
   MODE_1=1,    // Мертвая строка
  };
//--- input parameters
input MODE mode= MODE_1; // Эта строка