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

 
nlp2311:

Por favor, ayúdenme a resolver esto. Quiero que la línea sea correcta. Pero el buffer da sólo una línea, debe ser plana en el medio del día, como la línea de pivote.... Tengo una línea que viene del nivel de X hora del día anterior.

POR FAVOR, AVERÍGUALO.... no puedo entenderlo(((

Bien, digamos que necesitas tomar un muving a las 5 en cualquier marco temporal, por supuesto no en el diario, sino en uno más pequeño. Digamos que a partir de la una o menos.

Y dibujarla a las 5 del día siguiente. Así es como se hace.

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int    hour = 5;
extern int    hrma = 4;
//==============================
double fx[];
double mai;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,fx);
   
   p=hrma*60/Period(); // пересчет периода мувинга на любой таймфрейм
   
   return(0);
}
//************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) cbi=Bars-p-1;
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hr==hour && hrp!=hr) mai=iMA(NULL,0,p,0,0,0,i); // сам простой мувинг, в момент, когда час равен нашему и не неравен на предыдущем баре
      
      fx[i]=mai; // просто приравнивание индикаторного буффера к глобальной переменной 
   }
  
   return(0);
}
//***************************************************************
 

Sí, lo hice, la misma respuesta ... lo que con

ti=Time[i]; // время текущего бара
      
      tiip=tii; // предыдущее состояние времени
      tii=(ti-dth)/dtd*dtd;// время начала суток сдвинутое на нужный нам час
      
      if (tiip!=tii)

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PERO EL RESULTADO ES ERRÓNEO!!!!!!!!!!!!!!! Tomé un ejemplo del python a través de

if(TimeDay(Time[i]) != TimeDay(Time[i+1]))
La visión general es así

int start()
  {
double LastHigh,LastLow;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i+1);
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(TimeDay(Time[i]) != TimeDay(Time[i+1]))
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}

SIGUE SIN SER EL RESULTADO CORRECTO.

El problema es simple para poner una línea COMO pivote es plana, pero no en el nivel de pivote, pero a partir de un valor de alguna hora. ¡¡Eso es!! Y estoy luchando y no entiendo cómo... DERECHO la línea de X hora a Time[0] !!!!!!!!!!!!!!!!

 
nlp2311:

Sí, lo hice, la misma respuesta ... lo que con

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PERO EL RESULTADO ES ERRÓNEO!!!!!!!!!!!!!!! Tomé un ejemplo de la pitón a través de

La visión general es la siguiente

SIGUE SIN SER EL RESULTADO CORRECTO.

El problema es simple para poner una línea COMO pivote es plana, pero no por el nivel de pivote, pero a partir de un valor de alguna hora. ¡¡Eso es!! Y estoy luchando y no entiendo cómo... RANGE la línea de X hora a Time[0] !!!!!!!!!!!!!!!!

Bueno, yo escribí un ejemplo más simple allí.

Si hemos escrito algún valor en el punto de la hora requerida, entonces simplemente equivale a este valor.

for(int i=cbi; i>=0; i--)
{
hrp=TimeHour(Time[i+1]);
hr=TimeHour(Time[i]);

if (hr==hour && hrp!=hr) x=

fx[i]=x; // sólo equipara el buffer indicador con la variable global
}

Lo mismo para cualquier cosa, pivote o lo que sea. Simplemente, si es un Pivote diario, entonces los niveles diarios se calculan en este punto para la cantidad diaria de barras.

Aquí están los máximos diarios a las 5, por ejemplo. Lo mismo puede hacerse con todos los demás niveles. Copiar el código en un indicador vacío, compilar y ver, creo que esto es más o menos correcto.

Y si no hay que dibujar todos los días, sino sólo el último, se hace de forma un poco diferente. Sólo sugiero un enfoque más profesional.

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int    hour = 5;
extern int    hrma = 24;
//==============================
double fx[];
double hm;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,fx); SetIndexEmptyValue(0,EMPTY); 
   
   p=hrma*60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) cbi=Bars-p-1;
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hr==hour && hrp!=hr) 
      {
         fx[i+1]=EMPTY;
         hm=High[iHighest(NULL,0,MODE_HIGH,p,i+1)];
      }
      
      fx[i]=hm; 
   }
  
   return(0);
}
//***************************************************************
 
Hola a todos. ¿Cómo se añaden indicadores al gráfico? Es decir, tengo un EA que calcula un determinado valor de, por ejemplo, iMA. ¿Cómo se dibuja el indicador en el gráfico? Creo que sí, ¿usando la función especial o "manualmente" a través de la línea de tendencia? ¿Hay una manera más fácil de mostrar el indicador con los parámetros del EA?
 
Pyro:
Hola a todos. Si quisiera colocarlos en el gráfico, no tendría que dibujarlos yo mismo. Por ejemplo, tengo un EA en el que calculo algunos valores como iMA. ¿Cómo se dibuja el indicador en el gráfico? Creo que sí, ¿usando la función especial o "manualmente" a través de la línea de tendencia? ¿Hay una manera más fácil de mostrar el indicador con los parámetros del EA?

No he conocido, tal vez alguien escribió una búsqueda en el foro para la asignación de los topes a través de la línea de tendencia.

O escríbalo usted mismo, no hay nada complicado.

 
Pyro:
Hola. ¿Cómo puedo añadir indicadores al gráfico? Por ejemplo, tengo un Asesor Experto que calcula algunos valores como iMA. ¿Cómo se dibuja el indicador en el gráfico? Creo que sí, ¿usando la función especial o "manualmente" a través de la línea de tendencia? ¿Hay una manera más fácil de mostrar el indicador con los parámetros del EA?


Si el EA está unido al gráfico y hay algo dentro de él, entonces para ver lo que es, tenemos que crear un indicador con exactamente la misma función y establecer los mismos parámetros que en el EA y aplicarlos al gráfico. O si se trata de una función estándar de MT, como un muving, también tiene que aplicarse a un gráfico y se han establecido los mismos parámetros que en el Asesor Experto. El Asesor Experto en sí mismo no dibuja indicadores en el gráfico. Se dibuja en el Probador de Estrategias sólo después de la prueba. No lo hará durante la negociación. Otra forma, pero molesta, es dibujar objetos, como guiones ObjectCreate(name+Time[0],OBJ_ARROW,0,Time[0],price); ObjectSet(name+Time[0],OBJPROP_ARROWCODE,4); o segmentos de líneas de tendencia, pero entonces hay que guardar el estado de la función en la barra anterior. Pero es cuando no se puede aplicar el indicador, por ejemplo, cuando hay que dibujar algo por Askas y MT no almacena el array de Askas o algún sintético de dos pares. Así que hay que girarlo para controlarlo.

Bueno, también puedes hacer una plantilla (tpl) en la que adjuntar lo que necesites. Pero en la práctica es mejor hacer un indicador personalizado, y manualmente establecer y escribir un nuevo perfil y cuando se quiere operar, sólo tiene que llamar al perfil apropiado. Es una técnica al borde de la fantasía.

 
Es un dolor en el culo, si los parámetros están cambiando constantemente en el Asesor Experto. Bien, gracias colegas, ahora hay certeza.
 
Transferencia de la EA al indicador a través de la GV.
 

1) Hacer plantillas con parámetros preestablecidos de EA e indicadores

2) Transferir los parámetros a los indicadores mediante GV

3) Llamar indicadores al gráfico desde el EA usando WINAPI

Prefiero dibujar un gráfico de indicadores desde un EA mediante el objeto Arrow

 

¡¡Salud!!

No puedo entender por qué Open=Close=High=Low - no hay diferencia, todos los precios son los mismos, cuatro columnas de los mismos precios en el archivo que se crea. A continuación se muestra el código del EA que descarga los datos.

int init()  
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
   FileSeek(h, 0, SEEK_END);
   FileWrite(h,"Date","DayOfWeek","CLOSE","OPEN","High","LOW" );
   FileClose(h);        
  }
int start()
  {
   int h=FileOpen("H"+(Period()/60)+".csv",FILE_CSV|FILE_WRITE|FILE_READ,";");
    if(h<1)
      {
      Print("Файл не найден : ", GetLastError());
      return(false);
      }
      string Wtime=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES);
      string Wday=DoubleToStr(DayOfWeek(),0);
      FileSeek(h, 0, SEEK_END);
      FileWrite(h,Wtime,Wday,DoubleToStr(iClose("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),
                             DoubleToStr(iOpen("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),
                             DoubleToStr(iHigh("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)),
                             DoubleToStr(iLow("GBPUSD",0,0),MarketInfo(Symbol(),MODE_DIGITS)));
      FileClose(h);   
      Print("Close=",Close[0]);
      Print("Open=",Open[0]);
      Print("Low=",Low[0]);
      Print("High=",High[0]);
     
   return(0);
  }