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

 
hoz :

Şu anda görev şu şekilde: fastMa slowMa'yı geçti ... bu yüzden nereden satın alacağımızı arıyoruz. Ardından, fiyat, yani. Sor (çünkü satın almayı düşünüyoruz) fastMa'ya ulaşacak ( peki, anladığım kadarıyla tam değer burada olmayacak, +- biraz sapma gerekli ve bu bir değişkendir i_thresholdFromMa ) ve fiyat fastMa'ya yaklaşır yaklaşmaz + - i_thresholdFromMa EA fiyata ( fastMa + buyHear * pt) bir SATIN ALMA DURDURMALIDIR.

Bir terminalde başıma gelenler işe yaramadı, diğerinde çalıştı, üçüncüsünde her zaman çalışmıyor. Genel olarak, bir şey doğru değil.

Satın alma işlevinin son sürümü burada:

İşte giriş parametreleri:

Hatalar ekranda görünüyor (OrderSend()'de fiyat kırmızı noktanın üzerinde, sipariş ise ekranda görebileceğiniz gibi aşağıda...):

Birkaç gündür yoktum ... Düşünüyorum - çizelgeye atılan keneler, hesaplamalarda kullanılan kenelerle aynı parametrelere sahip mi? Belki köpek orayı karıştırmıştır?

(Kodu incelemek ve parçalarına ayırmak için hala zaman yoktu).

Gibi bir işlev yapardım:

 //-----------------------------------------------------------------------------+
double ma( int MAperiod, int MAmethod, int MAshift) { return ( iMA ( Symbol (), Period (), MAperiod, 0 , MAmethod, PRICE_OPEN ,MAshift));}
//-----------------------------------------------------------------------------+

ve parametreleri almak için çağırdı

 

Merhaba, söyle lütfen! Satın almak için gösterge sinyali tetiklendi, ancak sonraki iki mumun onaylanmasından sonra bir sipariş açıyorum.

 
Top2n :

Merhaba, söyle lütfen! Satın almak için gösterge sinyali tetiklendi, ancak sonraki iki mumun onaylanmasından sonra bir sipariş açıyorum.


Bu nedenle, aynı anda son iki mumun yandığını ve iki bar önce bir sipariş açmak için bir koşul olup olmadığını kontrol edin.
 
Roger :

Bu nedenle, aynı anda son iki mumun yandığını ve iki bar önce bir sipariş açmak için bir koşul olup olmadığını kontrol edin.

nasıl yapılır?

 if (bay_min == true ) сработал сигнал на покупку ждем подтверждение
  
 if (Open[ 1 ]<Close[ 1 ] && Open[ 2 ]<Close[ 2 ] )
   
 if ( Bars ( 2 ).............


ve eğer öyleyse, sinyal işe yaradı, ancak sinyal 2 çubuk yukarı veya aşağı olduktan sonra onay için bekliyoruz.

Bir şekilde sinyaldeki çubuğu, sinyalden sonraki çubuğu hatırlaması gerekir, iki artan veya azalan ise karşılaştırın, o zaman ....

 
Top2n :

nasıl yapılır?


ve eğer öyleyse, sinyal işe yaradı, ancak sinyal 2 çubuk yukarı veya aşağı olduktan sonra onay için bekliyoruz.

Bir şekilde sinyaldeki çubuğu, sinyalden sonraki çubuğu hatırlaması, artan veya azalan iki olup olmadığını karşılaştırması gerekir, o zaman ....

bay_min'i nasıl elde ettiğinizi gösterin.
 
Top2n :

nasıl yapılır?


ve eğer öyleyse, sinyal işe yaradı, ancak sinyal 2 çubuk yukarı veya aşağı olduktan sonra onay için bekliyoruz.

Bir şekilde sinyaldeki çubuğu, sinyalden sonraki çubuğu hatırlaması gerekir, iki artan veya azalan ise karşılaştırın, o zaman ....



 if (bay_min == true )   datetime T=Time[ 0 ] //сработал сигнал на покупку запоминаем время  бара

if (iBarShift( NULL , 0 ,T)== 2 ) //по времени, сигнал был на 2 баре
   {   
   if (Open[ 1 ]<Close[ 1 ] && Open[ 2 ]<Close[ 2 ] )   //и эти бары бичьи 
     { 
     // что-то делаем
     }
   }
   
// я думаю, как-то так.
 
uzmanlar için soru

Basit bir danışman yazıyorum, hemen birçok sorunla karşılaştım.

koşul

Mevcut çubuğun kapanış fiyatını hatırlayın ve önceki 4. çubuk hareketli ortalamadaysa bunu Başlangıç Fiyatı değişkenine girin.


Koşul yerine getirilirse, çubuğun kapanış fiyatını gösteren bir simge, yani Başlangıç fiyatı çizin.

Yaptığım şey, simgenin çizilmesi, ancak yalnızca bir kez, ancak her seferinde buna ihtiyacım var.

Çubuğun kapanış fiyatı, 0.00001'deki tutarsızlığın Başlangıç fiyatıyla eşleşmiyor, neden ve nasıl başa çıkılır?

Yuvarlamayı ve 5 karaktere kesmeyi denedim yardımcı olmadı (

Dergide, baskıyı kullanarak Startprice değerini çağırırım, sayı sadece 4 karaktere veya daha azına kadar gösterilir.

Terminal veri penceresindekiyle aynı doğruluk nasıl elde edilir?

Ondalık noktadan sonraki işaretlerle ilgili bu sorun, hareketli ortalama için de geçerlidir. Değerlerini baskı yoluyla çağırırsanız, günlükte 4'ten fazla karakter elde edilmez.



#property copyright "Zuly"


 extern int MA_Period = 50 ; //периуд Ма
extern int MA_Method = MODE_SMA ;     //Метод усреднения скользящего среднего. Может быть любым из значений методов скользящего среднего (Moving Average):
                               //*MODE_SMA 
                              
 extern int Maximum_History = 0 ;         //Ограничение истории для расчетов, если 0 то расчет всей истории
 
   
    
   //начало кода советника
int start()


{      
     double MA4;                                 // Значение МА на 4 баре 
    
     double Startprice;
    
   { 
   MA4= iMA ( NULL , 0 ,MA_Period, 0 ,MA_Method, PRICE_CLOSE , 4 ); 
 
   
                       if   (Low[ 4 ]< MA4 && MA4 < High[ 4 ]) //условия если 4-я свеча лежит в скользящей
  
  {    
  
   Startprice=Close[ 0 ];
  
     //   Startprice=NormalizeDouble(Close[0],5); // пробуем округлить до 5-го знака, не помогло 
 
     //  Startprice=MathFloor(Close[0]*100000)/100000; // пробуем обрезать до 5-го знака не помогло
      
  
  
     
       //Print (Startprice); // распечатаем Startprice
     
      
   datetime TmR1=Time[ 0 ]; // запоминаем время текущего бара? 

   

   
       ObjectCreate ( "Rep1" , OBJ_ARROW , 0 , TmR1, Startprice); // создаем обьект 
      ObjectSet( "Rep1" , OBJPROP_COLOR , White); // устанавливаем обьект на график
       ObjectSet( "Rep1" , OBJPROP_ARROWCODE , 71 ); 
      
     return ( 0 ); 
 
 
 
}} }    
   
 test parametreleri ve zaman
 
Çıktı almak için DoubleToStr(sayı, Rakamlar ) kullanın. Rakamlar yerine, ihtiyacınız olan doğruluğu girebilirsiniz. Simgenin adına, simgeyi kurduğunuz çubuğun saatini ekleyin.
 
artmedia70 :
Çıktı almak için DoubleToStr(sayı, Rakamlar) kullanın. Rakamlar yerine, ihtiyacınız olan doğruluğu girebilirsiniz. Simgenin adına, simgeyi kurduğunuz çubuğun saatini ekleyin.


Öyleyse

Startprice=DoubleToStr(Close[ 0 ], 5 );

çalışmıyor, '=' şeklinde yemin ediyor - uyumsuz türler C:\fortest\experts\sve.mq4 (34, 14)

Bu nasıl doğru yazılabilir?

Cevap için teşekkürler 1 haftadır uğraşıyorum

 
artmedia70 :
Çıktı almak için DoubleToStr(sayı, Rakamlar) kullanın. Rakamlar yerine, ihtiyacınız olan doğruluğu girebilirsiniz. Simgenin adına, simgeyi kurduğunuz çubuğun saatini ekleyin.

ve çıktı için, baskının her zaman yalnızca 4-re ve bir işaretten daha az verdiğini anlıyorum.

o zaman Print (DoubleToStr(Startprice,5)); // Başlangıç fiyatını yazdır

5 verir.

Ama burada bar zamanı nasıl eklenir

Bu satır bar zamanı eklemiyor mu?

  datetime TmR1=Time[ 0 ];