ArrayCopyRates'e gelince, Aleksey doğru konuştu. Yardım diyor ki:
Yani şunu yazmanız gerekiyor:
Ancak bu israf koddur.
Evet, yalnızca bir tane gerekiyorsa, 6 çubuk göstergesinin tümünü sürüklemenin bir anlamı yoktur. Aşk.
Ve aynı ölçekte (TF) derinliklere inmenin bir anlamı yok. Çeyrekten sonra haftalara, sonra aylara geçebilirsiniz ve 132 ay 11 yıldır.
Genel olarak, tüm çizelgede saymanın anlamsız olduğu fikri, tarihsel verilerin miktarı esasen rastgeledir, belki 70'ten, belki de 2000'den, farklı araçlarda, farklı veri sağlayıcılar farklıdır ve mantık farklıdır. tüm durumlar için aynı olduğunda her zaman daha iyidir.
Teoride, yalnızca şu tarih çubuklarına ihtiyacımız var:
Gerisi diziden atılabilir. İşte o zaman ekonomik olur.
Böyle çizildi. Fikir henüz TopikStarter tarafından açıklanmadı)
TS için önemli olan ekstremleri bulup karşılaştırmak gerekir. Uzakta birçok özdeş Lowes vardır. Oldukça sık, Açık ve Kapanış aynı mum üzerinde eşittir ve önemli bir mesafede günün minimum fiyatları hakkında ne söyleyebiliriz.
Evet, yalnızca bir tane gerekiyorsa, 6 çubuk göstergesinin tümünü sürüklemenin bir anlamı yoktur. Aşk.
Ve aynı ölçekte (TF) derinliklere inmenin bir anlamı yok. Çeyrekten sonra haftalara, sonra aylara geçebilirsiniz ve 132 ay 11 yıldır.
Genel olarak, tüm çizelgede saymanın anlamsız olduğu fikri, tarihsel verilerin miktarı esasen rastgeledir, belki 70'ten, belki de 2000'den, farklı araçlarda, farklı veri sağlayıcılar farklıdır ve mantık farklıdır. tüm durumlar için aynı olduğunda her zaman daha iyidir.
Daha kesin olmaya çalışacağım.
1. Bu bir fikir değil, otomatikleştirmeye karar verilen, çalışan ve zaten hata ayıklanmış 5 yıllık bir ticaret deneyimidir (çünkü sürekli monitörde oturmak pek iyi değildir, bilirsiniz, yıllar içinde)
2. Bu çizgiler, yanlış kesintilerin bir sinyalini oluşturur ve çalışır (sadece bunları nasıl kullanacağınızı bilmeniz gerekir) gelecekte hiç görüntülenemezler.
3. 2020'de 10 Şubat'ta ilk kez bu kadar uzak bir tarihten gereksiz olduğunu düşündüğünüz bu yanlışlığı fark ettim.
Min_D'nin nerede olduğuna ve belki yılda bir, hatta 10 yılda bir dikkat edin.(olduğu gibi)
o zaman 12000 puanlık kısa olayların gelişimini görüyorsunuz (böyle bir hareketi kaçırmak caiz değil bence) Bu durumda dizinin ötesine geçmek bu fırsatı kaçırmama izin vermedi.
Bu güne kadar bu şekilde çalışıyor. genel olarak herhangi bir sorun yaratmadı
Pekala, şimdi devam etme ve MQL4'ü öğrenme zamanı
4. Bilgisayarın yüklenmesine veya başka bir şeye gelince (günde bir kez 24.00'da sayabilirsiniz ve Cuma 20.00'den sonra 10 kez işlem yapmayın ve hafta içi 23.00'den 3.00'e kadar), bırakın saysın.
5. Fikir henüz TopikStarter tarafından dile getirilmedi.
Yazının ortasından değil de başından okursanız, her şey açıktır.
1. Low_D1 ve High_D1 (D1 Son gün), Min_D ve Max_D (bu, geçmişten en yakın olanı, tam olarak enstrüman için mevcut olandır) Min_D < Low_D1 ve Max_D > High_D1
2. Low_W1 ve High_W1 (ayrıca her şey yukarıda açıklananla aynıdır, yalnızca haftalarca)
Nasıl düzeltileceği konusunda tavsiye için geldim, belki bir şey bilmiyorum (geçmişi olan bir dosya yüklemek gibi veya dizinin kendisi desteklemiyor veya belki 16 konser aperatif yeterli değil, sorunun kendisi bu. ??? vb.)
Şu anda, hat değeri değiştirmediğinde sadece Alert olarak duruyor.
//+------------------------------------------------------------------+//| 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();
}
}
ArrayCopyRates'e gelince, Aleksey doğru konuştu. Yardım diyor ki:
Yani şunu yazmanız gerekiyor:
Ancak bu israf koddur.
Evet, yalnızca bir tane gerekiyorsa, 6 çubuk göstergesinin tümünü sürüklemenin bir anlamı yoktur. Aşk.
Ve aynı ölçekte (TF) derinliklere inmenin bir anlamı yok. Çeyrekten sonra haftalara, sonra aylara geçebilirsiniz ve 132 ay 11 yıldır.
Genel olarak, tüm çizelgede saymanın anlamsız olduğu fikri, tarihsel verilerin miktarı esasen rastgeledir, belki 70'ten, belki de 2000'den, farklı araçlarda, farklı veri sağlayıcılar farklıdır ve mantık farklıdır. tüm durumlar için aynı olduğunda her zaman daha iyidir.
Valery, haklısın!
Teoride, yalnızca şu tarih çubuklarına ihtiyacımız var:
Gerisi diziden atılabilir. İşte o zaman ekonomik olur.
Valery, haklısın!
Teoride, yalnızca şu tarih çubuklarına ihtiyacımız var:
Gerisi diziden atılabilir. İşte o zaman ekonomik olur.
Böyle çizildi. Fikir henüz TopikStarter tarafından açıklanmadı)
TS için önemli olan ekstremleri bulup karşılaştırmak gerekir. Uzakta birçok özdeş Lowes vardır. Oldukça sık, Açık ve Kapanış aynı mum üzerinde eşittir ve önemli bir mesafede günün minimum fiyatları hakkında ne söyleyebiliriz.
Döngülerde bir hata fark ettim. Ve karşılaştırmayı bugünle değil, dünle değiştirdi. Denemek
Hepiniz hoşgeldiniz !!!
İş için gitti.
Süreç tüm hızıyla devam ediyor.
Test edildi!
Sonuç bu.
Durdurulan test cihazı geçmişi manuel olarak gözden geçirdi. Max_D değeri buradan alınmalıdır.
Neyin yanlış olduğunu anlamadım. Bu düşük çizgi.
Her ihtimale karşı kodu yeni bir şekilde kopyalayın, periyodik olarak değiştirdim, eski bir sürüme sahip olabilirsiniz.
Evet, yalnızca bir tane gerekiyorsa, 6 çubuk göstergesinin tümünü sürüklemenin bir anlamı yoktur. Aşk.
Ve aynı ölçekte (TF) derinliklere inmenin bir anlamı yok. Çeyrekten sonra haftalara, sonra aylara geçebilirsiniz ve 132 ay 11 yıldır.
Genel olarak, tüm çizelgede saymanın anlamsız olduğu fikri, tarihsel verilerin miktarı esasen rastgeledir, belki 70'ten, belki de 2000'den, farklı araçlarda, farklı veri sağlayıcılar farklıdır ve mantık farklıdır. tüm durumlar için aynı olduğunda her zaman daha iyidir.
Daha kesin olmaya çalışacağım.
1. Bu bir fikir değil, otomatikleştirmeye karar verilen, çalışan ve zaten hata ayıklanmış 5 yıllık bir ticaret deneyimidir (çünkü sürekli monitörde oturmak pek iyi değildir, bilirsiniz, yıllar içinde)
2. Bu çizgiler, yanlış kesintilerin bir sinyalini oluşturur ve çalışır (sadece bunları nasıl kullanacağınızı bilmeniz gerekir) gelecekte hiç görüntülenemezler.
3. 2020'de 10 Şubat'ta ilk kez bu kadar uzak bir tarihten gereksiz olduğunu düşündüğünüz bu yanlışlığı fark ettim.
Min_D'nin nerede olduğuna ve belki yılda bir, hatta 10 yılda bir dikkat edin.(olduğu gibi)
o zaman 12000 puanlık kısa olayların gelişimini görüyorsunuz (böyle bir hareketi kaçırmak caiz değil bence) Bu durumda dizinin ötesine geçmek bu fırsatı kaçırmama izin vermedi.
Bu güne kadar bu şekilde çalışıyor. genel olarak herhangi bir sorun yaratmadı
Pekala, şimdi devam etme ve MQL4'ü öğrenme zamanı
4. Bilgisayarın yüklenmesine veya başka bir şeye gelince (günde bir kez 24.00'da sayabilirsiniz ve Cuma 20.00'den sonra 10 kez işlem yapmayın ve hafta içi 23.00'den 3.00'e kadar), bırakın saysın.
5. Fikir henüz TopikStarter tarafından dile getirilmedi.
Yazının ortasından değil de başından okursanız, her şey açıktır.
1. Low_D1 ve High_D1 (D1 Son gün), Min_D ve Max_D (bu, geçmişten en yakın olanı, tam olarak enstrüman için mevcut olandır) Min_D < Low_D1 ve Max_D > High_D1
2. Low_W1 ve High_W1 (ayrıca her şey yukarıda açıklananla aynıdır, yalnızca haftalarca)
3. Low_MN1 ve High_MN1 (sırasıyla bir aydır)
Kodda, for döngüsü // açıklamayı oku
Nasıl düzeltileceği konusunda tavsiye için geldim, belki bir şey bilmiyorum (geçmişi olan bir dosya yüklemek gibi veya dizinin kendisi desteklemiyor veya belki 16 konser aperatif yeterli değil, sorunun kendisi bu. ??? vb.)
Şu anda, hat değeri değiştirmediğinde sadece Alert olarak duruyor.
Neyin yanlış olduğunu anlamadım. Bu düşük çizgi.
Her ihtimale karşı kodu yeni bir şekilde kopyalayın, periyodik olarak değiştirdim, eski bir sürüme sahip olabilirsiniz.
Tamam tekrar deneyeceğim