Primero recordamos el tamaño del array, y luego precomprobamos el índice por no más del tamaño del array.
Al buscar los extremos, tampoco sé cuántos habrá. Almaceno cuántos he encontrado en la variable. Después, compruebo si el número de extremos encontrados no sale. Estoy trabajando con arrays estáticos en los que un rebasamiento está plagado de valores nulos o aleatorios.
Entendí su tarea como la búsqueda de los mismos mínimos diarios.
Yo lo resolvería así. Primero, memorizaría los extremos mínimos en el array (en la imagen lo tienes exactamente así, y en la condición estás comparando todos los precios mínimos diarios). Y luego buscaría los mismos con cierta precisión.
Lo que vemos es que Day1 y DayMin están en un paralelo 0,67366 ,
Más aún: si no hubiera antecedentes para este instrumento, sería normal.
Miramos la captura de pantalla 2
Abrimos la herramienta, echamos las líneas; no se tambalea en el probador
y pasar por el historial manualmente.
Miramosla captura de pantalla 3
En el historial de 2019.10.16 a las 15.00 encontramos el mínimo diario
Lancemos la línea y vayamos hacia atrás
Miramosla captura de pantalla 4
Y entonces entendemos que algo está mal aquí y el nivel (valor) de DayMin en la captura de pantalla 1 debe ser = 67233
Estoy empezando a aprender MQL4 es difícil para mí entender el códigode Aleksei Stepanenko(hay una clase en la clase, arrays están reescribiendo cosas, etc.).
Tengo una pregunta para los expertos sobre cómo funcionan sus indicadores y todos sus productos (me daría vergüenza)
En la página 9 del puesto el motivo del recurso en forma ampliada#88 https://www.mql5.com/ru/forum/357558/page9#comment_19689951
El algoritmo hace lo que dice, no lo que tú crees que hace. También imprimo en un archivo y veo lo que se cuenta, y a menudo no es lo que creo que es, sino lo que he escrito.
El algoritmo hace lo que dice, no lo que piensas. También imprimo en un archivo y veo lo que se calcula allí y, a menudo, no es lo que planeé, sino lo que escribí.
No sé cómo alguien escribe código.
Pero personalmente, escribo todo de manera simple y clara para mí en los estilos actuales y no puedo obtener valores aleatorios.
pero está claro de dónde crecen las piernas. y si está fuera de alcance es así, y no se silba más.
(el algoritmo hace lo que está escrito, y no como piensas ) el algoritmo debe hacer lo que piensas y no como quiere. de lo contrario es un desagüe del depósito. Y personalmente, esta opción no me conviene.
ejemplo variables globales (Aunque esto puede parecer un antediluviano para algunos)
//+------------------------------------------------------------------+//| new_test.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.4"#property strict//------------------------------------------------------------------+int Order_MagicNumber; // для авто торговли int Magic = 0 ; //для ручная торговля//------------------------------------------------------------------+externcolor Color = Black; // Color линия Bidexternbool Objects = true ; // Удалять объекты созданные Cоветникомexternint In_Time = 3 ; // Время входа эксперта на рынок (время терминала)externint Out_Time = 23 ; // Время выхода эксперта с рынка (время терминала)externint Time_End_Friday = 18 ; // Время после которого не торгуем в пятницу (время терминала)externstring r_t = "" ; // + externint Step = 10 ; // Step trailing stop ( Шаг трал стопа ) //--------------------------------------------------------------------------------------------------------externstring R_T = "Параметры" ; // ===================== Ручная Торговля ====================externint Take_Profit = 5000 ; // Take Profit externint Stop_Loss = 1200 ; // Stop Loss externint Stop_Loss_Profit = 15 ; // Stop loss without loss ( Стоп-лосс без убытка )externint Start_Profit = 50 ; // Start Trailing Stop ( Старт трейлинг стоп )externstring a_t = "" ; // + //--------------------------------------------------------------------------------------------------------externstring A_T = "Параметры" ; // ================ Автоматическая торговля =================externint Take_Profit_A = 2500 ; // Take Profit externint Stop_Loss_A = 1200 ; // Stop Loss externint Stop_Loss_Profit_A = 15 ; // Stop loss without loss ( Стоп-лосс без убытка )externint Start_Profit_A = 50 ; // Start Trailing Stop ( Старт трейлинг стоп ) //------------------------------------------------------------------+//--------------------------------------------------------------------------------------------------------externstring A_S = "Параметры" ; // ======================= Scalping =========================externint Take_Profit_S = 10000 ; // Take Profit externint Stop_Loss_S = 1500 ; // Stop Loss externint Stop_Loss_Profit_S = 15 ; // Stop loss without loss ( Стоп-лосс без убытка )externint Start_Profit_S = 30 ; // Start Trailing Stop ( Старт трейлинг стоп ) //------------------------------------------------------------------+string symbol_EURUSD = "EURUSD" ;
string symbol_GBPUSD = "GBPUSD" ;
string symbol_AUDUSD = "AUDUSD" ;
string symbol_NZDUSD = "NZDUSD" ;
string symbol_USDCHF = "USDCHF" ;
string symbol_USDJPY = "USDJPY" ;
string symbol_USDCAD = "USDCAD" ;
string symbol_USDCNH = "USDCNH" ;
string symbol_SPX500 = "SPX500" ;
//-------------------------------------------------------------------+double Rvi_Blue_H1;
double Rvi_Red_H1;
double Rvi_Blue_H4;
double Rvi_Red_H4;
double Rvi_Blue_D1;
double Rvi_Red_D1;
double Rvi_Blue_W1;
double Rvi_Red_W1;
//-------------------------------------------------------------------+double TakeProfit = NormalizeDouble (Take_Profit* _Point , _Digits ); // Тейк-профит ручная торговляdouble StopLoss = NormalizeDouble (Stop_Loss* _Point , _Digits ); // Стоп-лосс ручная торговляdouble StopLossProfit = NormalizeDouble (Stop_Loss_Profit* _Point , _Digits ); // Стоп-лосс безубытка ручная торговляdouble StartProfit = NormalizeDouble (Start_Profit* _Point , _Digits ); // Стрт-профит ручная торговля//-------------------------------------------------------------------+double TakeProfit_S = NormalizeDouble (Take_Profit_S* _Point , _Digits ); // Тейк-профит Scalping double StopLoss_S = NormalizeDouble (Stop_Loss_S* _Point , _Digits ); // Стоп-лосс Scalping double StopLossProfit_S = NormalizeDouble (Stop_Loss_Profit_S* _Point , _Digits ); // Стоп-лосс безубытка Scalping double StartProfit_S = NormalizeDouble (Start_Profit_S* _Point , _Digits ); // Стрт-профит Scalping //-------------------------------------------------------------------+ double TakeProfit_B = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит Breakdown автоматической торговли double TakeProfit_C = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит Center автоматической торговли double TakeProfit_ATR = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит ATR автоматической торговлиdouble TakeProfit_H1 = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит H1 автоматической торговлиdouble TakeProfit_H4 = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит H4 автоматической торговлиdouble TakeProfit_D1 = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит D1 автоматической торговлиdouble TakeProfit_W1 = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит W1 автоматической торговлиdouble TakeProfit_TB = NormalizeDouble (Take_Profit_A* _Point , _Digits ); // Тейк-профит Trend_Bar автоматической торговлиdouble StopLoss_B = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс Breakdown автоматической торговлиdouble StopLoss_C = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс Cente автоматической торговлиdouble StopLoss_ATR = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс ATR автоматической торговлиdouble StopLoss_H1 = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс H1 автоматической торговлиdouble StopLoss_H4 = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс H4 автоматической торговлиdouble StopLoss_D1 = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс D1 автоматической торговлиdouble StopLoss_W1 = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс W1 автоматической торговлиdouble StopLoss_TB = NormalizeDouble (Stop_Loss_A* _Point , _Digits ); // Стоп-лосс Trend_Bar автоматической торговлиdouble StopLossProfit_B = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка Breakdown автоматической торговлиdouble StopLossProfit_C = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка Center автоматической торговлиdouble StopLossProfit_ATR = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка ATR автоматической торговлиdouble StopLossProfit_H1 = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка H1 автоматической торговлиdouble StopLossProfit_H4 = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка H4 автоматической торговлиdouble StopLossProfit_D1 = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка D1 автоматической торговлиdouble StopLossProfit_W1 = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка W1 автоматической торговлиdouble StopLossProfit_TB = NormalizeDouble (Stop_Loss_Profit_A* _Point , _Digits ); // Стоп-лосс безубытка Trend_Bar автоматической торговлиdouble StartProfit_B = NormalizeDouble (Start_Profit_A* _Point , _Digits ); // Стрт-профит Breakdown автоматической торговлиdouble StartProfit_C = NormalizeDouble (Start_Profit_A* _Point , _Digits ); // Стрт-профит Center автоматической торговлиdouble StartProfit_ATR = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits ); // Стрт-профит ATR автоматической торговлиdouble StartProfit_H1 = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits ); // Стрт-профит H1 автоматической торговлиdouble StartProfit_H4 = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits ); // Стрт-профит H4 автоматической торговлиdouble StartProfit_D1 = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits ); // Стрт-профит D1 автоматической торговлиdouble StartProfit_W1 = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits ); // Стрт-профит W1 автоматической торговлиdouble StartProfit_TB = NormalizeDouble ((Start_Profit_A* 2 )* _Point , _Digits ); // Стрт-профит Trend_Bar автоматической торговлиdouble step = NormalizeDouble (Step* _Point , _Digits ); // Шаг трал стопа ручная торговля//-------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Функция Level
//+------------------------------------------------------------------+
double Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
int ACR_D1; // Возвращает количество скопированных баров D1
double Bar_data_W1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров W1
int ACR_W1; // Возвращает количество скопированных баров W1
double Bar_data_MN1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров MN1
int ACR_MN1; // Возвращает количество скопированных баров MN1
double High_D1_Level; // Возвращает значение максимальной цены бара D1
double Low_D1_Level; // Возвращает значение минимальной цены бара D1
double High_W1_Level; // Возвращает значение максимальной цены бара W1
double Low_W1_Level ; // Возвращает значение минимальной цены бара W1
double High_MN1_Level; // Возвращает значение максимальной цены бара MN1
double Low_MN1_Level; // Возвращает значение минимальной цены бара MN1
double Max_D_Level; // ближайшей максимальный D уровень
double Min_D_Level ; // ближайшей минимальный D уровень
double Max_W_Level ; // ближайшей максимальный W уровень
double Min_W_Level ; // ближайшей минимальный W уровень
double Max_MN_Level ; // ближайшей максимальный MN уровень
double Min_MN_Level ; // ближайшей минимальный MN уровень
//+------------------------------------------------------------------+
double Lots; // переменная для расчёта лота и вывода в кнопке
string lots; // переменная для отоброжения имя кнопки Lots
string sell; // переменная для отоброжения имя кнопки Sell
string bay; // переменная для отоброжения имя кнопки Bay
string balance; // переменная для отоброжения имя кнопки balance
int avto_torgovlya; // объекта «Кнопка» Авто_торговля
int avto_tral_stop; // объекта «Кнопка» Авто_трал_стоп
int break_even; // объекта «Кнопка» Безубыток
int scalper; // объекта «Кнопка» scalper
//-------------------------------------------------------------------+
int Time_Seconds; // сохроняем секунду
int Time_Minute; // сохроняем минуту
int Time_Hour; // сохроняем час
int ticks_to_close = 10; // количество тиков до снятия эксперта с терменала
int ExtRVIPeriod = 10;
datetime Order_datetime_S;
datetime Time_Day;
//-------------------------------------------------------------------+
string String_Order; // описание сигнала Bay или Sell
int Signal_Order_1; // если 1 то Bay - если -1 то сел (обнуляем 1 раз в день)
double BuyTralStop_S, SellTralStop_S;
int N1_Order_Bay_Time; // записываем время последней сделки (обнуляем 1 раз в день)
int N1_Order_Sell_Time; // записываем время последней сделки (обнуляем 1 раз в день)
int tframe[] = { 1 , 5 , 15 , 30 , 60 , 240 , 1440 , 10080 , 43200 };
string tf[] = { "M1" , "M5" , "M15" , "M30" , " H1" , " H4" , "D1" , "W1" , "MN1" };
int tfnumber = 9 ;
int ADX_Period = 14 ;
int ADX_Price = PRICE_CLOSE ;
double Step_Psar = 0.02 ;
double Max_Psar = 0.2 ;
color UpColor = clrBlue ;
color DownColor = clrRed ; // Trend_Barcolor FlatColor = clrLime ;
color TextColor = clrGreen ;
int Corner = 0 ;
double Psar;
double PADX,NADX;
string TimeFrameStr;
double IndVal[ 9 ];
//-------------------------------------------------------------------+string lots; // переменная для отображения имя кнопки Lotsstring sell; // переменная для отображения имя кнопки Sellstring bay; // переменная для отображения имя кнопки Baystring balance; // переменная для отображения имя кнопки balanceint avto_torgovlya; // объекта «Кнопка» Авто_торговляint avto_tral_stop; // объекта «Кнопка» Авто_трал_стопint break_even; // объекта «Кнопка» Без убытокint scalper; // объекта «Кнопка» scalper //-------------------------------------------------------------------+double Lots; // переменная для расчёта лотаint Time_Seconds; // сохраняем секунду int Time_Minute; // сохраняем минуту int Time_Hour; // сохраняем часint Friday; //переменная для торговли в пятницу если равно 0 торговля разрешена 1 торговля запрещена int ticks_to_close = 10 ; // количество тиков до снятия эксперта с терминалаint ExtRVIPeriod = 10 ;
datetime Order_datetime_S;
//-------------------------------------------------------------------+string File_Name;
int file_handle;
int Signal[ 100 ]; // Signal [0] текущий день Signal [10] Shaping_Signal Bay // Signal [1] H1 Signal [11] Shaping_Signal Sell// Signal [2] H4 Signal [12] // Signal [3] D1 Signal [13]// Signal [4] W1 Signal [14]// Signal [5] Scalper Signal [15]// Signal [6] Breakdown Signal [16]// Signal [7] Center Signal [17]// Signal [8] ATR Signal [18]// Signal [9] Trend_Bar Signal [19]//-------------------------------------------------------------------+int ATR_Period = 5 ;
double beginner = 0 ;
int timeshift = 0 , timeshifts = 0 ;
double H4, L4, H4t, L4t;
double fullatr;
double ATR_Level_5, ATR_Level_6;
double rates_d1 [][ 6 ];
double ATR_Level [ 10 ]; //Сохраняем в массиве Signal[100] значение линий //ATR_Level[0] line BAY//ATR_Level[1] line SELL //ATR_Level[2] line Center//ATR_Level[3] line High_d1 Предыдущий день//ATR_Level[4] line Low_d1 Предыдущий день //ATR_Level[5] line D_max от line SELL//ATR_Level[6] line D_min от line BAY //-------------------------------------------------------------------+double BuyTralStop, SellTralStop;
double BuyTralStopS, SellTralStopS;
double BuyTralStopH1, SellTralStopH1;
double BuyTralStopH4, SellTralStopH4;
double BuyTralStopD1, SellTralStopD1;
double BuyTralStopW1, SellTralStopW1;
double BuyTralStop_C, SellTralStop_C;
double BuyTralStop_B, SellTralStop_B;
double BuyTralStop_ATR, SellTralStop_ATR;
double BuyTralStop_TB, SellTralStop_TB;
//-------------------------------------------------------------------+int S_Order_Time[ 2 ]; // [0] Bay// [1] Sellstring S_Order; // описание сигнала
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
Cuarto día... toda la humanidad progresista...
Y está fuera de alcance.
Te estamos esperando.
No entiendo muy bien .
Primero recordamos el tamaño del array, y luego precomprobamos el índice por no más del tamaño del array.
Al buscar los extremos, tampoco sé cuántos habrá. Almaceno cuántos he encontrado en la variable. Después, compruebo si el número de extremos encontrados no sale. Estoy trabajando con arrays estáticos en los que un rebasamiento está plagado de valores nulos o aleatorios.
No me gustan las matrices dinámicas, pero tu caso es bastante grande.
Entendí su tarea como la búsqueda de los mismos mínimos diarios.
Yo lo resolvería así. Primero, memorizaría los extremos mínimos en el array (en la imagen lo tienes exactamente así, y en la condición estás comparando todos los precios mínimos diarios). Y luego buscaría los mismos con cierta precisión.
Invitamos a nuestros expertos:
1) Vitaly Muzichenko es el experto más importante de nuestro puesto (Gurú) a juzgar por los productos escritos por él.
2)Valeriy Yastremskiy
3)Alexey Tarabanov
4)Aleksey Stepanenko- Un hombre que no se limita a hablar, sino que ha escrito un código desde cero, pero el problema persiste.
5) Y todo lo demás.
Aquí vamos: he probado el código escritopor Aleksei Stepanenko#property versión "2.00".
Véase la captura de pantalla 1
Lo que vemos es que Day1 y DayMin están en un paralelo 0,67366 ,
Además: si no hubiera un historial para esta herramienta sería normal.
Abrimos la herramienta, dibujamos las líneas; no retrocede en el probador.
y pasar por el historial manualmente.
En el historial de 2019.10.16 a las 15.00 encontramos el mínimo diario
lanzamos una línea y vamos hacia atrás.
Y entonces nos damos cuenta de que algo está mal aquí y el nivel (valor) de DayMin en la pantalla 1 debería ser = 67233
Estoy empezando a estudiar MQL4 me cuesta entender el códigode Aleksei Stepanenko(clase en clase, arrays sobrescriben arrays, etc.).
Tengo una pregunta para los expertos sobre cómo funcionan sus indicadores y todos sus productos (me daría vergüenza)
En la página 9 del post el motivo de la dirección en forma ampliada#88 https://www.mql5.com/ru/forum/357558/page9#comment_19689951
Invitamos a nuestros expertos:
1) Vitaly Muzichenko es el experto más importante de nuestro puesto (Gurú) a juzgar por los productos escritos por él.
2)Valeriy Yastremskiy
3)Alexey Tarabanov
4)Aleksey Stepanenko- Un hombre que no se limita a hablar, sino que ha escrito un código desde cero, pero el problema persiste.
5) Y todo lo demás.
Aquí vamos: he probado el código escritopor Aleksei Stepanenko#property versión "2.00".
Véase la captura de pantalla 1
Lo que vemos es que Day1 y DayMin están en un paralelo 0,67366 ,
Más aún: si no hubiera antecedentes para este instrumento, sería normal.
Miramos la captura de pantalla 2
Abrimos la herramienta, echamos las líneas; no se tambalea en el probador
y pasar por el historial manualmente.
Miramosla captura de pantalla 3
En el historial de 2019.10.16 a las 15.00 encontramos el mínimo diario
Lancemos la línea y vayamos hacia atrás
Miramosla captura de pantalla 4
Y entonces entendemos que algo está mal aquí y el nivel (valor) de DayMin en la captura de pantalla 1 debe ser = 67233
Estoy empezando a aprender MQL4 es difícil para mí entender el códigode Aleksei Stepanenko(hay una clase en la clase, arrays están reescribiendo cosas, etc.).
Tengo una pregunta para los expertos sobre cómo funcionan sus indicadores y todos sus productos (me daría vergüenza)
En la página 9 del puesto el motivo del recurso en forma ampliada#88 https://www.mql5.com/ru/forum/357558/page9#comment_19689951
El algoritmo hace lo que dice, no lo que tú crees que hace. También imprimo en un archivo y veo lo que se cuenta, y a menudo no es lo que creo que es, sino lo que he escrito.
El algoritmo hace lo que dice, no lo que piensas. También imprimo en un archivo y veo lo que se calcula allí y, a menudo, no es lo que planeé, sino lo que escribí.
No sé cómo alguien escribe código.
Pero personalmente, escribo todo de manera simple y clara para mí en los estilos actuales y no puedo obtener valores aleatorios.
pero está claro de dónde crecen las piernas. y si está fuera de alcance es así, y no se silba más.
(el algoritmo hace lo que está escrito, y no como piensas ) el algoritmo debe hacer lo que piensas y no como quiere. de lo contrario es un desagüe del depósito. Y personalmente, esta opción no me conviene.
ejemplo variables globales (Aunque esto puede parecer un antediluviano para algunos)
Cuarto día... toda la humanidad progresista...
Y está fuera de alcance.
Te estamos esperando.
Como yo lo veo.
Espero verle.
Búscalo, ¿no es así?
Pero personalmente, escribo todo de forma sencilla y clara para mí en este estilo , y no obtengo valores aleatorios.
Pero está claro de dónde salen las piernas. Y si lo defuera de rango es cierto, no pasa volando con un silbido más allá.
(No creo que el algoritmo haga lo que dice, no lo que crees que debe hacer. A mí personalmente no me gusta esta opción.
No hay lógica. No tiene valores aleatorios, pero hay un valor atípico en la matriz.
Y la principal contradicción es que el algoritmo no hace lo que quiere, sino lo que está escrito. Sin ninguna correlación con las necesidades.
¿Por qué no le preguntas a los autores?
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link "https://www.mql5.com"