Teşekkürler Nikolai - senin sayende hata ayıklayıcı hakkında hiçbir fikrim olmamasından ne kadar kazandığımı öğrendim.
Ona güvenseydim, şimdi hiçbir şeyim olmazdı. Belki olurdu - ama yarısından az.
Basitçe programlamada ana dilimi kullanmanın muazzam avantajını kullanamadığım için.
Bu garip çünkü Kanada'da yaşamama rağmen İngilizceyi benden çok daha iyi biliyorsun. Neden İngilizce uzun isimler yazmıyorsunuz? Doğru, kırmızıyla vurgulanmayacaklar.
Nikolai Semko : Bu garip çünkü Kanada'da yaşamama rağmen İngilizceyi benden çok daha iyi biliyorsun. Neden İngilizce uzun isimler yazmıyorsunuz? Doğru, kırmızıyla vurgulanmayacaklar.
Aklınızdaki her kelimeyi (bilinçsiz de olsa) tercüme edin?
Ana dil biyolojik olarak beyne yerleştirilmiştir. Anlamak mümkün olan en hızlı şeydir. Bir yabancı dil her zaman anlaşılmadan önce işlenir.
Saf biyoloji.
Rusça kullanarak kendi kodumu İngilizce kullandığımdan çok daha hızlı anlıyorum. Çok daha iyi hatırlıyorum.
Aklınızdaki her kelimeyi (bilinçsiz de olsa) tercüme edin?
Ana dil biyolojik olarak beyne yerleştirilmiştir. Anlamak mümkün olan en hızlı şeydir. Bir yabancı dil her zaman anlaşılmadan önce işlenir.
Saf biyoloji.
Rusça kullanarak kendi kodumu İngilizce kullandığımdan çok daha hızlı anlıyorum. Çok daha iyi hatırlıyorum.
Ve #define ile bir şeyler karıştırmaya çalışın. Sadece şu an bilgisayar başında değilim. Onlarsız yapamıyorsanız, hata ayıklayıcıda bir şekilde Rus değişken adlarıyla çalışmak mümkün olabilir.
Aklınızdaki her kelimeyi (bilinçsiz de olsa) tercüme edin?
Ana dil biyolojik olarak beyne yerleştirilmiştir. Anlamak mümkün olan en hızlı şeydir. Bir yabancı dil her zaman anlaşılmadan önce işlenir.
Saf biyoloji.
Rusça kullanarak kendi kodumu İngilizce kullandığımdan çok daha hızlı anlıyorum. Çok daha iyi hatırlıyorum.
Öyle oldu ki hiç İngilizcem olmadı - ne okulda, ne bir enstitüde, ne de ikincisinde. Bu güne kadar onu hiç anlamıyorum. Kendi kendime öğretiyorum ama ilk başlangıçlar ben programlamaya başlamadan çok önceydi. Anigdot "- İngilizceyi nasıl bu kadar çabuk öğrendin? - Öğrenecek ne var - tüm kelimeleri C++'dan almışlar" - bu benimle ilgili.
Ve bilirsin? Nedense İngiliz isimleri gözü hiçbir zaman ertelemedi. Bu nedenle, kendiniz için konuşun - herkese genellenecek bir şey yok.
Nikolai Semko : Ve #define ile bir şeyler karıştırmaya çalışın. Sadece şu an bilgisayar başında değilim. Onlarsız yapamıyorsanız, hata ayıklayıcıda bir şekilde Rus değişken adlarıyla çalışmak mümkün olabilir.
Halkın rahatlığı için çözümümün kodunu İngilizce'ye çevirdim.
//+------------------------------------------------------------------+//| Новый бар 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();
}
//----------------------------------
}
}
}
//+------------------------------------------------------------------+
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Numara.
Ne yazık ki, 14 Eylül saat 14:00'e kadar sadece yarım konser trafiğim kaldı, bu yüzden aramayacağım. Bu sefer ben bakacağım. Bir şeyle bir şey...
Teşekkürler Nikolai - senin sayende hata ayıklayıcı hakkında hiçbir fikrim olmamasından ne kadar kazandığımı öğrendim.
Ona güvenseydim, şimdi hiçbir şeyim olmazdı. Belki olurdu - ama yarısından az.
Basitçe programlamada ana dilimi kullanmanın muazzam avantajını kullanamadığım için.
Bu garip çünkü Kanada'da yaşamama rağmen İngilizceyi benden çok daha iyi biliyorsun. Neden İngilizce uzun isimler yazmıyorsunuz? Doğru, kırmızıyla vurgulanmayacaklar.
Aklınızdaki her kelimeyi (bilinçsiz de olsa) tercüme edin?
Ana dil biyolojik olarak beyne yerleştirilmiştir. Anlamak mümkün olan en hızlı şeydir. Bir yabancı dil her zaman anlaşılmadan önce işlenir.
Saf biyoloji.
Rusça kullanarak kendi kodumu İngilizce kullandığımdan çok daha hızlı anlıyorum. Çok daha iyi hatırlıyorum.
Aklınızdaki her kelimeyi (bilinçsiz de olsa) tercüme edin?
Ana dil biyolojik olarak beyne yerleştirilmiştir. Anlamak mümkün olan en hızlı şeydir. Bir yabancı dil her zaman anlaşılmadan önce işlenir.
Saf biyoloji.
Rusça kullanarak kendi kodumu İngilizce kullandığımdan çok daha hızlı anlıyorum. Çok daha iyi hatırlıyorum.
Aklınızdaki her kelimeyi (bilinçsiz de olsa) tercüme edin?
Ana dil biyolojik olarak beyne yerleştirilmiştir. Anlamak mümkün olan en hızlı şeydir. Bir yabancı dil her zaman anlaşılmadan önce işlenir.
Saf biyoloji.
Rusça kullanarak kendi kodumu İngilizce kullandığımdan çok daha hızlı anlıyorum. Çok daha iyi hatırlıyorum.
Öyle oldu ki hiç İngilizcem olmadı - ne okulda, ne bir enstitüde, ne de ikincisinde. Bu güne kadar onu hiç anlamıyorum. Kendi kendime öğretiyorum ama ilk başlangıçlar ben programlamaya başlamadan çok önceydi. Anigdot "- İngilizceyi nasıl bu kadar çabuk öğrendin? - Öğrenecek ne var - tüm kelimeleri C++'dan almışlar" - bu benimle ilgili.
Ve bilirsin? Nedense İngiliz isimleri gözü hiçbir zaman ertelemedi. Bu nedenle, kendiniz için konuşun - herkese genellenecek bir şey yok.
Ve #define ile bir şeyler karıştırmaya çalışın. Sadece şu an bilgisayar başında değilim. Onlarsız yapamıyorsanız, hata ayıklayıcıda bir şekilde Rus değişken adlarıyla çalışmak mümkün olabilir.
Halkın rahatlığı için çözümümün kodunu İngilizce'ye çevirdim.
Umarım hiçbir şeyi karıştırmadım.
Teşekkürler Nikolai - senin sayende hata ayıklayıcı hakkında hiçbir fikrim olmamasından ne kadar kazandığımı öğrendim.
Ona güvenseydim, şimdi hiçbir şeyim olmazdı. Belki olurdu - ama yarısından az.
Basitçe programlamada ana dilimi kullanmanın muazzam avantajını kullanamadığım için.
Halkın rahatlığı için çözümümün kodunu İngilizce'ye çevirdim.
Umarım hiçbir şeyi karıştırmadım.
Yazdırmayı deneyin ve sonucu görün
Çalışmamda OOP ve hata ayıklayıcı gibi araçlar kullansaydım, her şeyi çok daha hızlı ve daha iyi yapacağımdan kesinlikle eminim!
tartışmayacağım. Doğru yolu, yaklaşımı ve araçları seçip seçmediğimi zaman ve pratik gösterecek.
Yazdırmayı deneyin ve sonucu görün
Sonuç nedir?
Fonksiyonu nereden çağırıyorsunuz?