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

 

¿Puede alguien aconsejarme por qué mi indicador se muestra en las pruebas y permanece en la ventana del indicador una vez terminadas las pruebas, pero si lo llamo a través de iCustom en un Asesor Experto, el indicador no se muestra?

//+------------------------------------------------------------------+
//|                                             Tiscks_Window_49.mq4 |
#property version   "1.00"
#property strict

#property indicator_separate_window
#property indicator_buffers 1
#property  indicator_color1 clrLawnGreen

double ExtMapBuffer1[];
int Draw_Bars;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorShortName("Ask");
   IndicatorDigits(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexLabel(0,"Ask");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);
   for(int i=Bars-2; i>=0; i --)
     {
      ExtMapBuffer1[i+1]=ExtMapBuffer1[i];
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+


¿Quizás no lo he llamado correctamente en iCustom?

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double sep_window=iCustom(Symbol(),PERIOD_CURRENT,"Tiscks_Window_49",0,0);
   Print(" sep_window= ",sep_window);
  }
//+------------------------------------------------------------------+
 
Nauris Zukas:

¿Puede alguien aconsejarme por qué mi indicador se muestra en las pruebas y permanece en la ventana del indicador una vez terminadas las pruebas, pero si lo llamo a través de iCustom en un Asesor Experto, el indicador no se muestra?
¿Quizás no lo he llamado correctamente en iCustom?

Has acertado. Pruébalo con otros indicadores - será lo mismo.

 
Nauris Zukas:

¿Puede alguien decirme por qué mi indicador se muestra en las pruebas y permanece en la ventana de indicadores una vez terminadas las pruebas, pero si lo llamo a través de iCustom en el Asesor Experto, el indicador no se muestra?


¿Quizás no lo he llamado correctamente en iCustom?

ExtMapBuffer1[0]=MarketInfo(Symbol(),MODE_ASK);

Intenta ponerlo de forma sencilla =Pregunta;
o, para comprobar close[0]

y aquí, ¿por qué necesitas mover todo el historial? las primeras 100-300 barras son suficientes

for(int i=Bars-2; i>=0; i --)
 
LRA:

No pasa nada. Prueba con otros indicadores - será lo mismo...

Probado RSI, todo funciona. Hay un matiz en alguna parte, aún no sé dónde.


 
Taras Slobodyanik:

prueba solo =Pregunta;
o para comprobar close[0]

y aquí, ¿por qué querrías mover toda la historia? Las primeras 100-300 barras son suficientes.

Lo he cambiado pero tampoco ayuda.

 
Nauris Zukas:

¿Puede alguien aconsejarme por qué mi indicador se muestra en las pruebas y permanece en la ventana del indicador una vez terminadas las pruebas, pero si lo llamo a través de iCustom en un Asesor Experto, el indicador no se muestra?


¿Quizás no lo he llamado correctamente en iCustom?

Tal vez sea porque el indicador está escrito de esa manera. ¿Cuál es la probabilidad de que simplemente no tenga suficiente tiempo para recalcular todas las barras cuando es llamado desde el Asesor Experto?

Intente recalcular todas las barras sólo una vez, y luego sólo una nueva llamada del Asesor Experto.
 
Alexey Viktorov:

¿Cuál es la probabilidad de que simplemente no tenga tiempo para recalcular todas las barras cuando lo llamo desde el Asesor Experto?

Imprimo la impresión en Expert Advisor y muestra que los precios están ahí, lo que significa que las barras han sido recalculadas.

Alexey Viktorov:
Trate de recalcular todas las barras sólo una vez y luego sólo una nueva llamada de EA.

Todavía no he probado esta variante, aún estoy pensando cómo hacerlo.

 

Buenas tardes, dando mis primeros pasos, he leído el tutorial etc, puede que tenga mal la pregunta, pero aun así.....

Si quiero obtener un archivo de ticks de los últimos dos años, es posible que lo necesite durante un periodo de tiempo más largo para analizarlo en una aplicación de terceros. Si no me equivoco, pero las barras contienen sólo los datos actuales del gráfico, gracias.

 
ijonhson:

Buenas tardes, dando mis primeros pasos, he leído el tutorial etc, puede que tenga mal la pregunta, pero aun así.....

Si quiero obtener un archivo de ticks de los últimos dos años, es posible que lo necesite durante un periodo de tiempo más largo para analizarlo en una aplicación de terceros. Si no me equivoco, pero las barras contienen sólo los datos actuales del gráfico, gracias.

Si no sabe cómo utilizar estos registros, no intente sobrescribirlos con los reales. Google te ayudará.

 

Hola Artiom, ¿podrías decirme cómo escribir un EA para que no abra órdenes hasta que el precio haya superado un determinado nivel y luego siga abriendo órdenes incluso después de que el precio haya vuelto a superar el nivel? Saludos Andrei.