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

 
konam1 :
Herkese iyi günler. Her saatlik mumun açılışında parabolik değerlerini takip ediyorum.
iSAR geçmişinde ilerlerken, sıfır çubuğu, parabolik konumunun yukarıdan aşağıya değiştiği ve bunun tersi olduğu an dışında, grafikteki noktayla çakışır.
if (newbarall!=(iTime(Symbol(),60,0)))
{
newbarall=iTime(Symbol(),60,0);
Print(iTime(Symbol(),60,0));
Print("SAR = ",NormalizeDouble(iSAR(Symbol(),60,0.02,0.2,0),Digits));
};
Bu nedenle aşağıdaki sorular:
Sıfır çubuğunun paraboliği neden tam olarak bu anlarda yanlış kabul ediliyor?
Ve aslında, bundan nasıl kaçınılır, çünkü bir çubuk açıldığında, bir nokta belirir ve bir mum oluşumu sırasında yeniden hesaplama olmadan statiktir.
Bana yardım et lütfen). Teşekkür ederim!

Sıfır mum üzerindeki parabolik noktasını gözlemlerseniz, o zaman hala statik değildir - konumunu değiştirir ve yalnızca konumu yukarı ve aşağı değiştirirken değil, genel olarak - bazen bir konumda hafifçe kayar (hareket etmeden) yukarı aşağı)

 

Merhaba. Lütfen bana yatay çizgilerin neden kaldırılmadığını söyler misiniz?

   if (SellInvertedHammer == true )
   {
       //if ((Open1 < Close1 && delta_minus < 0) || (Open1 >= Close1 && delta_plus > 0))
      {
         if (! ObjectCreate ( ChartID (), "Arrow_Down_InvertedHammer" + IntegerToString (InvertedHammerCandle), OBJ_ARROW_DOWN , 0 , TimeCurrent (), High [ 1 ] + 70 * Point ))
               {
               Print ( "Не удалось создать метку вниз" );
               }
               ObjectSetInteger ( ChartID (), "Arrow_Down_InvertedHammer" + IntegerToString (InvertedHammerCandle), OBJPROP_COLOR , clrRed ); //--- установка цвета
               ObjectSetInteger ( ChartID (), "Arrow_Down_InvertedHammer" + IntegerToString (InvertedHammerCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии
               ObjectSetInteger ( ChartID (), "Arrow_Down_InvertedHammer" + IntegerToString (InvertedHammerCandle), OBJPROP_WIDTH , 1 ); //--- установка толщины линии
               ObjectSetInteger ( ChartID (), "Arrow_Down_InvertedHammer" + IntegerToString (InvertedHammerCandle), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане
               InvertedHammerCandle ++;
         Print ( "Перевернутый молот" );
         Print ( "Дельта+ = " + IntegerToString (delta_plus));
         Print ( "Дельта- = " + IntegerToString (delta_minus));
         Print ( "Объем = " + IntegerToString (volume));
         Print ( "Кумулитивная дельта = " + IntegerToString (cum_delta));
         
         if (! ObjectCreate ( ChartID (), "UpLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJ_HLINE , 0 , TimeCurrent (),UpLine_InvertedHammer))
         {
         Print ( "Не удалось создать верхнюю линию" );
         }
         ObjectSetInteger ( ChartID (), "UpLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_COLOR , clrBlueViolet ); //--- установим цвет прямоугольника 
         ObjectSetInteger ( ChartID (), "UpLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника 
         ObjectSetInteger ( ChartID (), "UpLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника 
         ObjectSetInteger ( ChartID (), "UpLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане 
         
         
         if (! ObjectCreate ( ChartID (), "DownLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJ_HLINE , 0 , TimeCurrent (),DownLine_InvertedHammer))
         {
         Print ( "Не удалось создать нижнюю линию" );
         }
         ObjectSetInteger ( ChartID (), "DownLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_COLOR , clrSlateBlue ); //--- установим цвет прямоугольника 
         ObjectSetInteger ( ChartID (), "DownLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника 
         ObjectSetInteger ( ChartID (), "DownLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника 
         ObjectSetInteger ( ChartID (), "DownLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане 
         lineInvertedHammerCandle ++;
                         
      }

   }
   if (ma2 > UpLine_InvertedHammer && ma2 > DownLine_InvertedHammer && ma1 > UpLine_InvertedHammer && ma1 > DownLine_InvertedHammer)
               {
                  UpLine_InvertedHammer = 0 ;
                  DownLine_InvertedHammer = 0 ;
               }
      
   if (ma2 < UpLine_InvertedHammer && ma2 > DownLine_InvertedHammer && ma1 < UpLine_InvertedHammer && ma1 < DownLine_InvertedHammer)
         {
            
             if (! ObjectCreate ( ChartID (), "Arrow_Sell_InvertedHammer" + IntegerToString (InvertedHammerCandleSell), OBJ_ARROW_SELL , 0 , TimeCurrent (), Low [ 1 ] + 50 * Point ))
                {
                 Print ( "Не удалось создать метку вниз" );
                }
                 ObjectSetInteger ( ChartID (), "Arrow_Sell_InvertedHammer" + IntegerToString (InvertedHammerCandleSell), OBJPROP_COLOR , clrRed ); //--- установка цвета
                 ObjectSetInteger ( ChartID (), "Arrow_Sell_InvertedHammer" + IntegerToString (InvertedHammerCandleSell), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии
                 ObjectSetInteger ( ChartID (), "Arrow_Sell_InvertedHammer" + IntegerToString (InvertedHammerCandleSell), OBJPROP_WIDTH , 1 ); //--- установка толщины линии
                 ObjectSetInteger ( ChartID (), "Arrow_Sell_InvertedHammer" + IntegerToString (InvertedHammerCandleSell), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане
                InvertedHammerCandleSell ++;
                 Print ( "Точка входа SELL по разворотной свече 'Перевернутый молот'" );
                UpLine_InvertedHammer = 0 ;
                DownLine_InvertedHammer = 0 ;
                
                 int upline;
                 int downline;
                upline = ObjectFind ( ChartID (), "UpLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle));
                downline = ObjectFind ( ChartID (), "DownLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle));
                 if (upline > - 1 && downline > - 1 )
                  {
                   ObjectDelete ( "UpLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle));
                   ObjectDelete ( "DownLine_InvertedHammer" + IntegerToString (lineInvertedHammerCandle));
                   Print ( "Линии удалены" );
                  }
                   Print ( "Не удалось удалить верхнюю и нижнюю линии" );
                
          }

Tüm kodun bir parçası. Gerekirse tüm kodu gönderirim.


teşekkürler

 

- İyi akşamlar meslektaşlarım MT4 veya MT5 Expert Advisor yazmayı öğrenmek istiyorum.Kodun tüm nüanslarını pratikte anlaşılır bir şekilde anlatacak ve kodun yazımında yardımcı olacak deneyimli bir danışmana ihtiyacım var. hangi koşullarda ve nasıl kullanılacağını test edip anlamak, farklı koşulların nasıl yazılacağını öğrenmem gerekiyor.

 
Artyom Trishkin :

Sıfır mum üzerindeki parabolik noktasını gözlemlerseniz, o zaman hala statik değildir - konumunu değiştirir ve yalnızca konumu yukarı ve aşağı değiştirirken değil, genel olarak - bazen bir konumda hafifçe kayar (hareket etmeden) yukarı aşağı)


Bununla birlikte, tarihe göre, "geçiş" anları dışında, tesadüfler tamdır. 1-2 puanlık bir hata bile bana uyacaktır. "geçiş" sırasında 20p veya daha fazla olabilir.

Soru hala aynı, bundan nasıl kaçınılır. teşekkürler

 
konam1 :

Bununla birlikte, tarihe göre, "geçiş" anları dışında, tesadüfler tamdır. 1-2 puanlık bir hata bile bana uyacaktır. "geçiş" sırasında 20p veya daha fazla olabilir.

Soru hala aynı, bundan nasıl kaçınılır. teşekkürler

Bu nasıl bir tasarım ki?

 if ( newbarall!=( iTime ( Symbol (), 60 , 0 )) )
  {
   newbarall= iTime ( Symbol (), 60 , 0 );   
   Print ( iTime ( Symbol (), 60 , 0 ));
   Print ( "SAR = " , NormalizeDouble ( iSAR ( Symbol (), 60 , 0.02 , 0.2 , 0 ), Digits ));
  } ;

Böyle bir tasarım veren nedir ?

Neden zamanı böyle yazdırıyorsun ?

Ve neden parabolik değerini tam olarak böyle yazdırıyorsunuz?

 
Artyom Trishkin :

Bu nasıl bir tasarım ki?

Böyle bir tasarım veren nedir ?

Neden zamanı böyle yazdırıyorsun ?

Ve neden parabolik değerini tam olarak böyle yazdırıyorsunuz?


-Bu yapı yeni bir saatlik mum oluştuğunda koşulun yürütülmesini verir: Saatlik mum çubuğunun zamanı newbarall değişkenindeki değerle eşleşmiyorsa, yeni zamanı değişkene yazıp koşulu dolduruyoruz.

- saat mumunun açılış saatini yazdırır

- parabolik değer, grafikte gösterilenle aynı olması için 4 ondalık basamağa yuvarlanır.

 
konam1 :

-Bu yapı, yeni bir saatlik mum oluştuğunda koşulun yerine getirilmesini sağlar: Saatlik mum çubuğunun zamanı, newbarall değişkenindeki değerle eşleşmiyorsa, yeni zamanı değişkene yazıp koşulu dolduruyoruz.

- saat mumunun açılış saatini yazdırır

- parabolik değer, grafikte gösterilenle aynı olması için 4 ondalık basamağa yuvarlanır.

1. Hayır, değil

2. Öyle olsun

3. Bu işlevle gerçek bir sayı yazdırdığınızdan emin misiniz?

4. Neden ; kapanış parantezinden sonra?

 
Artyom Trishkin :

1. Hayır, değil

2. Öyle olsun

3. Bu işlevle gerçek bir sayı yazdırdığınızdan emin misiniz?

4. Neden ; kapanış parantezinden sonra?


1. yine de, algoritma sadece bir mumun açılışında çalışır, böyle bir tasarımın hatası nedir?

3. Örneğin 1.1820 sayıları basılmıştır, bu yüzden eminim.

4. Kodun bir kısmı gösterilir.

 
konam1 :

1. yine de, algoritma sadece bir mumun açılışında çalışır, böyle bir tasarımın hatası nedir?

3. Örneğin 1.1820 sayıları basılmıştır, bu yüzden eminim.

4. Kodun bir kısmı gösterilir.

1. Belki fark etmedim - sabah beş buçuk ...

3.DoubleToString()

4. Ama aynı koşula ve bileşik operatöre sahipsiniz:

 if (condition) { }

Başka bir yorum göremiyorum. neden ";" var operatörden sonra?

 
konam1 :
Bu nedenle aşağıdaki sorular:
Sıfır çubuğunun parabolik değeri neden tam olarak bu anlarda yanlış kabul ediliyor?
Ve aslında, bundan nasıl kaçınılır, çünkü bir çubuk açıldığında, bir nokta belirir ve bir mum oluşumu sırasında yeniden hesaplama olmadan statiktir.
Bana yardım et lütfen). Teşekkür ederim!

"Mum oluşumu sırasında nokta belirir ve yeniden hesaplanmadan statiktir" ifadesi doğru değildir, eğer fiyat parabolik ile kırılırsa, nokta yeniden çizilir.
Parabolik her tikte yeniden hesaplanmalıdır, çünkü penetrasyon sadece çubuğun açılışında değil, her an olabilir.