Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 136

 
paladin80 :
Belki de sorunuzdan anladığım şey, aklınızdakilerden farklıdır. Örneğimde, 3 ile 2 bar ve 2 ile 1 arasındaki açık fiyatlar karşılaştırılır, 3 ile 1 barlar karşılaştırılmaz. Karşılaştırılan değerler eşitse hiçbir şey olmaz, bir sonraki karşılaştırmaya geçmeniz yeterlidir.
Neden x>1 (>= değil). İlk yineleme, Open[3]==Open[3-1]'i karşılaştırır, yani. Aç[3]==Aç[2]. TAMAM. İkinci (x=2) ile Aç[2]==Aç[1]. TAMAM. Üçüncü bir yineleme yoktur. x>=1 için bir karşılaştırma olacak Open[1]==Open[0], uygun değil, çünkü 0 bar ile karşılaştırılmalıdır.

Çok teşekkürler! Ve üç çubuğun her birinin açılış ve kapanış fiyatlarını karşılaştırırsak, kod bu şekilde değişecek mi?
 extern int n= 4 ;
//-----------------------------------------------+
for (x=n;x> 1 ;x--)
   {
     if (Close[x]==Open[x]) continue ;
       if (Close[x]<Open[x])
     {
      action
     }
     else {
       if (Close[x]>Open[x])
     {
      action
      }
    }
   }
 
ALXIMIKS :

Hayır, her yeni onay işaretiyle değer Bayrak gerçek olacak. https://book.mql4.com/en/variables/types

Global düzeyde bir değişken bildirmek gerekir - örneğin, programın başlangıcında, tüm işlevlerin dışında.

Veya değişkeni static yapın - static bool flag=true; .

Sadece yeniden başlattığınızda değişkenin yeniden başlatıldığını unutmayın. Bu nedenle, bu yaklaşım bir testçi için kabul edilebilir, ancak gerçek ticaret için geçerli değildir.
 
İnsanlar, bana göstergeyi söyleme. Genel olarak, iki hareketli ortalamaya dayanır. Ve kavşakta ok şeklinde yön verir. Bulamazsınız efendim.
 
skyjet :

Çok teşekkürler! Ve üç çubuğun her birinin açılış ve kapanış fiyatlarını karşılaştırırsak, kod böyle mi değişecek?

Konuyu netleştirmek için. Aynı çubuğun açılıp kapanmasını karşılaştırmak gerekir, yani. n numaralı çubuğun düşüş veya yükseliş olup olmadığı. Aşağıdaki betiği tırnak penceresine bırakın.

 extern int n= 4 ;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   for ( int x=n; x> 1 ; x--)
    {  
     if (Close[x]==Open[x])
      {
       Print ( "Бар номер " ,n, " плоский :)" );
       continue ;
      }
     if (Close[x]<Open[x])
      {
       Print ( "Бар номер " ,n, " медвежий" );
       continue ;
      }
     else // if(Close[x]>Open[x]) - В данном случае сравнение if можно пропустить
           // т.к. два случая (равно и меньше) уже обработаны
      {
       Print ( "Бар номер " ,n, " бычьий" );
      }
    }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
paladin80 :

Kodu buraya doğru bir şekilde eklemek için SRC'ye ve ardından oradaki koda basın.

Bu danışmanı teklifler penceresine atın.


Pencereye attım tıpkı göstergenin shift değerini yazması gibi anladığım kadarıyla ama koda ne eklemeliyim ki ayarlarda kaç levele ihtiyacım var ?
 
Danila_mactep :

Pencereye attım tıpkı göstergenin shift değerini yazması gibi anladığım kadarıyla ama koda ne eklemeliyim ki ayarlarda kaç levele ihtiyacım var ?

Kaydırma değerini yazmaz. Hafızam bana doğru hizmet ediyorsa, o zaman kayma kodda ayarlanmamıştır, ancak sadece Mashka'nın değerinin bir okuması vardır. Burada da bu değeri veriyor.

MAchka değerine göre kaydırmanın değerini görebilmek için, bu değeri harici parametrelerde ayarlamanız ve ardından MAchka değeri +kaydırma değeri*Kaydırılacak nokta ve MAchka değer-kaydırma değeri çıktısını almanız gerekir. *Aşağı kaydırmayı gösteren nokta.

 
Danila_mactep :

Pencereye attım tıpkı göstergenin shift değerini yazması gibi anladığım kadarıyla ama koda ne eklemeliyim ki ayarlarda kaç levele ihtiyacım var ?
 extern int sdvig= 0 ;
//---
int init() 
{
   return ( 0 );
}
//--------------
int start()
{
   double MA= iMA ( NULL , 0 , 12 , 144 , MODE_SMA , PRICE_CLOSE , sdvig);
   Comment ( "Для бара номер " ,sdvig, " значение МА = " ,DoubleToStr(MA, Digits ));
   return ( 0 );
}
//--------------
int deinit()
{
   Comment ( "" );
   return ( 0 );
}
 
paladin80 :


Hayır, öyle değil. Mashka'dan belirli sayıda puanla yukarı ve aşağı bir kaymaya ihtiyacımız var. Ve tarihteki parmaklıklar arasında bir kayma değil.
 
artmedia70 :

Hayır, öyle değil. Mashka'dan belirli sayıda puanla yukarı ve aşağı bir kaymaya ihtiyacımız var. Ve tarihteki parmaklıklar arasında bir kayma değil.
 extern int move= 100 ; 
//---
int init() 
{
   return ( 0 );
}
//--------------
int start()
{
   double MA= iMA ( NULL , 0 , 12 , 144 , MODE_SMA , PRICE_CLOSE , 0 );
   double Sdvig=MA+(move* Point );
   Comment ( "Сдвиг на " ,sdvig, " пунктов от МА = " ,DoubleToStr(Sdvig, Digits ));
   return ( 0 );
}
//--------------
int deinit()
{
   Comment ( "" );
   return ( 0 );
} 
 
paladin80 :

Ve şimdi eksi de ... Ve mutlu olacak :) Ya da vardiyayı nasıl azaltacağını "düşünmesine" mi izin verecek?