Çoklu para birimi göstergesinin nasıl geliştirileceğini bilen var mı? - sayfa 4

 

Pekala millet, ilk kısım bitti (tüm çift oranlarını okuma).

Şimdi, aşağıdaki resimde çizdiğim gibi, RSI gibi bazı grafik göstergeleri yerleştirmek için ArrayCopyRates işleviyle kopyalanan tüm paris oranlarını kullanmam gerekiyor:

İlk sorumda bunu nasıl yapacağımı biliyorum ... ve okuma oranları hakkında değil. Çizmek için daha önce oranları kopyalamam gerekeceğini sanmıyorum, ancak nasıl yapılacağını bilmek güzeldi... şimdi tüm çiftleri çizmek için gösterge alanını bölmenin bir yolunu bulmam gerekiyor...

 
Anlamak. O zaman tüm elemanlar nesneler olarak çizilmelidir.
 

Bu, bir yerden aldığım bir Gösterge, deşifre etmeye hiç çalışmadım. Mevcut grafiğin 3 zaman diliminin bir temsilini gösteriyorum. Çılgın olan, mumların Histogramlarla çizilmesidir. Oldukça temiz ama şu anda içinde olduğum şey değil.

En iyi dileklerimle

Dosyalar:
 
Tamam teşekkürler. İş yerinde seyahat ediyorum ve döndüğümde test edeceğim.
 
Fernando Carreiro :

Bu konuyu takip edenler için bir güncelleme!

OP'nin PM aracılığıyla kodunu düzeltmesine yardım ediyorum, çünkü İngilizce'de zorluk çekiyor ve ikimiz de Portekizce konuşuyoruz. Testlerimizde " ArrayCopyRates() " işleviyle gerçekleşen başka bir "komik" ile karşılaştık. Bir EA'da " ArrayCopyRates() " ile bir MqlRates dizisi kullanırken, veri dizisi her zaman şeylerin mevcut durumunu bildiren sanal bir dizidir, bu nedenle veriler her zaman tazedir.

Ancak, bir Göstergede durum böyle görünmüyor. Dizi sanal bir kopya değil, bunun yerine " ArrayCopyRates() " çağrıldığı anda ayarlanmış statik bir kopyadır. Sembol, grafik sembolünden farklı olduğunda veriler güncellenmez. Grafikle aynı sembol olduğunda, dizi verileri "canlıdır" ve beklendiği gibi güncellenir, ancak başka bir sembole ait olduğunda statik bir kopyadır.

Bu nedenle, bir Göstergede çalışması için, taze verilere ihtiyaç duyulursa, OnCalculate() olayına yapılan her çağrıda " ArrayCopyRates() " işlevi çağrılmalıdır.

Sadece bulgularınızı genişletmek için Fernando - sembol grafik sembolüyle aynı olsa bile, zaman çerçevesi farklıysa dizi statiktir.

Dolayısıyla, bir göstergede sanal bir kopyaya sahip olmak için, aynı sembol VE aynı zaman diliminde olmalıdır. Diğer her şey statiktir.

 
honest_knave : Sadece bulgularınızı genişletmek için Fernando - sembol grafik sembolüyle aynı olsa bile, zaman çerçevesi farklıysa dizi statiktir. Bu nedenle, bir göstergede sanal bir kopyaya sahip olmak için, aynı sembol VE aynı zaman diliminde olmalıdır. Diğer her şey statiktir.
Güncelleme için teşekkürler!
 
Merhaba,

Her yerde bu sorun için bir çözüm arıyordum ve bu konudaki herkese bu tartışma için teşekkür etmek istiyorum.

Bu forumdaki ilk mesajım, bu yüzden herhangi bir protokolü kaçırırsam lütfen bana bildirin ve bir sonraki mesajda düzeltmekten memnuniyet duyarım.

Çok basit bir gösterge geliştirmeye çalışıyorum, ancak mantığım grafiğin tamamen güncel olmasına duyarlı görünüyor, bu yüzden bu tartışmayla çok ilgileniyorum.

Göstergem, önceki gün aralığında (günün en yükseğinden en düşüğe veya günün en düşük seviyesinden günün en yükseğine) bir fib çiziyor ve mevcut gün fib'in en yüksek, en düşük ve %50'sinde çizgiler çiziyor. Gösterge bir GMT komisyoncusunda (Günlük Pazar mumu) kullanılıyorsa, kullanıcı Pazartesi günü yalnızca Cuma mı yoksa Pazar aralığı mı yoksa Cuma + Pazar mı kullanacağını seçmek için bir giriş parametresi ayarlayabilir. NY'li bir yakın komisyoncuda (GMT + 2), Pazar mumları olmadığı için fark yaratmaz.

Bu göstergenin diğer bir özelliği, kullanıcının fib'i hareket ettirmesine izin vermesidir ve mevcut gündeki çizgiler (yüksek, %50 ve düşük) fib tarafından ayarlanan yeni aralığa uyum sağlayacaktır. Bu, aralığın daralması durumunda kullanıcının aralığı ayarlamasına izin verecektir.

Gösterge çoğunlukla birden fazla 1 saatlik grafiklerde kullanılacaktır, ancak kullanıcı, fib üzerinde yapılan herhangi bir değişikliği kaybetmeden zaman dilimlerini değiştirebilmelidir.

Fib'i çizmek için sadece önceki günün en yüksek ve en düşük noktalarını değil, aynı zamanda bu noktaların zamanını da bulmam gerekiyor.

Fikir basit ama birkaç zorlukla karşılaştım.

Bir önceki günün en yüksek ve en düşük değerlerini bulmanın hafta ortası olduğunu varsayarsak, şunu kullanıyorum:

       Hi = iHigh ( NULL , PERIOD_D1 , 1 );
       Lo = iLow ( NULL , PERIOD_D1 , 1 );

Sorun değil, ama şimdi önceki gün saatin en yüksek ve en düşük olduğunu bulmam gerekiyor. iHighest ve iLowest'i kullanarak zamanı yüksek ve düşük olarak 1 saatlik muma yaklaştırmaya karar verdim. Ve işte o zaman sorunlar başladı.


iHighest ve iLowest'i kullanmak için ilk 1 saatlik mumu ve aralığın boyutunu belirtmem gerekiyor, bu nedenle benim durumumda bu, önceki günün ilk 1h ve son 1h mumu olacak. Bu yüzden önceki günün başlangıcı için önceki günlük mumun açılışını ve önceki günün sonunu bulmak için mevcut günlük mum -1'in açılışını kullandım:

       PrevDayBegin = iBarShift ( NULL , PERIOD_H1 , iTime ( NULL , PERIOD_D1 , 1 ));                
       PrevDayEnd = iBarShift ( NULL , PERIOD_H1 , iTime ( NULL , PERIOD_D1 , 0 )- 1 );

Göstergeyi yalnızca para birimlerinde kullanıyorsanız (yine hafta ortası olduğunu varsayarak) bu harika çalışır çünkü PrevDayBegin 0:00 1h mumunun endeksi ve PrevDayEnd 23:00 1h mumun endeksi olacaktır. Sorun vadeli işlemlerde (endeksler, altın, ham petrol vb.) Günlük mum açılışı her zaman 0:00'dadır, ancak vadeli işlemlerdeki 1. mum GMT+2 brokerlerinde sabah 1'dir, bu nedenle PrevDayBegin'i hesaplayan yukarıdaki kod satırı önceki gün 23:00 için 1 saatlik mumu döndürür.

Daha sonra bu duruma uyum sağlamak için bir kod parçası eklemeye ve PrevDayBegin'i PrevDayEnd ile aynı hafta gününe gelene kadar taşımaya karar verdim:

       if ( TimeDayOfWeek ( iTime ( NULL , PERIOD_H1 , PrevDayBegin)) != TimeDayOfWeek ( iTime ( NULL , PERIOD_H1 , PrevDayEnd)))
         PrevDayBegin--;  

Ve tüm bu mantık, 1 saatlik mumların tümü güncelse harika çalışır, ancak bugün olanların bazı baskılarını gösteren aşağıdaki günlüğe bir göz atın. Sadece referans olması için önceki gün akşam MT4'ü kapattım ve bugün sabah (İngiltere'de sabah 7 civarında) tekrar açtım, bu nedenle grafiklerde yalnızca birkaç saatlik veri eksikti.

2017.02.09 06:56:20.613 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: == HAFTANIN DİĞER GÜNLERİ ==
2017.02.09 06:56:20.613 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PrevDayBitiş = 1 (2017.02.08 19:00)
2017.02.09 06:56:20.613 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PrevDayBegin = 20 (2017.02.08 00:00)

Günlüğe bakıldığında, 1 saatlik grafikteki en güncel mumun 2017.02.08 20:00 (index 0) olduğu görülüyor, bu nedenle iBarShift(NULL, PERIOD_H1, iTime(NULL, PERIOD_D1, 0)-1) (indeks 1) 2017.02.08 19:00. Sonuç olarak, gösterge için tüm hesaplamalar karışır, çünkü iHighest ve iLowest yanlış aralığı kullanacaktır.

Önceki tartışmalara dayanarak, hesaplamaları yapmadan önce tüm mumların yüklenmesini beklemek için önerilen çözümlerden bazılarını denedim ve kullandım ama görünüşe göre hala çalışmıyor.

Örneğin, OnInit()'te 1h, Daily ve mevcut zaman diliminde grafik güncellemesini tetiklemek için aşağıdaki kod satırlarını ekledim (tam da grafik farklı bir zaman diliminde açıkken platformun yakın olması durumunda):

   // Triggers history update
   MqlRates mqlrates_array_d1[];
   MqlRates mqlrates_array_h1[];
   MqlRates mqlrates_array[];
  
   ArrayCopyRates (mqlrates_array_d1, NULL , PERIOD_D1 );
   ArrayCopyRates (mqlrates_array_h1, NULL , PERIOD_H1 );
   ArrayCopyRates (mqlrates_array, NULL , 0 );  
Fark ettiğim başka bir şey de, MT4'ün tüm eksik geçmişi yüklemeden önce grafikte açık olan zaman diliminde en son Time[0] mumunu güncellemesiydi, bu yüzden Time[1]'in de geçerli olup olmadığını test etmeye karar verdim. fiyat.

Bu kod OnCalculate()'e eklendi ve @whroeder1 ( burada ) ve @Fernando Carreiro & @Wemerson Guimaraes ( burada ) tarafından yazılan kodlara dayanıyordu:

bool isHistoryLoading;

OnInit ();
:
isHistoryLoading = true ;
:

OnCalculate ( ... )
:
       MqlRates mqlrates_array_d1[];
       MqlRates mqlrates_array_h1[];
       MqlRates mqlrates_array[];
      
       if (isHistoryLoading)
        {      
         ResetLastError ();        
        
         if ( ArrayCopyRates (mqlrates_array_d1, NULL , PERIOD_D1 )> 0 )
           {
             if ( GetLastError () == 0 )
              {
               if (( iTime ( NULL , PERIOD_D1 , 0 ) > 0 ) && ( iTime ( NULL , PERIOD_D1 , 1 ) > 0 ))
                 {
                   ResetLastError ();
  
                   if ( ArrayCopyRates (mqlrates_array_h1, NULL , PERIOD_H1 )> 0 )
                    {
                     if ( GetLastError () == 0 )
                       {
                         if (( iTime ( NULL , PERIOD_H1 , 0 ) > 0 ) && ( iTime ( NULL , PERIOD_H1 , 1 ) > 0 ))
                          {
                           ResetLastError ();
      
                           if ( ArrayCopyRates (mqlrates_array, NULL , 0 )> 0 )
                             {
                               if ( GetLastError () == 0 )
                                {
                                 if (( iTime ( NULL , 0 , 0 ) > 0 ) && ( iTime ( NULL , 0 , 1 ) > 0 ))                            
                                   {
                                    isHistoryLoading = false ;
                                
                                     if (DebugLog)
                                       Print ("Chart up-to-date!");        
                                    }
                                }
                             }
                          }
                       }
                    }                      
                 }
              }
           }
        }
        
       if (isHistoryLoading)
        {
         if (DebugLog)
           Print ("Waiting for chart to update!");
         return (rates_total);
        }    

:

Ve bu, platformun açıldığı ve göstergenin ilk kez yüklendiği günlük:

2017.02.09 06:56:18.492 Özel gösterge Prev_Day_Range_LRT_50_v0.6 SPX500,H1: başarıyla yüklendi
2017.02.09 06:56:18.630 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: başlatıldı
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: Grafik güncel!
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: Gösterge mevcut değil! Yaratmak.
2017.02.09 06:56:18.639 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: == HAFTANIN DİĞER GÜNLERİ ==
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PrevDayBitiş = 20 (2017.02.07 23:00)
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PrevDayBegin = 42 (2017.02.07 00:00)
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR CurrDayBegin = (2017.02.08 00:00)
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PERIOD_D1 [0] = (2017.02.08 00:00)
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PERIOD_D1 [1] = (2017.02.07 00:00)
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PERIOD_D1 [2] = (2017.02.06 00:00)
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR Haftanın Günü = 3
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR iEn Yüksek (Mum = 28) (Fiyat = 2299.33) (Zaman = 2017.02.07 14:00:001)
2017.02.09 06:56:18.639 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR iLow (Mum = 20) (Fiyat = 2287.88) (Zaman = 2017.02.07 23:00:001)
2017.02.09 06:56:18.639 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Fib Zaman1=2017.02.07 14:00 Fiyat1=2299.33 ila Zaman2=2017.02.07 23:00 Fiyat2=2287.88 arası
2017.02.09 06:56:18.639 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Trendline 'PDRTrend1 131296489639296384' Zaman1=2017.02.08 00:00 Fiyat1=2299.33 ila Zaman2=2017.02.09 00:00 Fiyat2=2299.33
2017.02.09 06:56:18.639 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Trendline 'PDRTrend2 131296489639296384' Zaman1=2017.02.08 00:00 Fiyat1=2293.605 Zaman2=2017.02.09 00:00 Fiyat2=2293.605
2017.02.09 06:56:18.639 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Trendline 'PDRTrend3 131296489639296384' Zaman1=2017.02.08 00:00 Fiyat1=2287.88 ila Zaman2=2017.02.09 00:00 Fiyat2=2287.88

0 ve 1 mumlarına veya ArrayCopyRates işlevine yapılan herhangi bir başvurunun yalnızca grafiklerde bilgilerin zaten yüklü olduğu her yere erişiyor gibi görünüyor, bu nedenle ArrayCopyRates, kopyalanan geçerli sayıda öğe ve iTime(..., 0) ve iTime döndürüyor gibi görünüyor. (..., 1) önceki gün platform kapatıldığında depolanan son 2 mum için geçerli bir fiyat veriyor.

Bu, göstergenin dün gibi çizildiği anlamına gelir (PERIOD_D1 [0] = (2017.02.08 00:00)).

Gösterge, kullanıcı fib'i hareket ettirse bile yüksek, %50 ve düşük çizgilerin her zaman geçerli günde çizileceği şekilde oluşturulmuştur (bunlar yukarıdaki günlükte gösterilen 3 eğilim çizgisidir). Bu nedenle OnCalculate() üzerinde, orta trend çizgisinin geçerli günde çizilip çizilmediğini test eden bir kod parçam var (kullanıcının üst ve alt çizgiyi devre dışı bırakmak için bir giriş seçeneği vardır, bu nedenle her zaman çizilecek tek çizgi orta çizgidir. 1).

OnCalculate ( ... )
:

       if ( ObjectFind (Trend2Name) != - 1 )                 // Check whether mid range line exists
        {
            
         if (( TimeDay ( ObjectGetInteger ( 0 ,Trend2Name, OBJPROP_TIME , 0 ))== TimeDay ( TimeCurrent ()))
           && ( TimeMonth ( ObjectGetInteger ( 0 ,Trend2Name, OBJPROP_TIME , 0 ))== TimeMonth ( TimeCurrent ()))
           && ( TimeYear ( ObjectGetInteger ( 0 ,Trend2Name, OBJPROP_TIME , 0 ))== TimeYear ( TimeCurrent ()))) // Indicator has already been ploted today        
           {
             return (rates_total);
           }
         else      // Indicator exists but in a past date, so delete it and plot it on current day
           {
             if (DebugLog)
               Print ( "Indicator in a past date! Deleting it and creating it today!" );
              
             if ( ObjectFind (FibName) != - 1 )
              FiboLevelsDelete( 0 ,FibName);              
             // Indicator will be created by the OnChartEvent() when it detects the fib was deleted.
           }
        }
       else          // Indicator doesn't exist, so create it
        {
         if (DebugLog)
             Print ( "Indicator doesn't exist! Creating it." );
         CreateIndicator();
        }
:

Birkaç tıklamadan sonra, veriler kısmen yüklenir ve yukarıdaki kod parçası, satırların önceki bir günde çizildiğini algılar, fib'i siler ve aralıkların yeniden hesaplanmasını ve nesnelerin (yani fib, trend çizgileri, vb.) yeniden çizilmesini tetikler. ).


2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: Geçmiş bir tarihteki gösterge! Onu silmek ve bugün yaratmak!
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDRFibo 131296489639296384 silindi!
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDRRectangle Siliniyor 131296489639296384
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDRTrend1 Siliniyor 131296489639296384
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDRTrend2 Siliniyor 131296489639296384
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDRTrend3 siliniyor 131296489639296384

Sonra bu mesajın başında bahsettiğim soruna geri dönüyoruz. Yukarıda tekrar uyguladığım test, göstergeyi geçmişin tam olarak yüklenmesini bekletmiyor ve bu nedenle aralıklar kısmi verilere dayalı olarak yanlış hesaplanıyor.

Bu, mesajın başında gösterilen günlüğün daha eksiksiz bir versiyonudur ve sadece PrevDayEnd'in 1h grafiğindeki 2. mum (indeks 1) olarak (2017.02.07 21:00) yanlış hesaplandığını değil, aynı zamanda CurrDayBegin'in de yanlış hesaplandığını gösterir. 1h grafiğinde mevcut günün 1. mumu olması gerekiyordu, iBarShift tarafından (2017.02.08 06:00) yakınlaştırılıyor.

CurrDayBegin = iTime ( NULL , PERIOD_D1 , 0 );
      
while ( TimeDayOfWeek ( iTime ( NULL , PERIOD_H1 , iBarShift ( NULL , PERIOD_H1 , CurrDayBegin))) != TimeDayOfWeek ( TimeCurrent ()))

     // If iBarShift can't find the 0am candle and returns the 11pm candle of prev day.

  CurrDayBegin = CurrDayBegin + 3600 ;         // Move 1h until you find the 1st candle of today.                                        

2017.02.08 06:53:53.252 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: == HAFTANIN DİĞER GÜNLERİ ==
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PrevDayBitiş = 1 (2017.02.07 21:00)
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PrevDayBegin = 22 (2017.02.07 00:00)
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR CurrDayBegin = (2017.02.08 06:00)
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PERIOD_D1 [0] = (2017.02.08 00:00)
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PERIOD_D1 [1] = (2017.02.07 00:00)
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR PERIOD_D1 [2] = (2017.02.06 00:00)
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR Haftanın Günü = 3
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR iEn Yüksek (Mum = 8) (Fiyat = 2299.33) (Zaman = 2017.02.07 14:00:001)
2017.02.08 06:53:53.252 Önceki_Day_Range_LRT_50_v0.6 SPX500,H1: PDR iLow (Mum = 19) (Fiyat = 2288.57) (Zaman = 2017.02.07 03:00:001)
2017.02.08 06:53:53.252 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Zaman1=2017.02.07 03:00 Fiyat1=2288.57'den Zaman2=2017.02.07 14:00 Fiyat2=2299.33'e Fib
2017.02.08 06:53:53.252 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Trendline 'PDRTrend1 131296489639296384' Zaman1=2017.02.08 06:00'dan Fiyat1=2288.57'den Zaman2=2017.02.09 06:00'a Fiyat2=2288.57
2017.02.08 06:53:53.252 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Trendline 'PDRTrend2 131296489639296384' Time1=2017.02.08 06:00'dan Fiyat1=2293.95'den Time2=2017.02.09 06:00'a kadar Fiyat2=2293.95
2017.02.08 06:53:53.252 Prev_Day_Range_LRT_50_v0.6 SPX500,H1: Trendline 'PDRTrend3 131296489639296384' Zaman1=2017.02.08 06:00'dan Fiyat1=2299.33'ten Zaman2=2017.02.09 06:00'a Fiyat2=2299.33

Özetle, tüm geçmişin bir çizelgeye yüklenip yüklenmediğini test etmenin bir nedeni var mı? Yoksa kodumda bir şey mi eksik?

Bu çok uzun mesajda benimle birlikte olduğunuz için teşekkür ederim.

Tüm kodu ve günlüğü görmek istiyorsanız lütfen bana bildirin. Kodu buraya eklememeyi tercih ederim, ancak özel olarak göndermekten memnuniyet duyarım.

Bunlar göstergenin ekran görüntüleridir:

(1) Eksik geçmiş kullanılarak hesaplanmıştır (lütfen yatay çizgilerin günün başında başlamadığına dikkat edin)

Eksik geçmişle hesaplanan gösterge

(2) Geçmişin tamamı kullanılarak yeniden hesaplanır (günün başından başlayan yatay çizgiler)

Gösterge, tam geçmiş kullanılarak yeniden hesaplandı

Problems with ERR_HISTORY_WILL_UPDATED (4066 ) & weekends
Problems with ERR_HISTORY_WILL_UPDATED (4066 ) & weekends
  • www.mql5.com
Hi i m building a custom indicator and got problems with the 4066 Error...