MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1683

 
Tabiiki. İlk: 0, son: OrdersTotal()-1
 
Aleksei Stepanenko # :
Tabiiki. İlk: 0, son: OrdersTotal()-1

ve aynı yerde, gerçekten sıfırdan bir dizi...

 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
                                                              
extern int RSIPERIOD= 3 ;
extern double KOEFF1= 2.5 ;
extern double KOEFF2= 1.86 ; 
                                                                                                                                                                  
double mass0[],Buf1[],Buf2[];
double D10,D11,D12;
                                                                                                                                                                                                                                                                                                                                             
int init()
  {
   IndicatorDigits( 0 );
   string short_name= "RSITEST" ;           
   IndicatorShortName( "RSITEST" );
   
   D10=RSIPERIOD;D11=D10*KOEFF1;D12=D11*KOEFF2;;
 
   SetIndexBuffer ( 0 ,mass0);
   SetIndexLabel ( 0 , "Stoch " +Ds_0(D10)+ ")\n" );
   SetIndexBuffer ( 1 ,Buf1);
   SetIndexLabel ( 1 , "Stoch (" +Ds_0(D11)+ ")\n" );
   SetIndexBuffer ( 2 ,Buf2);
   SetIndexLabel ( 2 , "Stoch (" +Ds_0(D12)+ ")\n" );
   return ( 0 );
  }
                                                                                                               
int start()
  {
   if ( Bars <=RSIPERIOD) return ( 0 );
   int ExtCountedBars=IndicatorCounted();
   if (ExtCountedBars< 0 ) return (- 1 );
   if (ExtCountedBars> 0 ) ExtCountedBars--;
   for ( int i= 0 ;i< Bars -RSIPERIOD;i++)
      {
       mass0[i] = iRSI ( NULL , 0 ,D10, 0 ,i);
       if ( iRSI ( NULL , 0 ,D11, 0 ,i)> iRSI ( NULL , 0 ,D12, 0 ,i))
       Buf1[i] = Buf2[i];
       Buf1[i] = DRAW_LINE ;
       Buf2[i] = EMPTY_VALUE ;
      }
   return ( 0 );
  }

string Ds_0( double DOUBLE) { return (DoubleToStr(DOUBLE, 0 ));}
MakarFX # :
senin durumunda, 3 satırdan sadece 2'si çıktı, onu göreve uyarladım ve ilk satırın (olması gerektiği gibi) kaldığı ve diğer ikisinin (kırmızı ve mavi) denkleminin verilenlerle olduğu ortaya çıktı. koşullar ( Kırmızı ve mavi çizgilerin YERİNE bir satır olurdu - ve eğer kırmızıydı   RSI2 > RSI3 ve mavi ise   RSI2<   RSI3 ) düzleşir ve sadece RSI olduğunu anlamıyormuş gibi kırmızı olur
Ekran görüntüsü eklendi
Dosyalar:
 
Andrey Kipyatkov # :
senin durumunda, 3 satırdan sadece 2'si çıktı, onu göreve uyarladım ve ilk satırın (olması gerektiği gibi) kaldığı ve diğer ikisinin (kırmızı ve mavi) denkleminin verilenlerle olduğu ortaya çıktı. koşullar ( Kırmızı ve mavi çizgilerin YERİNE bir satır olurdu - ve eğer kırmızıydı   RSI2 > RSI3 ve mavi ise   RSI2<   RSI3 ) düzleşir ve sadece RSI olduğunu anlamıyormuş gibi kırmızı olur
Ekran görüntüsü eklendi

Buf1 ve Buf2'yi nasıl eşitlersiniz?

Sizin durumunuzda 0'a eşittirler!

 
Andrey Kipyatkov # :
senin durumunda, 3 satırdan sadece 2'si çıktı, onu göreve uyarladım ve ilk satırın (olması gerektiği gibi) kaldığı ve diğer ikisinin (kırmızı ve mavi) denkleminin verilenlerle olduğu ortaya çıktı. koşullar ( Kırmızı ve mavi çizgilerin YERİNE bir satır olurdu - ve eğer kırmızıydı   RSI2 > RSI3 ve mavi ise   RSI2<   RSI3 ) düzleşir ve sadece RSI olduğunu anlamıyormuş gibi kırmızı olur
Ekran görüntüsü eklendi


Dosyalar:
RSITEST-1.mq4  4 kb
 
Merhaba! Lütfen bize bir ticaret robotu ile bir ticaret danışmanı arasındaki farkın ne olduğunu söyleyin?
 
Daniil Osipov # :
Merhaba! Lütfen bize bir ticaret robotu ile bir ticaret danışmanı arasındaki farkın ne olduğunu söyleyin?
Aynı şey... kelime oyunu
 
MakarFX # :

Kodla yardım ettiğiniz için teşekkürler, ancak zor değilse, özü anlamak isterim. Her şeyi tek satırda yazdığınızda:
Buf0[i] = iRSI(NULL,0,D10,0,i); - bu küçük harfi, sıfır dizisinin yukarıda belirtilen parametreyle bir rsai satırı olacak şekilde ayarladınız
if(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i)) o zaman burada D11 >D12 parametresiyle rsi'yi söylüyorsunuz
Buf1[i] = Buf0[i]; ve burada rsai'yi D11 ve D10 parametreleriyle eşitlersiniz (bir satırı diğerinin üzerine bindirirsiniz)
başka
Buf1[i] = BOŞ_DEĞER; ve D11 parametreli PC çizilmez diyorsunuz.
ama 3 satır ile çalıştığınızda
Buf0[i] = iRSI(NULL,0,D10,0,i); 1 çizgi nasıl çizilir diyorsun
Buf1[i] = (iRSI(NULL,0,D11,0,i)+iRSI(NULL,0,D12,0,i))/2; daha sonra 2 2 ve 3 ile toplayıp bölersiniz - Bu eylem benim için çok net değil, çünkü daha önce dizileri eşitlediniz ve bir satırı diğerine bindirdiniz, neden böyle bir sözdizimi var.
if(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i)) o zaman örneğinizdeki gibi tekrarlayın - parametre ile rsi'yi söylüyorsunuz   D11   >D12
Buf2[i] = Buf1[i]; ve zaten 3 ve 2 satırı eşitleyin
başka
Buf2[i] = BOŞ_DEĞER; ve ikinciyi çizmememi söylüyorsun

Dile "parametreleri" nasıl ayarladığınızı, ne yapılması gerektiğini ve ikinci durumda neden dizileri eklediğinizi ve 2'ye böldüğünü doğru anlıyorum.

 
MakarFX # :
Aynı şey... kelime oyunu
Vitaly Muzichenko # :

Kelime oyunu.

Bir sonraki iş parçacığından. Konuşmadan...

 
Andrey Kipyatkov # :
Kodla yardım ettiğiniz için teşekkürler, ancak zor değilse, özü anlamak isterim. Her şeyi tek satırda yazdığınızda:

Andrey, önce ilk gönderiden durumunuzu tanımlayalım

Kırmızı ve mavi çizgilerin YERİNE (resimde sırasıyla RSI2 ve RSI3 (aynısını ekliyorum)) bir satır olacak şekilde koda bir şekilde yazmanın mümkün olup olmadığını açıklamak istedim - ve eğer RSI2> ise kırmızıydı. RSI2 < RSI3 ise RSI3 ve mavi

böylece kırmızı ve mavi yerine bir tane var - bu çizgilerin ortalama değerini alıyoruz, yani.

Buf1[i] = ( iRSI ( NULL , 0 ,D11, 0 ,i)+ iRSI ( NULL , 0 ,D12, 0 ,i))/ 2 ;

ve bu satır varsayılan olarak kırmızıdır.

Ayrıca, durum ne zaman

 if ( iRSI ( NULL , 0 ,D11, 0 ,i)> iRSI ( NULL , 0 ,D12, 0 ,i))

o zaman çizginin rengini değiştirmeyiz, çünkü MT4'te yapılamaz,

ve farklı bir renkle başka bir satırın üstüne alıp empoze edin

Buf2[i] = Buf1[i];