[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 513

 

Profesyoneller, otomatik optimize edicide açılış fiyatları için nasıl optimize edileceğini söylüyor:

https://forum.mql4.com/ru/42125

 
merhaba, danışmanların nasıl yazılacağını anlamaya çalışan acemiyim
bana nasıl yazacağımı söyle "eğer önceki kapalı emir al ve zararı durdur ile kapanmışsa, 0,1 lot satarak 50 zarar durdur ve 50 al proft ile sat" lütfen)
 

Uzmanlar! Yardım! Nasıl uygulanır?


 int start() 
{
 bool OPEN= false ;

 условие 1 =х; //вычисление условия1
 условие 2 =y; //вычисление условия2
 
 if (условие 1 ==х)OPEN= true ;
 
 if (условие 2 ==y&&OPEN== true )
 OrderSend;

Yürütme işlemine kadar OPEN=true düzeltmesi gerekiyor
durum 2. Koşul1 bu süre içinde değişebilir.

Şimdiden teşekkürler!

 

Başlamanın ötesine geçmek

 bool OPEN= false ;
 
sergeev :

Başlamanın ötesine geçmek


Çok teşekkürler! Dedikleri gibi, ustaca olan her şey basittir! Ve bütün gün kafamı kaşıdım.
 

Selamlar! Söyle bana pliz, arabelleğin yalnızca üstündeki veya altındaki koşula karşılık gelen ilk çubukların ( Quant_Bars ) sayısını sayarken neyi yanlış yapıyorum? Onlar. gösterge kapalı çubuğun (1) ÜSTÜNDE göründüğü anda, önceki çubukları çubukların ALTINDA (duruma uymayanlar hariç) göstergesi ile saymak ve tersi hareket yönünün tersi gerekir. Sürümüm yanlış değerler veriyor.

Belki birisi nasıl yapılacağını biliyordur?

 #property indicator_chart_window     
#property indicator_buffers 1
#property indicator_color1 Green
double step = 0.1 ;
double max = 0.2 ;

int n = 1 ;
double S;
double barA;
double barB;
double Bufer[];
int k,k1;
//---------------------------------
int init()
{
   SetIndexStyle ( 0 , DRAW_ARROW ,EMPTY, 0 , Green ); 
   SetIndexArrow ( 0 , 159 ); 
   SetIndexBuffer ( 0 , Bufer);
   return ( 0 );
}
//---------------------------------
int deinit() 
{
   return ( 0 );
}
//----------------------------------
int start()
{

 k1=k;
 for ( int i= Bars - 2 ; i>= 0 ; i--)  
    {
     if (i == Bars - 2 )
       {
         Bufer[i] = Low[i] - 10.0 * Point ;
         n = 1 ;
         S = step;
         barA = High[i];
         barB = Low[i];
       }
     else
       {
         if (Close[i] > barA)
           {
             barA = Close[i];
               if (n== 1 && S <= max - step)
                  { S = S + step; }
             k= 1 ;
           }          
         if (Close[i] < barB)
           {
            barB = Close[i];
               if (n == - 1 && S <= max - step)
                 { S = S + step;}
            k= 2 ;
           }
         if (n == 1 )
           { Bufer[i] = Bufer[i + 1 ] + S * (barA - (Bufer[i + 1 ]));}
       else
           { Bufer[i] = Bufer[i + 1 ] + S * (barB - (Bufer[i + 1 ]));}
      
       if ((Bufer[i+ 1 ] < Close[i + 1 ] && Bufer[i] > Close[i]) || (Bufer[i + 1 ] > Close[i + 1 ] && Bufer[i] < Close[i]))
          {
           S = step;
             if (n == 1 )
                {Bufer[i] = barA;}
             else
                {Bufer[i] = barB;}
           barB = Close[i];
           barA = Close[i];
           n = - 1 * n;
          }
       }
   }
    
//--------------------------Подсчитать бары:
   int num1 = 2 ;   // бар  
   int counted_bars = IndicatorCounted (); 
 //-----СЕЛЛ
if (Bufer[ 2 ]<Close[ 2 ] && Bufer[ 1 ]>Close[ 1 ])    
   {
     for ( i=num1; i<= Bars ; i++ )
        { 
           if (Bufer[i]<Close[i])
                                 
             { int Quant_Bars = Quant_Bars+i;}
           if (Bufer[i]>Close[i] && Bufer[i- 1 ]<Close[i- 1 ]) 
           break ;
         }
     Alert ( "Число баров= " ,Quant_Bars, "  counted_bars= " ,counted_bars, " бары= " , Bars );    
    }
    
 //-----БАЙ  
if (Bufer[ 2 ]>Close[ 2 ] && Bufer[ 1 ]<Close[ 1 ])     
   {
     for ( i=num1; i<= Bars ; i++ )
        { 
           if (Bufer[i]<Close[i])                     
            {Quant_Bars = Quant_Bars+i;}
           if (Bufer[i]>Close[i] && Bufer[i- 1 ]<Close[i- 1 ]) 
           break ;
         }
     Alert ( "Число баров= " ,Quant_Bars, "  counted_bars= " ,counted_bars, " бары= " , Bars );    
    }  

   return ( 0 );
}
 

soru,

neden, danışmanım tüm mevduatı dikkatlice boşalttığında ve neredeyse tüm işlemler kârsız olduğunda, o zaman sinyallerin "kutupluluğu" değiştiğinde, aynı hızlı, ancak mevduatta zaten bir artış meydana gelmiyor? ))) Puanlar aynı, bir nevi hata gibi, teoride sadece sipariş açma yönünde mi? yoksa başka bir şey mi var?

 
Maxaxa :

soru,

neden, danışmanım tüm mevduatı dikkatlice boşalttığında ve neredeyse tüm işlemler kârsız olduğunda, o zaman sinyallerin "kutupluluğu" değiştiğinde, aynı hızlı, ancak mevduatta zaten bir artış meydana gelmiyor? ))) Puanlar aynı, bir nevi hata gibi, teoride sadece sipariş açma yönünde mi? yoksa başka bir şey mi var?

Bu ticaret felsefesidir.
 
Maxaxa :


başka bir şey var
 
Solree :

Güzel gün.

4 sipariş, 2 oturma ve 2 satın alma vardır. Köyler mecazi anlamda fiyat yükseldiğinde kurulur, ancak düştüğünde satın alınır. Satın almalar oluşturulduğunda satışlar kaldırılır ve bunun tersi de geçerlidir. 1. köyün biletini oluştururken veya satın alırken, pos değişkeninde saklanır. 4 yorumun hepsi aynı - "Aelit". İşte kod:

Sıra normal olarak biletle seçilir, ancak çoğu zaman yorum karşılaştırması geçmez. İlgi için, başka Alert(OrderComment()); yaptım. ve günlük "Uyarı: Aelit[sl]" idi. [sl] nedir? Tüm siparişler aynı yoruma sahip olduğu için mi? O zaman diğerlerine uymayan test için yorum yaptığımda neden aynı [sl] vardı? Yoruma göre kontrolü kaldırırsanız, günlük OrderModify için bir bilet hatası içerecektir. İlk başta bu koşula bir tür sipariş oluşturulmadan ulaşıldığını düşündüm, ancak hayır, o zaman zaten bir sipariş var ve koşulun tetiklenmesi ve tetiklenmemesi durumunda bilet aynıdır. Nasıl anlaşılır?

Mucize yok - bu DC yorumunuza kendi yorumunu ekliyor - StopLoss'a ulaşıldığında sipariş kapatıldı.

Bilete göre sipariş seçimini yanlış düzenlediniz. Bu seçimle ilk olarak MODE_TRADES gereksizdir - OrderSelect() işlevi tarafından atlanır,

ikinci olarak, başarılı bir sipariş seçiminden sonra, bilet siparişinin hangi sipariş dizisinden seçildiğini kontrol etmezsiniz - piyasadan veya kapalı olanlardan.

Bunu yapmak için, bir emir seçtikten sonra, kapanış saatini kontrol edin ve eğer sıfıra eşitse, o zaman ancak o zaman emir bir piyasa emridir, aksi takdirde zaten kapalı olanlardan seçilir (oradan ve yorumunuza ekleyin)

Neden: