Con respecto a ArrayCopyRates, Alexey dijo correctamente. Está escrito en la ayuda:
Así que tienes que escribirlo:
Pero no es un código económico.
Sí, no tiene sentido arrastrar las 6 métricas de barras si sólo necesitas una. Bajo.
Y no tiene sentido profundizar en una escala (TF). Después de un trimestre puedes pasar a semanas, luego a meses, y 132 meses, que son 11 años.
En general la idea es que no tiene sentido contar en todo el gráfico, la cantidad de datos históricos es esencialmente aleatoria, puede ser del año 70 o del 2000, en diferentes instrumentos diferentes proveedores de datos tienen diferentes datos, y la lógica es siempre mejor cuando es la misma para todos los casos.
La idea es que sólo necesitamos estas barras de historia:
El resto puede ser eliminado de la matriz. Es entonces cuando sería económico.
Así es como se dibujó. La idea aún no ha sido expresada por TopekStarter)
Tenemos que encontrar los extremos significativos para TC y compararlos. Hay muchos Lows idénticos a distancia. Muy a menudo la apertura y el cierre de una vela son iguales, y qué decir de los precios mínimos del día a una distancia considerable.
Sí, no tiene sentido arrastrar los seis indicadores de la barra si sólo necesita uno. Bajo.
Y no tiene sentido profundizar en una escala (TF). Después de un trimestre puedes pasar a semanas, luego a meses, y 132 meses, que son 11 años.
En general, la idea de que no tiene sentido contar con todo el gráfico, la cantidad de datos históricos es esencialmente aleatoria, puede ser del año 70, y puede ser del 2000, diferentes proveedores de datos tienen diferentes datos en diferentes instrumentos, y la lógica es siempre mejor cuando es la misma para todos los casos.
Intentaré ser más específico.
1. esto no es una idea, sino una experiencia de 5 años en el comercio que decidí automatizar (es decir, no es bueno sentarse en el monitor todo el tiempo, lo entiendes con años).
2. Utilizamos estas líneas para formar falsas rupturas, y funciona (sólo hay que saber cómo aplicarlas), puede que en el futuro no salgan.
3. En 2020, el 10 de febrero, por primera vez me di cuenta de esta inexactitud, que crees que es innecesaria desde una historia tan lejana
Fíjate donde está el Min_D y puede ser una vez al año o incluso 10 años (como va ).
Además se ve el desarrollo de eventos 12000 puntos a corto (creo que no es aceptable para perder un movimiento) En este caso, la salida más allá de la matriz y no me dejó perder esta oportunidad.
Así es como funciona hasta el día de hoy y en general no causó ningún problema
Pero ahora es el momento de seguir adelante y estudiar MQL4
4. En cuanto a la carga o lo que sea allí (una vez al día a las 24.00 se puede volver a calcular y 10 veces no comercio el viernes después de las 20.00, y en los días de semana de 23.00 a 3.00) déjame contar.
5. la idea aún no ha sido expresada TopikStarter.
Si lees desde el principio del post, no desde la mitad todo está claro.
1. Low_D1 y High_D1 (D1 Último día), Min_D y Max_D (el historial más cercano, este es el disponible para el símbolo) Min_D < Low_D1 yMax_D > High_D1
2. Low_W1 y High_W1 (además es similar a lo descrito anteriormente solo que por semanas)
3. Low_MN1 y High_MN1 (el mes es relativamente similar)
Vengo a pedir consejo sobre cómo solucionarlo , quizás algo que no sé (como cargar algún archivo de historial , o la propia matriz no soporta , o quizás 16 gigas de aperitivo no son suficientes , esa es la cuestión , etc.)
por el momento solo es Alerta cuando la línea no cambia de valor .
//+------------------------------------------------------------------+//| Test_Level.mq4 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strictdouble Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1double Low_D1_Level; // Возвращает значение минимальной цены бара D1double Min_D_Level ; // ближайшей минимальный D уровеньdatetime Time_Day;
int A_C_R; // возвращает количество скопированных баров D1//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
Level();
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
On_Timer();
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Функция Level //+------------------------------------------------------------------+void Level()
{
A_C_R = ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
Low_D1_Level = iLow (_Symbol,PERIOD_D1,1); // Возвращает значение минимальной цены бара D1//--- Min_D_Leve //for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++) // или так то ошибки нет и линия не перерисовывается for(int i = 1; ;i++) // а так выход за массив
{
Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
if(Bar_data_D1 [i][2]>=0)
{
if( Bar_data_D1 [i][2] < Low_D1_Level)
{
Min_D_Level = Bar_data_D1 [i][2];break;
}
}
}
//+-------------------------Low_D1_Level----------------------------+ if(ObjectFind("Low_D1")!=Low_D1_Level)
{
ObjectDelete("Low_D1");
if(ObjectFind("Low_D1")!=0)
{
ObjectCreate("Low_D1",OBJ_HLINE, 0, Time[0],Low_D1_Level);
ObjectSet("Low_D1", OBJPROP_COLOR, clrMaroon);
ObjectSet("Low_D1", OBJPROP_WIDTH, 1);
}
}
if(ObjectFind("Low_D1_label")!=Low_D1_Level)
{
ObjectDelete("Low_D1_label");
if(ObjectFind("Low_D1_label") != 0)
{
ObjectCreate("Low_D1_label", OBJ_TEXT, 0, Time[13], Low_D1_Level);
ObjectSetText("Low_D1_label", "Low_D1: " + DoubleToStr(Low_D1_Level,_Digits), 8,"Verdana", Brown);
}
}
//+-------------------------Min_D_Level----------------------------+ if(ObjectFind("Min_D")!= Min_D_Level)
{
ObjectDelete("Min_D");
if(ObjectFind("Min_D")!=0)
{
ObjectCreate("Min_D",OBJ_HLINE, 0, Time[0],Min_D_Level);
ObjectSet("Min_D", OBJPROP_COLOR, clrMaroon);
ObjectSet("Min_D", OBJPROP_WIDTH, 1);
}
}
if(ObjectFind("Min_D_label")!=Min_D_Level)
{
ObjectDelete("Min_D_label");
if(ObjectFind("Min_D_label") != 0)
{
ObjectCreate("Min_D_label", OBJ_TEXT, 0, Time[30], Min_D_Level);
ObjectSetText("Min_D_label", "Min_D: " + DoubleToStr(Min_D_Level,_Digits), 8,"Verdana", Brown);
}
}
}
//+------------------------------------------------------------------+//| функция удаление всех объектов созданных советником//+------------------------------------------------------------------+void DestroyObject()
{
int tot=ObjectsTotal();
for( int i=tot; i>=0; i--)
{
if(ObjectName(i)=="Low_MN1"){ObjectDelete(0,"Low_MN1");Print("<< Объект Low_MN удалён >>");}
if(ObjectName(i)=="Low_MN1_label"){ObjectDelete(0,"Low_MN1_label");Print("<< Объект Low_MN1_label удалён >>");}
if(ObjectName(i)=="Min_D"){ObjectDelete(0,"Min_D");Print("<< Объект Min_D удалён >>");}
if(ObjectName(i)=="Min_D_label"){ObjectDelete(0,"Min_D_label");Print("<< Объект Min_D_label удалён >>");}
}
}
//+-------------------------------------------------------------------------+ // функция Timer //+-------------------------------------------------------------------------+void On_Timer()
{
if(Day()!= Time_Day)
{
Level();
Time_Day = Day();
}
}
Con respecto a ArrayCopyRates, Alexey dijo correctamente. Está escrito en la ayuda:
Así que tienes que escribirlo:
Pero no es un código económico.
Sí, no tiene sentido arrastrar las 6 métricas de barras si sólo necesitas una. Bajo.
Y no tiene sentido profundizar en una escala (TF). Después de un trimestre puedes pasar a semanas, luego a meses, y 132 meses, que son 11 años.
En general la idea es que no tiene sentido contar en todo el gráfico, la cantidad de datos históricos es esencialmente aleatoria, puede ser del año 70 o del 2000, en diferentes instrumentos diferentes proveedores de datos tienen diferentes datos, y la lógica es siempre mejor cuando es la misma para todos los casos.
Valery, ¡dices exactamente eso!
La idea es que sólo necesitamos estas barras de historia:
El resto puede ser eliminado de la matriz. Es entonces cuando sería económico.
Valery, ¡dices exactamente eso!
La idea es que sólo necesitamos estas barras de historia:
El resto puede ser eliminado de la matriz. Es entonces cuando sería económico.
Así es como se dibujó. La idea aún no ha sido expresada por TopekStarter)
Tenemos que encontrar los extremos significativos para TC y compararlos. Hay muchos Lows idénticos a distancia. Muy a menudo la apertura y el cierre de una vela son iguales, y qué decir de los precios mínimos del día a una distancia considerable.
He notado un error en los ciclos. Y cambió la comparación a ayer en lugar del día actual. Prueba con
¡¡¡Saludos a todos!!!
He estado fuera por negocios.
El proceso está en pleno desarrollo.
¡Lo he probado!
El resultado es el siguiente.
Detenido el probador pasó por el historial manualmente. El valor de Max_D debe tomarse de aquí.
No entiendo qué pasa. Es una línea de mínimos.
Por si acaso, vuelve a copiar el código, lo he cambiado periódicamente ahí, quizá tengas una versión antigua
Sí, no tiene sentido arrastrar los seis indicadores de la barra si sólo necesita uno. Bajo.
Y no tiene sentido profundizar en una escala (TF). Después de un trimestre puedes pasar a semanas, luego a meses, y 132 meses, que son 11 años.
En general, la idea de que no tiene sentido contar con todo el gráfico, la cantidad de datos históricos es esencialmente aleatoria, puede ser del año 70, y puede ser del 2000, diferentes proveedores de datos tienen diferentes datos en diferentes instrumentos, y la lógica es siempre mejor cuando es la misma para todos los casos.
Intentaré ser más específico.
1. esto no es una idea, sino una experiencia de 5 años en el comercio que decidí automatizar (es decir, no es bueno sentarse en el monitor todo el tiempo, lo entiendes con años).
2. Utilizamos estas líneas para formar falsas rupturas, y funciona (sólo hay que saber cómo aplicarlas), puede que en el futuro no salgan.
3. En 2020, el 10 de febrero, por primera vez me di cuenta de esta inexactitud, que crees que es innecesaria desde una historia tan lejana
Fíjate donde está el Min_D y puede ser una vez al año o incluso 10 años (como va ).
Además se ve el desarrollo de eventos 12000 puntos a corto (creo que no es aceptable para perder un movimiento) En este caso, la salida más allá de la matriz y no me dejó perder esta oportunidad.
Así es como funciona hasta el día de hoy y en general no causó ningún problema
Pero ahora es el momento de seguir adelante y estudiar MQL4
4. En cuanto a la carga o lo que sea allí (una vez al día a las 24.00 se puede volver a calcular y 10 veces no comercio el viernes después de las 20.00, y en los días de semana de 23.00 a 3.00) déjame contar.
5. la idea aún no ha sido expresada TopikStarter.
Si lees desde el principio del post, no desde la mitad todo está claro.
1. Low_D1 y High_D1 (D1 Último día), Min_D y Max_D (el historial más cercano, este es el disponible para el símbolo) Min_D < Low_D1 yMax_D > High_D1
2. Low_W1 y High_W1 (además es similar a lo descrito anteriormente solo que por semanas)
3. Low_MN1 y High_MN1 (el mes es relativamente similar)
En el código a para // leer la descripción
Vengo a pedir consejo sobre cómo solucionarlo , quizás algo que no sé (como cargar algún archivo de historial , o la propia matriz no soporta , o quizás 16 gigas de aperitivo no son suficientes , esa es la cuestión , etc.)
por el momento solo es Alerta cuando la línea no cambia de valor .
No entiendo qué pasa. Es una línea de mínimos.
Por si acaso, vuelve a copiar el código, lo he cambiado periódicamente, quizá tengas una versión antigua
Bien. Lo intentaré de nuevo.