[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 373

 
sv. :

yabancı.
kontrol edildi, her şey görünüyor.
Grafiği dikey olarak sıkıştırmak gerekebilir, kanal geniş ise o zaman bir artışla görünmeyebilir.

Parametrelerin seçiminden sonra bir şeyler çizildi. Danışmanın koşullarına yalnızca çok dar bir aralık uyar. Sola adım, sağa adım - boşluk. Ve bu koşullar daire tanımına uymuyor. 4 hanede 100 pipte düz alıyorum. Ve benim için her şey açık.

 //+------------------------------------------------------------------+
//|                                           ind_FletChannel_07.mq4 |
//|                                            Copyright © 2013, sv. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013, sv."
#property link       "7009731@mail.ru"
//----
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
//----
extern int     Distans     = 20 ;       // Количество баров для определения канала
extern int     Channel     = 1000 ;     // Размер в пипсах канала
extern int     ZoneUnSence = 80 ;       // Размер выхода за границы канала, в пипсах
extern int     PauseBar    = 1 ;       // А это по ходу дела - смещение баров,т.е. где нужно считать.
//----
double Up[];
double Down[];
double UpSupport[];
double DownResistance[];

double pnt;
double high,   low;
double high_1 = 0 ,
       low_1  = 0 ;
bool    up_chanel, dn_chanel, FirstChanel;
bool    DrawChannel = false ;
int     limit,  History= 0 ;         // 0- все бары
int     n= 0 , n_up= 0 , n_dn= 0 ;
int     Bar;

//+------------------------------------------------------------------+
int init() 
  {
//----
 //  pnt=Point;
 //  if(Digits==5 || Digits==3) pnt*=10;
   
 //  IndicatorDigits(Digits);
 //  IndicatorBuffers(4);
//----      
   SetIndexBuffer ( 0 ,Up);
   SetIndexStyle( 0 , DRAW_LINE );
   SetIndexEmptyValue( 0 , 0.0 );

   SetIndexBuffer ( 1 ,Down);
   SetIndexStyle( 1 , DRAW_LINE );
   SetIndexEmptyValue( 1 , 0.0 );
   
   SetIndexBuffer ( 2 ,UpSupport);
   SetIndexStyle( 2 , DRAW_LINE );
   SetIndexEmptyValue( 2 , 0.0 );

   SetIndexBuffer ( 3 ,DownResistance);
   SetIndexStyle( 3 , DRAW_LINE );
   SetIndexEmptyValue( 3 , 0.0 );
//----      
   return ( 0 );
  }
//+------------------------------------------------------------------+
int start() 
  { 
   limit = Bars -IndicatorCounted()- 1 ; 
   if (limit > 1 )                    limit = Bars - 1 ;
   if (History!= 0 && limit>History)  limit = History- 1 ;                   // кол-во пересчетов по истории

   Bar = limit;
   
   // ------------------------------------------------------------------
   for ( int i=limit; i>= 0 ; i--) 
     {
       if (i < Bar-PauseBar)
       {
         // если не активна отрисовка канала, ищем канал.
         if (DrawChannel== false )
         {
           // отределяется минимум и максимум на заданном интервале Distans
           double low  = iLow ( NULL , 0 ,iLowest ( NULL , 0 ,MODE_LOW, Distans,i));
           double high = iHigh( NULL , 0 ,iHighest( NULL , 0 ,MODE_HIGH,Distans,i));
          
           // и если разность между максимумом и минимумом меньше заданной ширины канала Channel
           if ( (high-low) < Channel* Point )  DrawChannel= true ;
         }  
       }
       // ------------------------------------------------------------------
       if (DrawChannel)
       {  
         // определяются границы канала как максимум и минимум на интервале Distans
        
         // отрисовка первоначального отправного канала
         if (FirstChanel) { Up[i]   = high;   Down[i] = low;  }
         if (up_chanel)   { Up[i]   = high;   UpSupport[i]      = high - Channel* Point ; }   // отрисовка канала тренда вверх
         if (dn_chanel)   { Down[i] = low;    DownResistance[i] = low  + Channel* Point ; }   // отрисовка канала тренда вниз
        
         // определяются границы отправного первоначального канала
         // ------------------------------------------------------------------
         if ( high_1== 0 && low_1== 0 )    
         {
          FirstChanel= true ;  high_1=high;  low_1=low; 
         }
         else                      // если первоначальный отправной канал уже определён и отрисован
         { 
           if (high > high_1)       // если верхняя граница нового канала выше верхней границы предыдущего канала, то это восходящий тренд
           {
            up_chanel= true ;       // активируем флаг отрисовки канала тренда вверх
            high_1 = high;       // и перезаписываем значение
            low_1  = low;
           }
        
           if (low < low_1)         // если нижняя граница нового канала ниже нижней границы предыдущего канала, то это нисходящий тренд
           {
            dn_chanel= true ;       // активируем флаг отрисовки канала тренда вниз
            high_1=high;         // и перезаписываем значение
            low_1=low;
           }
         }  
         // ------------------------------------------------------------------
        
         if (Up[i]!= 0 && UpSupport[i]!= 0 )         // пока условие выполняется, границы канала не изменяются
         {
           if ((Close[i] > Up[i]        + ZoneUnSence* Point ) ||
              (Close[i] < UpSupport[i] - ZoneUnSence* Point ))
           {
             // если условие не выполняется, флаг сбрасывается - Т.е. если не в границах канала
            up_chanel= false ;
            dn_chanel= false ;
            FirstChanel= false ; 
            DrawChannel= false ;
           }
         } 
         // ------------------------------------------------------------------
         if (Down[i]!= 0 && DownResistance[i]!= 0 )
         {
           if ((Close[i] > DownResistance[i]+ZoneUnSence* Point ) ||
              (Close[i] < Down[i]-ZoneUnSence* Point ))
           {
             // если условие не выполняется, флаг сбрасывается - Т.е. если не в границах канала
            up_chanel= false ;
            dn_chanel= false ;
            FirstChanel= false ;
            DrawChannel= false ;
           }
         }
         if (Up[i]!= 0 && Down[i]!= 0 )
         {
           if ((Close[i] > Up[i]   + ZoneUnSence* Point ) ||
              (Close[i] < Down[i] - ZoneUnSence* Point ))
           {
             // если условие не выполняется, флаг сбрасывается
            up_chanel= false ;
            dn_chanel= false ;
            FirstChanel= false ; 
            DrawChannel= false ;
           }
         }    
        Bar = i; 
       }    
     } 
   // Конец перебора
   // ------------------------------------------------------------------
   return ( 0 );
  }
//+------------------------------------------------------------------+

Biraz değiştirdim - anlamaya çalıştım. Ancak bu formda her şey çalışır. TF, H1'i kullandı. Diğer TF'lerde, parametreleri seçerek görüntü oluşturmanın mümkün olmaması kötü. Örneğin, 5 ve 15 dakikada. - Bu TF'leri kullanarak bir daire elde etmenin mümkün olduğu varsayılabilir. Ancak baykuşun mantığı muhtemelen acı çekiyor - burada muhtemelen çözmeniz gerekiyor. (Bu konuda daha yetenekli olanlardan biri fikir önerecek veya hatalara işaret edecekse.)

Ve render ile ilgili herhangi bir sorun fark etmedim.

Bu göstergede, büyük çoğunluk gibi, bir zamanlar olanı çiziyorsunuz; bu bir gösterge yazmak için bir şablon için normaldir. Ancak şu anda olanlar (dediğiniz gibi - mevcut çubukta) bu göstergenin koşullarına girmiyor. Bu nedenle, mevcut çubukta herhangi bir sorun yoktur.

 
Chiripaha :

Parametrelerin seçiminden sonra bir şeyler çizildi. Danışmanın koşullarına yalnızca çok dar bir aralık uyar. Sola adım, sağa adım - boşluk. Ve bu koşullar daire tanımına uymuyor. 4 hanede 100 pipte düz alıyorum. Ve benim için her şey açık.

Biraz değiştirdim - anlamaya çalıştım. Ancak bu formda her şey çalışır. TF, H1'i kullandı. Diğer TF'lerde, parametreleri seçerek işleme elde etmenin mümkün olmaması kötü. Örneğin, 5 ve 15 dakikada. - Bu TF'leri kullanarak bir daire elde etmenin mümkün olduğu varsayılabilir. Ancak baykuşun mantığı muhtemelen acı çekiyor - burada muhtemelen çözmeniz gerekiyor. (Bu konuda daha yetenekli olanlardan biri fikir önerecek veya hatalara işaret edecekse.)

Ve render ile ilgili herhangi bir sorun fark etmedim.

Bu göstergede, büyük çoğunluk gibi, bir zamanlar olanı çiziyorsunuz; gösterge yazma şablonu için normal olan. Ancak şu anda olanlar (dediğiniz gibi - mevcut çubukta) bu göstergenin koşullarına girmiyor. Bu nedenle, mevcut çubukta herhangi bir sorun yoktur.


PauseBar parametresi, bir kanalı diğerinden ayıran minimum mesafedir, sizin sürümünüzde bu parametre 5'ten büyük olmalıdır, daha sonra çeşitli diğer parametrelerle çizilir.
Ancak yeni çubukların ortaya çıkmasıyla çizim sorunu devam etti.

 
sv. :


PauseBar parametresi, bir kanalı diğerinden ayıran minimum mesafedir, sizin sürümünüzde bu parametre 5'ten büyük olmalıdır, daha sonra çeşitli diğer parametrelerle çizilir.
Ancak yeni çubukların ortaya çıkmasıyla çizim sorunu devam etti.

Hala daha kesin olarak anlayamıyorum - Dürüst olmak gerekirse, göstergenizin mantığını anlayamıyorum (özünü anlasam da). Ancak...

Bakın - sorun tam olarak bu blokta yatıyor:

        if (FirstChanel) { Up[i]   = high;   Down[i] = low;  }                             // отрисовка первоначального отправного канала
        if (up_chanel)   { Up[i]   = high;   UpSupport[i]      = high - Channel* Point ; }   // отрисовка канала тренда вверх
         if (dn_chanel)   { Down[i] = low;    DownResistance[i] = low  + Channel* Point ; }   // отрисовка канала тренда вниз

Bir noktada, arabelleklere hiçbir değer yazılmaz ve bu nedenle sıfıra ayarlanır. Bu nedenle çubuklar aşağı - sıfıra. Mantık nasıl oluşturulur ve nelerin eklenmesi gerekir - Anlayamıyorum. Ancak veriler kaydedilmez, açıkçası bayraklarınız olduğu için, dahil. parametreye göre

DrawChannel= false ;

Bu nedenle değerler tamponlara yapılan atamaya düşmez. - Bu davayı bir şekilde yenmeliyiz.

 
Chiripaha :

Hala daha kesin olarak anlayamıyorum - Dürüst olmak gerekirse, göstergenizin mantığını anlayamıyorum (özünü anlasam da). Ancak...

Bakın - sorun tam olarak bu blokta yatıyor:

Bir noktada, arabelleklere hiçbir değer yazılmaz ve bu nedenle sıfıra ayarlanır. Bu nedenle çubuklar aşağı - sıfıra. Mantık nasıl oluşturulur ve nelerin eklenmesi gerekir - Anlayamıyorum. Ancak veriler kaydedilmez, açıkçası bayraklarınız olduğu için, dahil. parametreye göre

Bu nedenle değerler tamponlara yapılan atamaya düşmez. - Bu davayı bir şekilde yenmeliyiz.


Bunun bir mantık meselesi olduğunu anlıyorum. Düşüneceğim.
Yardımın için teşekkürler.

not
PauseBar parametresinde farklı bir parametre seti ile bir artışla geçmişte her şeyin yolunda olup olmadığını kontrol ettiniz mi, yoksa bunda da bir sorun mu var?

 
genişletilmiş askcode tablosunun sembolü nasıl görüntülenir ve görüntülenir?
 
sv. :


Bunun bir mantık meselesi olduğunu anlıyorum. Düşüneceğim.
Yardımın için teşekkürler.

not
PauseBar parametresinde farklı bir parametre seti ile bir artışla geçmişte her şeyin yolunda olup olmadığını kontrol ettiniz mi, yoksa bunda da bir sorun mu var?

PauseBar'daki artışı kontrol ettim ve sadece bu çubukları 1 ve 5 dakikada aldım. Ama onların etrafından nasıl dolaşacağımı bulamıyorum. Değerin muhtemelen (ama açıkça değil) yazılması gerektiğini anlıyorum.

DrawChannel= false ;

içinde

 if (dn_chanel)   { Down[i] = low;    DownResistance[i] = low  + Channel* Point ; }   // отрисовка канала тренда вниз

önceki çubukların değeri şuna benzer:

 if (dn_chanel)   { Down[i] = Down[i+1];    DownResistance[i] = DownResistance[i+1]; }   // отрисовка канала тренда вниз
Ancak bunu uygulamaya çalıştığımda, tüm göstergem "dışarı çıkıyor" - bunun nedeni, mantığı anlamadığım için, nereye ve hangi koşullar altında ekleyeceğimi bulamamamdır.
 
zfs :
genişletilmiş askcode tablosunun sembolü nasıl görüntülenir ve görüntülenir?

ANSI denir.

Komut dosyası eklendi.

Dosyalar:
ansi.mq4  2 kb
 
forumda ilk kez, beni ilgilendiren bir soru sormaya karar verdim - zaten açık bir pozisyona yorumunuzu (1 veya daha fazla kez) eklemek için terminalde bu tür değişiklikler yapmak mümkün mü? bir yorum açarken hemen değil. ve zaten açıldığında - mevcut yorumun görünmesi için ??
 
Lütfen bana sorunu nasıl çözeceğimi söyleyin: aynı danışman birkaç çizelgede asılı kalıyor, aynı zamanda örneğin iki çizelgede bir sipariş açmak için bir sinyal var. Ancak ikinci siparişin açılmamış olması gerekmektedir. EA'nın açık bir sipariş kontrolü var, ancak bu yardımcı olmuyor, çünkü görünüşe göre, ilk EA bir siparişi açarken, ikincisi de bir açma isteği gönderiyor. Çözümler var mı?
 
Twoberg :
forumda ilk kez, beni ilgilendiren bir soru sormaya karar verdim - zaten açık bir pozisyona yorumunuzu (1 veya daha fazla kez) eklemek için terminalde bu tür değişiklikler yapmak mümkün mü? bir yorum açarken hemen değil. ve zaten açıldığında - mevcut yorumun görünmesi için ??

Değil

Neden: