[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 148

 

Gracias por el consejo, pero he corregido un poco el código y, efectivamente, sin la línea de código de abajo, el EA abría posiciones en cada tick

y después de pegar la línea de código = EA abrió una posición exactamente como había planeado.

int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
 
first_may:

¿Qué es el CME?

o_o - CME
 
BeerGod:
Ya ha sucedido antes, creo que esta es la intriga de DC para que sea problemático probar cualquier cosa.
El CC no tiene nada que ver con las cotizaciones descargadas del servidor de datos históricos.
 
El DC no tiene nada que ver con las cotizaciones descargadas del servidor de datos históricos.

Bueno, todo se descarga "supuestamente" de un único servidor... Además, pensaba que en el probador el apalancamiento de la cuenta actual no tiene efecto... Pero algunas empresas de corretaje tienen esa magia de la calle... ¿Puede ser que algunas empresas de corretaje puedan jugar con las cotizaciones también? (Aunque probablemente todos ellos tengan problemas aquí)...
 
alex12:

Gracias por el consejo, pero he corregido un poco el código y, efectivamente, sin la línea de código de abajo, el EA abría posiciones en cada tick

y después de pegar la línea de código = EA abrió una posición exactamente como había planeado.

Bueno... esto es sólo una correspondencia aparente con la prevista. Esta construcción no tiene en cuenta el símbolo, el tipo de orden o su magik. Es decir, si hay otro EA trabajando en la cuenta para otro símbolo, entonces este no funcionará, porque ya tenemos una posición. Si sólo funciona este EA, pero hay una posición de venta y hay que abrir la posición de compra, no la abrirá - la posición ya existe y hay muchas otras reglas posibles, por ejemplo, usted ha abierto manualmente una posición o ha puesto una orden pendiente - eso es todo, el EA ha subido...

Tienes que comprobar específicamente: ¿hay ya una posición abierta en tal o cual símbolo, con tal o cual mago, de tal o cual tipo? Si no es así, abre.

 
artmedia70:

Bueno... es sólo una coincidencia aparente con la prevista. Este diseño no tiene en cuenta el símbolo, el tipo de orden o su magia. Esto significa que si hay otro EA trabajando para otro símbolo en la cuenta, entonces este no funcionará, porque ya hay una posición. Si sólo funciona este EA, pero hay una posición de venta y hay que abrir la posición de compra, no la abrirá - la posición ya existe y hay muchas otras reglas posibles, por ejemplo, usted ha abierto manualmente una posición o ha puesto una orden pendiente - eso es todo, el EA ha subido...

Tienes que comprobar específicamente: ¿hay ya una posición abierta en tal o cual símbolo, con tal o cual mago, de tal o cual tipo? Si no lo hay - abre.

Gracias. Sí, es cierto, porque este EA sólo abre posiciones de compra para continuar el movimiento y
sólo después del cierre de la posición de compra por toma. Por ejemplo, si la posición de compra está abierta y el precio baja a
nivel establecido, entonces otra posición de compra no se abre (y debería haber sido abierta por TS).
He prescrito un precio determinado en la sección Enviar líneas de pedido - precio, véase el código siguiente.
Mi tarea es escribir el código correcto en el EA = para abrir una posición de compra más después de abrir la posición de compra,
, si el precio baja a un nivel predefinido - abrir una posición de compra más. Y así cualquier nivel
el precio no ha cruzado en el código - siempre abrir la posición de compra, no importa cuántos

En este momento hay puestos vacantes.

extern double Lot=1;

int g=20; //тейкпрофит

double price[10];   // Заданный уровень 

//-----------------------
 
int init()
  {
  
double price[10];   // объявляем массив из 5 элементов  
           
price[0] = 1.2100; // обращаемся к первому элементу массива и 
                   // присваиваем ему цену. Обратите внимание 
                   // на то, что индекс первого элемента 
                   // начинается с 0. Это важная особенность,
                   // к которой нужно привыкнуть.   
 
price[1] = 1.2200;  // обращаемся ко второму элементу 
price[2] = 1.2300;  // и так далее 
price[3] = 1.2400; 
price[4] = 1.2500;
price[5] = 1.2600; 
price[6] = 1.2700;  
price[7] = 1.2800; 
price[8] = 1.2900;
price[9] = 1.3000;  

   return(0);
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
   
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   price[0]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[1]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[2]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2300,10,0,Ask+g*Point,"My order #",13);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[3]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2400,10,0,Ask+g*Point,"My order #",14);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[4]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2500,10,0,Ask+g*Point,"My order #",15);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[5]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2600,10,0,Ask+g*Point,"My order #",16);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[6]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2700,10,0,Ask+g*Point,"My order #",17);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[7]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2800,10,0,Ask+g*Point,"My order #",18);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[8]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2900,10,0,Ask+g*Point,"My order #",19);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[9]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.3000,10,0,Ask+g*Point,"My order #",20);
   }
      return(0);
  }
//+------------------------------------------------------------------+
 
Buenas tardes. Me gustaría optimizar el código. He añadido tres topes al indicador. Luego tengo una larga búsqueda de señales en ellos. Primero busco en MA1[], luego en МА2[] y en МА3[]. La diferencia es sólo un dígito del nombre de la memoria intermedia que se utiliza para los cálculos. ¿Es posible hacer un bucle con el código?
 
alex12:
Sí, así es, porque este EA sólo abre bai en la continuación del movimiento y
sólo después de cerrar la posición de compra en la toma ....
La llave de apertura { debe colocarse antes de precio[...]=Pregunta; (ver más abajo). Vuelve a leer sobre el operador "if". Si no hay paréntesis inmediatamente después de if, maneja una sola acción (tiene precio[...]=Preguntar;), si necesita varias acciones, deben colocarse en {...} inmediatamente después de if.
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   { 
      price[0]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   {
      price[1]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
 

Por la tarde.

Necesito un historial de EURUSD m5/m15 de antes de 2009, ¿alguien puede compartir el suyo? (es decir, aquella en la que depuras a tus expertos).

Se lo agradecería mucho.

 
ewoke:

Por la tarde.

Necesito un historial de EURUSD m5/m15 de antes de 2009, ¿alguien puede compartir el suyo? (es decir, aquella en la que depuras a tus expertos).

Se lo agradecería mucho.

Presione F2 con su terminal abierto, luego vaya a Fx Majors -> EURUSD -> 1 Minuto (M1) -> Descargar.