Por favor, ayúdenme a resolver el problema con el límite de desplazamiento en iHigh(Symbol(),timeframe,shift), que está limitado al número 1000.
iTime(Symbol(),timeframe,1001) da 1970.01.01 00:00
Nadie puede ayudar a que sólo haya una opción, leer desde el archivo de la historia? Si esa es la única opción, ¿alguien tiene una manera de determinar la información necesaria en el archivo de la historia.
No hay que pulsar la barra espaciadora, sino mantener pulsado el botón de encendido durante 5-10 segundos hasta que la señal desaparezca.
En KVN entre los moderadores, serás el capitán del equipo ... Repetiré la pregunta, tal vez alguien la responda: la alerta no se apaga tras pulsar la barra espaciadora... La versión del terminal es la última de 500... Nunca he visto esto antes.
Chicos, por favor, dadme una pista. Ya he hecho esta pregunta, pero no he conseguido que el código sea correcto.
Una vez más, le diré lo esencial de la idea. Mediante el indicador Awesom, desde la parte inferior (por debajo de 0) hasta la superior (por encima de 0), se calcula el volumen de la onda (indicador Volumes).
La etiqueta de texto con la suma del volumen de la onda, debe imprimirse en el gráfico del indicador y calcularse sobre todo el historial.
Tengo esto:
¿Cuál es el error?
#property indicator_separate_window#property indicator_buffers 2#property indicator_color1 Red#property indicator_color2 SteelBlue#property indicator_width1 2//---- basic fan indicator parametersexternbool Show_AOLine_2=true;
externint SlowEMA3=34;
externint EMA=3;
externbool Show_Volume=true;
externdouble coaf=0.5;
//---- indicator buffersdouble AOBuffer3[];
double ExtMapBuffer1[];
double VLUP, AO_up,AO_dn;
double prhgh_e=0, prhgh_s, prlw_e=0, prlw_s;
datetime tmhgh, tmlw;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- drawing settingsstring name_ind = "Awesome_super_volumes";
IndicatorShortName("Awesome_super_volumes");
//---- AO_fan line 2 (basic)if(Show_AOLine_2 ==true){Show_AOLine_2=DRAW_LINE; }
else
{Show_AOLine_2=DRAW_NONE; }
SetIndexBuffer(0,AOBuffer3);
SetIndexStyle(0,Show_AOLine_2);
SetIndexLabel(0,"basic line");
SetIndexBuffer(1,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexLabel(1,"Volume");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+//| Awesome Oscillator |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current;
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++)
{
//---- AO_fan + Volumes
AOBuffer3[i]=iMA(NULL,0,EMA,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,SlowEMA3,0,MODE_SMA,PRICE_MEDIAN,i);
if (Show_Volume==true)
{
double nSum = Volume[i]*Point*coaf;
if (AOBuffer3[i]<=0)ExtMapBuffer1[i] = nSum;
if (AOBuffer3[i]>0)ExtMapBuffer1[i] = -nSum;
double Vol_Arr[];
if (AOBuffer3[i]<=0)Vol_Arr[i]=Volume[i]*Point*coaf;
if (AOBuffer3[i]>0)Vol_Arr[i] = -Volume[i]*Point*coaf;
}
}
//-- Поиск High & Time & Min_AO if (AOBuffer3[i]>0)
{
AO_up = AOBuffer3[i]*0.1+AOBuffer3[i];
prhgh_s = High[i];
if (prhgh_s >= prhgh_e) {prhgh_e = prhgh_s; tmhgh = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmhgh, AO_up, Black);
}
//-- Поиск Low & Time & Max_AOif (AOBuffer3[i]<0)
{
AO_dn = AOBuffer3[i]*0.1+AOBuffer3[i];
prlw_s = Low[i];
if (prlw_s > prlw_e) {prlw_e = prlw_s; tmlw = Time[i];}
//SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
// -- Пересчет баров от High до Lowif(NewBar())
{
int colbr = iBarShift(NULL,0,tmhgh)-iBarShift(NULL,0,tmlw);
int shift=iBarShift(NULL,0,tmhgh);
for (i=0; i<=colbr; i++)
{VLUP += MathAbs(iVolume(NULL,0, shift+i));}
}
Comment("Vol_",VLUP,prlw_e,prhgh_e);
for(i=0; i<limit; i++)
{
SetText("Awesome_super_volumes"+Close[i], DoubleToStr(VLUP,0), tmlw, AO_dn, Black);
}
//---- donereturn(0);
}
//+------------------------------------------------------------------+void SetText(string name, string Vl, datetime t1, double p1, color c)
{
// if (ObjectFind(name)!=-1) ObjectDelete(name);ObjectCreate(name,OBJ_TEXT,WindowFind("Awesome_super_volumes"),0,0,0,0);
ObjectSetText(name, Vl, 10, "Times New Roman", c);
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1);
ObjectSet(name, OBJPROP_COLOR, c);
}
bool NewBar()
{
staticdatetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}}
1. La función de conversión convierte y los cambios de las variables en esta función no cambiarán si no hay un tick. TimeToStr(TimeLocal(), TIME_MINUTES) - depende del tick.
¿Tienes alguna idea de cómo sacar la hora de Win32/User32 para que el EA no se atasque?
1. Ninguna de estas funciones depende de las garrapatas. Sólo hay que llamar a la función para obtener el valor de retorno. El indicador y el Asesor Experto lo llaman a la llegada de un tick, pero no es gran cosa. Puede hacer un bucle con un Asesor Experto o un script. La frecuencia de las llamadas será la misma que en el indicador o guión.
2. No tiene sentido. Tendrá que inventar el mismo TimeLocal().
No he podido encontrar nada en el libro de texto sobre lo que significa "&" en los parámetros formales de la función. ¿Puede decirme a qué afecta y qué significa?
con el mismo bucle?
Voy a intentar
Por favor, ayúdenme a resolver el problema con el límite de desplazamiento en iHigh(Symbol(),timeframe,shift), que está limitado al número 1000.
iTime(Symbol(),timeframe,1001) da 1970.01.01 00:00Nadie puede ayudar a que sólo haya una opción, leer desde el archivo de la historia? Si esa es la única opción, ¿alguien tiene una manera de determinar la información necesaria en el archivo de la historia.
No hay que pulsar la barra espaciadora, sino mantener pulsado el botón de encendido durante 5-10 segundos hasta que la señal desaparezca.
En KVN entre los moderadores, serás el capitán del equipo ... Repetiré la pregunta, tal vez alguien la responda: la alerta no se apaga tras pulsar la barra espaciadora... La versión del terminal es la última de 500... Nunca he visto esto antes.
Chicos, por favor, dadme una pista. Ya he hecho esta pregunta, pero no he conseguido que el código sea correcto.
Una vez más, le diré lo esencial de la idea. Mediante el indicador Awesom, desde la parte inferior (por debajo de 0) hasta la superior (por encima de 0), se calcula el volumen de la onda (indicador Volumes).
La etiqueta de texto con la suma del volumen de la onda, debe imprimirse en el gráfico del indicador y calcularse sobre todo el historial.
Tengo esto:
¿Cuál es el error?
1. La función de conversión convierte y los cambios de las variables en esta función no cambiarán si no hay un tick. TimeToStr(TimeLocal(), TIME_MINUTES) - depende del tick.
¿Tienes alguna idea de cómo sacar la hora de Win32/User32 para que el EA no se atasque?
1. Ninguna de estas funciones depende de las garrapatas. Sólo hay que llamar a la función para obtener el valor de retorno. El indicador y el Asesor Experto lo llaman a la llegada de un tick, pero no es gran cosa. Puede hacer un bucle con un Asesor Experto o un script. La frecuencia de las llamadas será la misma que en el indicador o guión.
2. No tiene sentido. Tendrá que inventar el mismo TimeLocal().
No he podido encontrar nada en el libro de texto sobre lo que significa "&" en los parámetros formales de la función. ¿Puede decirme a qué afecta y qué significa?
https://docs.mql4.com/ru/basis/variables/formal
La segunda parte de la página a partir de las palabras "Es posible pasar parámetros por referencia..." Mira cuidadosamente allí Ejemplo.
Buenas tardes.
Podrías aconsejarme sobre la mejor manera de registrar el cruce de, por ejemplo, los estocásticos:
en la primera y tercera barra comparar los valores de las líneas de señal y principal o la primera y segunda ?