Вот спасибо, Николай, - благодаря тебе я узнал как много выйграл от того, что понятия не имел об отладчике.
Если бы на него опирался, - ничего бы сейчас у меня не было. Может и было бы, - но в половину меньше.
Просто потому, что не смог бы использовать коллосальное преимущество пользоваться родным языком в программировании.
Странно, ведь английский ты знаешь гораздо лучше меня, хоть я и живу в Канаде. Почему бы не писать длинные имена на английском? Правда они не будут подсвечиваться красным.
Nikolai Semko: Странно, ведь английский ты знаешь гораздо лучше меня, хоть я и живу в Канаде. Почему бы не писать длинные имена на английском? Правда они не будут подсвечиваться красным.
На каждом слове в уме (пусть и бессознательно) переводить?
Родной язык - биологически врощен в мозг. Понимание самое быстрое из возможных. Чужой язык всегда проходит обработку, прежде чем понимается.
Чистая биология.
Пользуясь русским я гораздо быстрее понимаю собственный код, чем если бы я ползовался английским. Я гораздо лучше его запоминаю.
На каждом слове в уме (пусть и бессознательно) переводить?
Родной язык - биологически врощен в мозг. Понимание самое быстрое из возможных. Чужой язык всегда проходит обработку, прежде чем понимается.
Чистая биология.
Пользуясь русским я гораздо быстрее понимаю собственный код, чем если бы я ползовался английским. Я гораздо лучше его запоминаю.
А попробуй что нибудь замутить через #define. Просто сейчас я не за компьютером. Может удастся как-то работать с русскими именами переменных в отладчике, если тебе без них никак.
На каждом слове в уме (пусть и бессознательно) переводить?
Родной язык - биологически врощен в мозг. Понимание самое быстрое из возможных. Чужой язык всегда проходит обработку, прежде чем понимается.
Чистая биология.
Пользуясь русским я гораздо быстрее понимаю собственный код, чем если бы я ползовался английским. Я гораздо лучше его запоминаю.
Так случилось жизнь что у меня никогда не было английского - ни в школе, ни в одном институте, ни во втором. На слух я его не понимаю абсолютно до сих пор. Учу сама, но первые начинания были задолго до того как занялась программированием. Анигдот " - Как вы так быстро выучили англ? - А че там учить - они все слова взяли из С++" - это про меня.
И знаете? Никогда почему-то англ названия не мусолили глаз. Поэтому говорите за себя - нечего обобщать на всех.
Nikolai Semko: А попробуй что нибудь замутить через #define. Просто сейчас я не за компьютером. Может удастся как-то работать с русскими именами переменных в отладчике, если тебе без них никак.
Для удобства публики я перевел код своего решения на английский.
//+------------------------------------------------------------------+//| Новый бар 2.mq4 |//| Peter Konow |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Peter Konow"#property link"https://www.mql5.com"#property version"1.00"#property strict//+------------------------------------------------------------------+datetime Last_Bar_Time;
int Periodicity = 25;
int All_symbols;
string Symbols[];
int Timeframes[7] = {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1};
int All_Timeframes = 7;
int All_bars_table[][7];
bool New_Bar_Events[][7];
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create timerEventSetMillisecondTimer(25);
//-------------------------------------------------------------//Записываем время последнего бара на момент загрузки эксперта. //Для корректного начала работы, робота нужно запустить на М1. //-------------------------------------------------------------
Last_Bar_Time = Time[0];
//------------------------------------------------------------- //Узнаем сколько символов есть в обзоре рынка.//---------------------------------------------------------
All_symbols = SymbolsTotal(true);
//--------------------------------------------------------- //Устанавливаем размер массива Symbols. Внутри него будут записаны//имена всех символов, которые есть в окне обзоре рынка.//---------------------------------------------------------ArrayResize(Symbols,All_symbols);
//---------------------------------------------------------//Устанавливаем размеры массивов "All_bars_table[]" и "New_Bar_Events[]".//В массиве "All_bars_table[]" будет записыватся текущее количество баров каждого символа//и каждого таймфрейма. А в массиве "New_Bar_Events[]" устанавливаться флаги//события нового бара для каждого символа и каждого таймфрейма. //---------------------------------------------------------ArrayResize(All_bars_table,All_symbols);
ArrayResize(New_Bar_Events,All_symbols);
//---------------------------------------------------------//Записываем наименования символов обзора рынка в массив "Symbols[]".//---------------------------------------------------------for(int a1 = 0; a1 < All_symbols; a1++)
{
Symbols[a1] = SymbolName(a1 + 1,true);
//Возможно, нумерация символов в обзора рынка идет с нуля.//Тогда: Symbols[a1] = SymbolName(a1,true);
}
//---------------------------------------------------------return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- destroy timerEventKillTimer();
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
staticbool Start_count;
staticint Current_period;
//---------------------------//Нам нужен корректный старт отсчета. Это должно быть время начала бара.//---------------------------if(!Start_count && Last_Bar_Time != Time[0])Start_count = true;
//--------------------------- if(Start_count)Current_period++;
//--------------------------- //В следующем цикле, мы будем обращатся к функции iBars для получения количества баров на //каждом из символов и таймфреймов, которые будем проходить в цикле.//Далее, будем сравнивать записанное количество баров с текущим и при //наличии разницы установим флаг события нового бара в массив "New_Bar_Events[]".//---------------------------if(Current_period*Periodicity >= 1000)
{
for(int a1 = 0; a1 < All_symbols; a1++)
{
string This_symbol = Symbols[a1];
//---------------------------------for(int a2 = 0; a2 < All_Timeframes; a2++)
{
int This_timeframe = Timeframes[a2];
//------------------------------------------int All_current_bars = iBars(This_symbol,This_timeframe);
//------------------------------------------if(All_current_bars > All_bars_table[a1][a2])
{
//------------------------------------------------------------//Если это не самая первая запись в массив All_bars_table,//то фиксируем событие нового бара.//------------------------------------------------------------if(All_bars_table[a1][a2])
{
New_Bar_Events[a1][a2] = true;
}
//------------------------------------------------------------//Устанавливаем новое значение текущего количества баров.//------------------------------------------------------------
All_bars_table [a1][a2] = All_current_bars;
}
//------------------------------------------
}
}
//---------
Current_period = 0;
}
//-----------------------------------------------//Здесь наш код...//Здесь наш код...//Здесь наш код...//-----------------------------------------------//После завершения всех вызовов на этом событии таймера//снимаем флаги событий нового бара.if(!Current_period)Refresh_new_bar_events_table();
//-----------------------------------------------
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//Функция снимает флаги событий нового бара.//Эта процедура осуществляется после выполнения всего пользовательского//кода один раз в минуту. Вплоть до момента очищения массива флагов //новых баров, все функции могут их видеть обращаясь к массиву напрямую.//+------------------------------------------------------------------+void Refresh_new_bar_events_table()
{
for(int a1 = 0; a1 < All_symbols; a1++)
{
for(int a2 = 0; a2 < All_Timeframes; a2++)
{
New_Bar_Events[a1][a2] = false;
}
}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//Пример использования событий нового бара в пользовательском функционал.//Просто обращаемся к глобальному массиву "New_Bar_Events[a1][a2]" напрямую//и используем событие в наших торговых алгоритмах.//+------------------------------------------------------------------+void Trading_on_new_bars_strategy()
{
for(int a1 = 0; a1 < All_symbols; a1++)
{
string This_symbol = Symbols[a1];
//----------------------------------for(int a2 = 0; a2 < All_Timeframes; a2++)
{
bool New_bar = New_Bar_Events[a1][a2];
int This_timeframe = Timeframes[a2];
//----------------------------------if(New_bar && This_symbol == "EURUSD" && This_timeframe == PERIOD_M15)
{
//Buy();
}
//---------------------------------- if(New_bar && This_symbol == "AUDUSD" && This_timeframe == PERIOD_M30)
{
//Sell();
}
//----------------------------------
}
}
}
//+------------------------------------------------------------------+
Nikolai Semko: Я абсолютно уверен, если бы применял в своей работе такие бы инструменты как ООП и отладчик, то сделал бы всё гораздо быстрее и качественнее!
Не буду спорить. Время и практика покажет, верный ли я выбрал путь, подход и инструментарий.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Нет.
К сожалению у меня осталось до 14:00 14.09 всего пол-гига трафика поэтому искать не буду. После этого времени поищу. Это что-то с чем-то...
Вот спасибо, Николай, - благодаря тебе я узнал как много выйграл от того, что понятия не имел об отладчике.
Если бы на него опирался, - ничего бы сейчас у меня не было. Может и было бы, - но в половину меньше.
Просто потому, что не смог бы использовать коллосальное преимущество пользоваться родным языком в программировании.
Странно, ведь английский ты знаешь гораздо лучше меня, хоть я и живу в Канаде. Почему бы не писать длинные имена на английском? Правда они не будут подсвечиваться красным.
На каждом слове в уме (пусть и бессознательно) переводить?
Родной язык - биологически врощен в мозг. Понимание самое быстрое из возможных. Чужой язык всегда проходит обработку, прежде чем понимается.
Чистая биология.
Пользуясь русским я гораздо быстрее понимаю собственный код, чем если бы я ползовался английским. Я гораздо лучше его запоминаю.
На каждом слове в уме (пусть и бессознательно) переводить?
Родной язык - биологически врощен в мозг. Понимание самое быстрое из возможных. Чужой язык всегда проходит обработку, прежде чем понимается.
Чистая биология.
Пользуясь русским я гораздо быстрее понимаю собственный код, чем если бы я ползовался английским. Я гораздо лучше его запоминаю.
На каждом слове в уме (пусть и бессознательно) переводить?
Родной язык - биологически врощен в мозг. Понимание самое быстрое из возможных. Чужой язык всегда проходит обработку, прежде чем понимается.
Чистая биология.
Пользуясь русским я гораздо быстрее понимаю собственный код, чем если бы я ползовался английским. Я гораздо лучше его запоминаю.
Так случилось жизнь что у меня никогда не было английского - ни в школе, ни в одном институте, ни во втором. На слух я его не понимаю абсолютно до сих пор. Учу сама, но первые начинания были задолго до того как занялась программированием. Анигдот " - Как вы так быстро выучили англ? - А че там учить - они все слова взяли из С++" - это про меня.
И знаете? Никогда почему-то англ названия не мусолили глаз. Поэтому говорите за себя - нечего обобщать на всех.
А попробуй что нибудь замутить через #define. Просто сейчас я не за компьютером. Может удастся как-то работать с русскими именами переменных в отладчике, если тебе без них никак.
Для удобства публики я перевел код своего решения на английский.
Надеюсь, ничего не перепутал.
Вот спасибо, Николай, - благодаря тебе я узнал как много выйграл от того, что понятия не имел об отладчике.
Если бы на него опирался, - ничего бы сейчас у меня не было. Может и было бы, - но в половину меньше.
Просто потому, что не смог бы использовать коллосальное преимущество пользоваться родным языком в программировании.
Для удобства публики я перевел код своего решения на английский.
Надеюсь, ничего не перепутал.
Попробуйте по принтуйте, и посмотрите результат
Я абсолютно уверен, если бы применял в своей работе такие бы инструменты как ООП и отладчик, то сделал бы всё гораздо быстрее и качественнее!
Не буду спорить. Время и практика покажет, верный ли я выбрал путь, подход и инструментарий.
Попробуйте по принтуйте, и посмотрите результат
У вас какой результат?
Вы функцию откуда вызываете?