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

 

Lo tengo, gracias por tu ayuda.

 
spidey:

Buenas noches, podrían aconsejarme cómo poner una alerta en el indicador, he probado de todo, pita en cada tic, o no pita...


Consíguelo y fírmalo :)

Archivos adjuntos:
 
Por favor, aconseje cómo comparar el precio de cierre de la barra i-ésima (por ejemplo М15) con el precio de apertura del día en el indicador
 

Hola.

Pueden decirme o aconsejarme donde conseguir el .hst o que generar las ondas de Eliot para el visual tester, (puede ser en archivo csv) como en la imagen de abajo:

 
RomanS:
Por favor, dígame cómo comparar el precio de cierre de la barra i en el indicador (por ejemplo М15) con el precio de apertura del día


No debo haberlo explicado correctamente... por ejemplo

#property indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Red
#property  indicator_color2  Green
#property  indicator_color3  Blue
#property  indicator_color4  Black

extern int DAY       = 0;
extern int History   = 500;

double GBP[],EUR[],JPY[],USD[]; 

int init()
  {
   SetIndexBuffer(0, GBP);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, EUR);    
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, JPY);
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(3, USD);
   SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);
   IndicatorShortName("...");
   return;
  }

int start()
  {
  int limit = 0, 
      counted_bars = IndicatorCounted();
      if(counted_bars>0) counted_bars--; 
      limit = Bars - counted_bars;
 
  for(int i=0; i<limit; i++)
    {
     USD[i] = -(iClose("EURUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY))
              -(iClose("GBPUSD",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY))
              +(iClose("USDJPY",NULL,i)-iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i);
     EUR[i] = +(iClose("EURUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY))
              +(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              +(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)/iOpen("GBPUSD",PERIOD_D1,DAY))*iClose("GBPUSD",NULL,i);
     GBP[i] = +(iClose("GBPUSD",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY))
              +(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)/iOpen("GBPUSD",PERIOD_D1,DAY))*iClose("GBPUSD",NULL,i);
     JPY[i] = -(iClose("USDJPY",NULL,i)-iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i);
    }
   return(0);
  }

Si pongo DAY = 0, entonces el precio de la barra i-ésima, sea M5, se comparará con el precio de apertura de hoy, si DAY = 1, entonces con el precio de apertura de ayer, etc.

cómo hacerlo dinámico... Si quisiera compararlo dinámicamente, es decir, cuando busque la barra 1278, se compararía con el precio de apertura del día cuando vea esta barra.

 

Suponiendo que se trata de un gráfico de algún indicador MAKD o STOH igual, aconsejar como describir el punto de entrada en el EA Xmax*0,25 para la Venta y Xmin*0,25 para la Compra. Si el periodo "n" no es constante y Xmax y Xmin cambian.

Archivos adjuntos:
ypi.rar  7 kb
 

cómo implementar un operador de este tipo

while ( Условие если закрылся любой ордер )                  
{   то опредеяем тип закрытого ордера из списка   }  
значение передаем следущему оператору

{  по переданому значению выбераем из списка нужный ордер и открываем его  } 
после того как ордер открыт возращяемся в начало

o de qué otra manera se puede implementar este bucle

 
RomanS:


Debo haberlo explicado mal... por ejemplo

Si pongo DAY = 0, entonces el precio de la barra i-ésima, sea M5, se comparará con el precio de apertura de hoy, si DAY = 1, entonces con el de ayer, etc.

cómo hacerlo dinámicamente... Es decir, al calcular la barra 1278, por ejemplo, se comparó con el precio de apertura del día en que se abrió esta barra.

Para ello, tengo una función que devuelve el OHLC de cualquier periodo superior :)

//+------------------------------------------------------------------+
//| getOHLC                                                          |
//+------------------------------------------------------------------+
double getOHLC(int OHLC, string symbol, int timeframe, int shift = 0){
   if(timeframe < Period())return(-1);
   switch(OHLC){
      case 0:  return(iOpen(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 1:  return(iLow(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 2:  return(iHigh(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 3:  return(iClose(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
   }
}
//+------------------------------------------------------------------+

Parámetros:
int OHLC - qué datos deben tomarse del marco temporal alto, corresponden a las constantes estándar.
string symbol - nombre simbólico del instrumento.
int timeframe - período del marco temporal superior a trabajar, corresponde a las constantes estándar.
int shif t - parámetro opcional, que especifica el número de la barra actual, del marco temporal actual, para buscar coincidencias de períodos más antiguos.

Ejemplo de llamada a la función para su caso:

for(int i=0; i<limit; i++)
    {
     USD[i] = -(iClose("EURUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i))
              -(iClose("GBPUSD",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i))
              +(iClose("USDJPY",NULL,i)-getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i);
     EUR[i] = +(iClose("EURUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i))
              +(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              +(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)/getOHLC(0, "GBPUSD",PERIOD_D1,i))*iClose("GBPUSD",NULL,i);
     GBP[i] = +(iClose("GBPUSD",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i))
              +(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)/getOHLC(0, "GBPUSD",PERIOD_D1,i))*iClose("GBPUSD",NULL,i);
     JPY[i] = -(iClose("USDJPY",NULL,i)-getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i);
    }

En consecuencia, iClose("EURUSD",NULL,i) encontrará el precio de cierre de la barra número i del gráfico actual, y getOHLC(0, "EURUSD",PERIOD_D1,i) el precio de apertura del día en que se encuentra la barra i del gráfico actual.

 
RomanS:


Debo haberlo explicado mal... por ejemplo

Si pongo DAY = 0, entonces el precio de la barra i-ésima, sea M5, se comparará con el precio de apertura de hoy, si DAY = 1, entonces con el precio de apertura de ayer, etc.

cómo hacerlo dinámicamente... Es decir, al calcular la barra 1278, por ejemplo, se comparó con el precio de apertura del día en que se abrió esta barra.

Primero hay que calcular a qué día corresponde esta barra. Ahora mismo no estoy en casa, así que te daré la función más tarde, cuando llegue a casa por la noche. Mientras tanto, búsquelo usted mismo o descubra cómo ponerlo en práctica.

Oops... Ya se ha ofrecido una variante....

 
akuma_san1:

Suponiendo que se trata de un gráfico de algún indicador MAKD o STOH igual, aconsejar como describir el punto de entrada en el EA Xmax*0,25 para la Venta y Xmin*0,25 para la Compra. Si el periodo "n" no es constante y Xmax y Xmin cambian.

Sus criterios de entrada están muy vagamente definidos. A mí personalmente no me queda claro. Si necesita controlar el cruce de cualquier nivel, entonces el cambio de todos los parámetros que ha proporcionado no tienen factores de interferencia. Basta con mirar el valor del parámetro requerido en la primera barra y el valor del mismo parámetro en la segunda barra. Si el valor del parámetro en la primera barra es superior a un valor umbral que se ha especificado y el valor en la segunda barra es inferior, tenemos un cruce de abajo a arriba. Si el valor de la primera barra es más bajo y el valor de la segunda barra es más alto - tenemos un cruce de arriba a abajo. Aquí tenemos dos señales de Compra y Venta. Se puede comprobar sólo el valor por encima o por debajo - así tendremos la misma señal, pero durante todo el tiempo el parámetro está por encima o por debajo del valor monitorizado.
SZY. Si los parámetros no cambiaran, nunca tendríamos una señal... :)