Muhtemelen bir dizi aralık dışı hatası ve gösterge kaldırılıyor
int limit=rates_total-prev_calculated;
for ( int i= 0 ; i<limit; i++)
iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 0 , i+ 1 )< iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 1 , i+ 1 ))
Günlükte küresel bir başlatma hatasıyla ilgili bir mesaj alıyorsunuzdur.
Günlüklerinizi kontrol edin
Kodunuzu derleyip test ettiğim hatalar var:
2014.05.22 22:39:43.936 Özel gösterge Test Göstergesi 3 XAUUSD,M1: kaldırıldı
2014.05.22 22:39:43.905 Test Göstergesi 3 XAUUSD,M1: genel başlatma başarısız
2014.05.22 22:39:43.905 Test Göstergesi 3 XAUUSD,M5: uninit sebep 3 //----------------------- değişim tablosu
2014.05.22 22:39:17.323 dizi 'Test Göstergesi 3.mq4' içinde aralık dışında (117,32)
2014.05.22 22:39:15.591 Test Göstergesi 3 XAUUSD,M5: başlatıldı
2014.05.22 22:39:09.570 Özel gösterge Test Göstergesi 3 XAUUSD,M5: başarıyla yüklendi
Öneriniz için teşekkür ederiz.
Günlüğü kontrol ediyorum, hata veya uyarı bildirimi yok.
(i+1)'in tek başına durduğundan (veya sadece İkinci bölümü sildiğimden) sorun yarattığından emin değilim, bu gösterge iyi çalışıyor.
SCFX
O zaman muhtemelen bu
roc_s[j]=Close[ i+j ]-Close[ i+j+ 1 ];
Var olmayan barların kapanış fiyatını almaya çalışıyorsunuz
Gösterge ilk başladığında bir satır eklemelisiniz: prev_calculated == 0,
bunun gibi bir şey :
int limit = - 100 ; if ( prev_calculated == 0 ) limit = 3000 ;// will calculate 3000 Bars else limit = rates_total-prev_calculated;
bilgisayarımda da hata yok ;-)
Merhaba ffoorr,
Çözümünüz gerçekten çok iyi.
Gerçeği söylemek gerekirse, dün gece tamir etmesi için birini tuttum. Evet yaptı ama kod verimsiz, lütfen aşağıya bakın, çünkü (i) için bir tane daha ekledi.
prev_calculated ==0 ile ne anlama geldiğini açıklarsanız sevinirim. anlamıyorum.
//+------------------------------------------------------------------+ //| hf1.mq4 | //| Copyright 2013, MetaQuotes Software Corp. | //| httakeprofit://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "httakeprofit://www.mql5.com" #property version "1.00" #property strict //--- indicator settings //#property indicator_chart_window #property indicator_separate_window #property indicator_buffers 5 #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 1 #property indicator_width4 1 #property indicator_width5 1 #property indicator_color1 Yellow #property indicator_color2 Red #property indicator_color3 Red #property indicator_color4 Orange #property indicator_color5 Orange //--- input parameter input int kperiod= 30 ; input int dperiod= 9 ; input int slow= 9 ; input int sample_roc_quartile= 100 ; //--- buffers double buy[]; double sell[]; double stoploss[]; double takeprofit1[]; double takeprofit2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit ( void ) //*/*/*/*/*/ { //--- indicator buffers mapping //--- 1 additional buffer used for counting. //IndicatorBuffers(6); IndicatorDigits( Digits ); //--- indicator line SetIndexStyle( 0 , DRAW_ARROW ); SetIndexBuffer ( 0 ,buy); SetIndexArrow( 0 , 241 ); SetIndexStyle( 1 , DRAW_ARROW ); SetIndexBuffer ( 1 ,sell); SetIndexArrow( 1 , 242 ); SetIndexStyle( 2 , DRAW_ARROW ); SetIndexBuffer ( 2 ,stoploss); SetIndexStyle( 3 , DRAW_ARROW ); SetIndexBuffer ( 3 ,takeprofit2); SetIndexStyle( 4 , DRAW_ARROW ); SetIndexBuffer ( 4 ,takeprofit1); //--- name for DataWindow and indicator subwindow label //--- return (INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int limit=rates_total-prev_calculated; if (limit<= 0 )limit = 2 ; double roc_s[]; ArrayResize (roc_s,sample_roc_quartile+ 1 ); //--- //------------------------------------------ for ( int i= 1 ; i<limit; i++) { //FIRST PSART if ( iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 0 ,i)> iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 1 ,i) && iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 0 ,i+ 1 )< iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 1 ,i+ 1 )) { buy[i]=Close[i]; stoploss[i]=Low[i]- 0.005 ; takeprofit1[i]=Close[i]+ 0.005 ; takeprofit2[i]=Close[i]+ 0.01 ; } if ( iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 0 ,i)< iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 1 ,i) && iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 0 ,i+ 1 )> iStochastic ( NULL , 0 ,kperiod,dperiod,slow, 0 , 0 , 1 ,i+ 1 )) { sell[i]=Close[i]; stoploss[i]=High[i]; takeprofit1[i]=Close[i]- 0.0050 ; takeprofit2[i]=Close[i]- 0.01 ; } } //SECOND PART //--------------------------------------- HERE IS THE WHAT HE DID int mid = (sample_roc_quartile + 1 )/ 2 ; for ( int i= 1 ; i<limit&&(i+ 1 )<rates_total; i++) { //--------------------------------------------- for ( int j= 0 ;j<=sample_roc_quartile&&(i+j+ 1 )<rates_total;j++) { roc_s[j]=Close[i+j]-Close[i+j+ 1 ]; ArraySort (roc_s); } if ( (Close[i]-Close[i+ 1 ])<roc_s[mid] ) { buy[i]= 0 ; stoploss[i]= 0 ; takeprofit1[i]= 0 ; takeprofit2[i]= 0 ; } } //--- return value of prev_calculated for next call return (rates_total); } //+------------------------------------------------------------------+
Herkese selam...
IBFX MACD geleneksel göstergesini ve diğer şablonları MT4'üme yüklerken sorun yaşıyorum.
Önceki sürümde, dosyalarımı yalnızca "uzman" klasöründe bulunan "gösterge" klasörüne kopyalayıp yapıştırmam gerekecekti.
Mevcut olanın sadece ayrı bir "uzman" ve "indicator" klasöründen oluşan "MQL4" klasörü vardır.
Her iki klasöre de yapıştırmayı ve platformumu yeniden başlatmayı denedim ama işe yaramıyor
not edilmesi gerçekleşir.
Bu konu hakkında bana fikir verebilecek birileri var mı? veya belki de 2 EMA çizgili geleneksel MACD göstergesini almamın başka yolları var mı?
teşekkürler
douglasdouglas_heng : IBFX MACD geleneksel göstergesini ve diğer şablonları MT4'üme yüklerken sorun yaşıyorum. | Birden fazla (6) gönderi yapmayın . Başkalarının gönderilerini çalmayın. |
Merhaba ffoorr,
Çözümünüz gerçekten çok iyi.
Gerçeği söylemek gerekirse, dün gece tamir etmesi için birini tuttum. Evet yaptı ama kod verimsiz, lütfen aşağıya bakın, çünkü (i) için bir tane daha ekledi.
prev_calculated ==0 ile ne anlama geldiğini açıklayabilirseniz sevinirim. anlamıyorum.
peki scfx, göstergenizin ikinci bölümünü anlamıyorum, bu yüzden söyleyemem.
Bir gösterge ilk kez başlatıldığında, (bir çizelgeye koyun) önceki_hesaplama yapım yoluyla Sıfıra eşittir, bu nedenle göstergenin hesaplamaya başlayacağı başlangıç noktası sabitlenebilir.
if( önceki_hesaplanmış == 0) limit = 100;
veya
if( önceki_hesaplanmış < 50) limit = 500:
ya da söyle
if( prev_calculated < 500) limit = 3000: (hepsi aynı, grafiğin başlangıcı kullanılmaz)
int limit = - 100 ; if ( prev_calculated == 0 ) limit = 3000 ;// will calculate 3000 Bars else limit = rates_total-prev_calculated; at the first lauch of the indicator limit = 3000; for ( int i= 1 ; i<3000; i++) // draw 3000 bars at the second lauch limit = 0; // ( because rates_total-prev_calculated = 0) ; for ( int i= 1 ; i<0; i++) // draw the last bars only, faster
çok iyi fikir bu indi ......
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Merhaba,
Bir gösterge ile başlıyorum (İLK BÖLÜM). Zaman çerçevesini değiştirirken iyi çalışıyor.
Sonra İkinci Parçayı ekliyorum: Kapat[i]-Kapat[i+1], son 100 bar fark değerinin medyanından küçükse, tüm tamponlara 0 değeri atayacağım.
Şimdi birleşik gösterge 1 grafikte iyi çalışıyor ancak zaman çerçevesini değiştirdiğimde bu gösterge kayboluyor. Onu grafiğe yeniden eklemem gerekiyor.
Sorunun Array'den kaynaklandığını düşünüyorum ama nasıl düzelteceğimi bilmiyorum.
Hata konusunda bana yardımcı olabilecek var mı?
Çok teşekkür ederim.
SCFX