Grazie, Nikolai - grazie a te ho imparato quanto ho guadagnato dal non avere un'idea del debugger.
Se ci avessi fatto affidamento, ora non avrei nulla. Forse l'avrei fatto, ma a metà.
Semplicemente perché non avrei potuto sfruttare un vantaggio colossale per usare il mio linguaggio nella programmazione.
Strano, perché conosci l'inglese molto meglio di me, anche se vivo in Canada. Perché non scrivere nomi lunghi in inglese? Solo che non saranno evidenziati in rosso.
Nikolai Semko: È strano, perché tu conosci l'inglese molto meglio di me, anche se vivo in Canada. Perché non scrivere nomi lunghi in inglese? Solo che non saranno evidenziati in rosso.
Su ogni parola nella tua mente (anche se inconsciamente) tradurre?
La lingua madre è biologicamente radicata nel cervello. La comprensione è la più veloce possibile. Il linguaggio alieno viene sempre elaborato prima di essere compreso.
Biologia pura.
Capisco il mio codice molto più velocemente usando il russo che se usassi l'inglese. Lo memorizzo molto meglio.
Su ogni parola nella vostra mente (anche se inconsciamente) tradurre?
La lingua madre è biologicamente radicata nel cervello. La comprensione è la più veloce possibile. Il linguaggio alieno viene sempre elaborato prima di essere compreso.
Biologia pura.
Capisco il mio codice molto più velocemente usando il russo che se usassi l'inglese. Sono molto più bravo a ricordarlo.
E provate a fare qualcosa con #define. Solo che non sono al mio computer in questo momento. Forse puoi lavorare in qualche modo con i nomi delle variabili russe nel debugger, se non puoi farne a meno.
Su ogni parola nella vostra mente (anche se inconsciamente) tradurre?
La lingua madre è biologicamente radicata nel cervello. La comprensione è la più veloce possibile. Il linguaggio alieno viene sempre elaborato prima di essere compreso.
Biologia pura.
Capisco il mio codice molto più velocemente usando il russo che se usassi l'inglese. Me lo ricordo molto meglio.
Si dà il caso che non ho mai avuto l'inglese - non a scuola, non in un solo istituto, non in un secondo. Ancora non ci capisco niente a orecchio. Lo sto imparando da solo, ma i miei primi tentativi sono stati molto prima che iniziassi a programmare. Annygdot " - Come hai imparato l'inglese così velocemente? - Cosa c'è da imparare - hanno preso tutte le parole dal C++" - sono io.
E sai una cosa? Non ho mai avuto un anglofono nella mia vita per qualche motivo. Quindi parla per te - non generalizzare a tutti.
Nikolai Semko: Provate a fare qualcosa con #define. Solo che non sono al mio computer in questo momento. Forse puoi lavorare in qualche modo con i nomi delle variabili russe nel debugger, se non puoi farne a meno.
Ho tradotto il codice della mia soluzione in inglese per comodità del pubblico.
//+------------------------------------------------------------------+//| Новый бар 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();
}
//----------------------------------
}
}
}
//+------------------------------------------------------------------+
No.
Purtroppo ho solo mezzo giga di traffico rimasto fino alle 14 del 14.09, quindi non guarderò. Mi occuperò di questo tempo. Questo è qualcosa...
Grazie, Nikolai - grazie a te ho imparato quanto ho guadagnato dal non avere un'idea del debugger.
Se ci avessi fatto affidamento, ora non avrei nulla. Forse l'avrei fatto, ma a metà.
Semplicemente perché non avrei potuto sfruttare un vantaggio colossale per usare il mio linguaggio nella programmazione.
È strano, perché tu conosci l'inglese molto meglio di me, anche se vivo in Canada. Perché non scrivere nomi lunghi in inglese? Solo che non saranno evidenziati in rosso.
Su ogni parola nella tua mente (anche se inconsciamente) tradurre?
La lingua madre è biologicamente radicata nel cervello. La comprensione è la più veloce possibile. Il linguaggio alieno viene sempre elaborato prima di essere compreso.
Biologia pura.
Capisco il mio codice molto più velocemente usando il russo che se usassi l'inglese. Lo memorizzo molto meglio.
Su ogni parola nella vostra mente (anche se inconsciamente) tradurre?
La lingua madre è biologicamente radicata nel cervello. La comprensione è la più veloce possibile. Il linguaggio alieno viene sempre elaborato prima di essere compreso.
Biologia pura.
Capisco il mio codice molto più velocemente usando il russo che se usassi l'inglese. Sono molto più bravo a ricordarlo.
Su ogni parola nella vostra mente (anche se inconsciamente) tradurre?
La lingua madre è biologicamente radicata nel cervello. La comprensione è la più veloce possibile. Il linguaggio alieno viene sempre elaborato prima di essere compreso.
Biologia pura.
Capisco il mio codice molto più velocemente usando il russo che se usassi l'inglese. Me lo ricordo molto meglio.
Si dà il caso che non ho mai avuto l'inglese - non a scuola, non in un solo istituto, non in un secondo. Ancora non ci capisco niente a orecchio. Lo sto imparando da solo, ma i miei primi tentativi sono stati molto prima che iniziassi a programmare. Annygdot " - Come hai imparato l'inglese così velocemente? - Cosa c'è da imparare - hanno preso tutte le parole dal C++" - sono io.
E sai una cosa? Non ho mai avuto un anglofono nella mia vita per qualche motivo. Quindi parla per te - non generalizzare a tutti.
Provate a fare qualcosa con #define. Solo che non sono al mio computer in questo momento. Forse puoi lavorare in qualche modo con i nomi delle variabili russe nel debugger, se non puoi farne a meno.
Ho tradotto il codice della mia soluzione in inglese per comodità del pubblico.
Spero di non aver confuso nulla.
Grazie, Nikolai - grazie a te ho imparato quanto ho guadagnato dal non avere un'idea del debugger.
Se ci avessi fatto affidamento, ora non avrei nulla. Forse l'avrei fatto, ma a metà.
Semplicemente perché non avrei potuto sfruttare un vantaggio colossale per utilizzare il mio linguaggio nella programmazione.
Per la comodità del pubblico, ho tradotto il codice della mia soluzione in inglese.
Spero di non aver fatto un errore.
Provate e vedete il risultato.
Sono abbastanza sicuro che se usassi strumenti come OOP e debugger nel mio lavoro, farei tutto molto più velocemente e meglio!
Non voglio discutere. Il tempo e la pratica mostreranno se ho scelto il modo, l'approccio e gli strumenti giusti.
Prova una stampa e vedi i risultati
Quali sono i vostri risultati?
Da dove stai chiamando la funzione?