[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 143

 

Bunun gibi:

 //+------------------------------------------------------------------+
extern string   _____ = "Параметры Длинных позиций" ; 
extern int     RSI_period  = 20 ;
extern int     MA_period          = 21 ;
extern int     TP = 200 ;
extern int     SL = 61 ;

extern string   ____ = "Параметры Коротких позиций" ;
extern int     RSI_period_SELL  = 20 ;          
extern int     MA_period_SELL          = 21 ;
extern int     TP_ = 200 ;
extern int     SL_ = 61 ;

//------------------------------
extern string     ______ = "Общие Параметры " ;
extern double  Lot = 0.1 ;
extern int     Slippage = 3 ;
extern int    Low_lim = 8 ;
extern int   Up_lim = 8 ;

int ExpertBars ;
int ticket ;

//*********************************************************************
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ( )
  {
//----
ExpertBars = Bars ;
//----
   return ( 0 ) ;
  }

Daha ileri:





 int start ( )
  {
bool isNewBar = false ;
if ( ExpertBars ! = Bars ) { ExpertBars = Bars ; isNewBar = true ; }
if ( isNewBar ) { //если есть новый бар
 
//===== Ищем возможность войти в рынок =========================================
if ( Long )                   {     //если "выключатель" включен
if ( ! ExpertOrder ( MagicLong ) ) //если  нет открытых длинных позиций 
  {
 //------заполняем массив значениями RSI для длинных позиций --------
double RSI_array_buy [ 50 ] ;
int    j = 0 ;
while ( j < 50 )
 {
RSI_array_buy [ j ] = iRSI ( NULL , 0 , RSI_period , MODE_SMA , j ) ;
j + + ;
 }
ArraySetAsSeries ( RSI_array_buy , true ) ;
double MA_low = iMAOnArray ( RSI_array_buy , 0 , MA_period , 1 , MODE_SMA , 0 ) ;
double RSI_0 = iRSI ( NULL , 0 , RSI_period , MODE_SMA , 1 ) ;
double RSI_1 = iRSI ( NULL , 0 , RSI_period , MODE_SMA , 2 ) ;   
//---------проверяем условие на покупку----------------------------
  if   (           ( RSI_1 < MA_low )  & &
          ( RSI_0 > MA_low )  )
   {
  ticket = OrderSend ( Symbol ( ) , 0 , Lot , Ask , Slippage , Bid - SL * Point , Ask + TP * Point , NULL , MagicLong , 0 , CLR_NONE ) ;
  if ( ticket < 0 ) { Print ( "Ошибка открытия ордера BUY #" , GetLastError ( ) ) ; return ( 0 ) ;   }          
   }
   } }
   //--------------------------------------------------------------
if ( Short )                   {     //если "выключатель" включен 
if ( ! ExpertOrder ( MagicShort ) ) //если  нет открытых длинных позиций 
  {  
 // ---заполняем массив значениями рси  для коротких  позиций
double RSI_array_sell [ 50 ] ;
int    k = 0 ;
while ( k < 50 )
 {
RSI_array_sell [ k ] = iRSI ( NULL , 0 , RSI_period_SELL , MODE_SMA , k ) ;
k + + ;
 }
ArraySetAsSeries ( RSI_array_sell , true ) ;
double MA_up = iMAOnArray ( RSI_array_sell , 0 , MA_period_SELL , 1 , MODE_SMA , 0 ) ;
double RSI_0s = iRSI ( NULL , 0 , RSI_period_SELL , MODE_SMA , 1 ) ;
double RSI_1s = iRSI ( NULL , 0 , RSI_period_SELL , MODE_SMA , 2 ) ;
    
//--------проверяем условие на продажу------------------------------
  if  (           ( RSI_1s > MA_up )  & &
          ( RSI_0s < MA_up ) ) 
   {       
  ticket = OrderSend ( Symbol ( ) , 1 , Lot , Bid , Slippage , Bid + SL_ * Point , Bid - TP_ * Point , NULL , MagicShort , 0 , CLR_NONE ) ;
  if ( ticket < 0 ) { Print ( "Ошибка открытия ордера SELL #" , GetLastError ( ) ) ; return ( 0 ) ;  }     
   } 
   } } 
 

Teşekkür ederim!

 
Merhaba! ZZ'yi çalışan TF'de hem daha genç hem de daha eski zaman dilimlerinden gelen sinyallerinin görüntülendiği bir histogram şeklinde yapmaya çalıştım, ancak 5 hata verdi " 'ExtMapBuffer2' - değişken tanımlanmadı ", sorun ne? .. ... Zor değilse yardım edin! !Teşekkürler
Dosyalar:
dinap_zzg.mq4  4 kb
 

Beyler (Yoldaşlar :)))

Yeni başlayanlara yardımcı olabilecek var mı...

MAMy göstergesini (kod tabanında bulunur) ok biçiminde uygulamaya çalışıyorum.

Hatta olmuş gibi görünüyor, ancak oklar biçimlendirilmemiş bir çubuğun üzerine çiziliyor ve oluştuğu zamana kadar koşullar değişmişse ok kaldırılmıyor, ancak gösterge yeniden başlatıldığında kaldırılıyor.

Okların sadece şekillendirilmiş çubuklara çizilmesini istedim. Birinin zamanı varsa - pratik bir ders verin - bu beceriksiz kodu düzeltin ...

(Gereksiz bir şey bulmanız oldukça olası - üzgünüm (sıfırdan bir hindi yazmak için - ellerim oradan çıkmıyor - altın olmalarına rağmen) hala başkalarının boşluklarını kullanıyorum).

Şimdiden teşekkürler.

Dosyalar:
 

Çok teşekkürler kurtulun !

Bu tam olarak doktorun emrettiği şey!

Ve sonra hesabın geçmişinden, grafikte

pek iyi olmadığı ortaya çıktı.



 

plz bana mql'de bir hata ayıklayıcıyı nasıl simüle edebileceğinizi söyleyin (algoritmanın değişkenlerin mevcut değerleriyle adım adım çalışmasını izlemek için), hata ayıklayıcı yoksa, belki bir tuş vuruşunu beklemek için bir işlev ve için bir işlev vardır. bir iletişim kutusu veya bunun gibi bir şey mi görüntülüyor?

 

Yazdır işlevini buldum, ancak şimdi başka bir soru ortaya çıktı: göstergelerin çıktısı nasıl çalışıyor?

Grafikte 512 çubuk var. Teorik olarak, kod 1x14 çubuklarda başlangıç ve çubuk numarasını, ardından ana ve geri kalan çubuk numarasını yazmalıdır, ancak nedense sadece başlangıç en sonuna kadar ve 295 çubuktan yazdırılır. Lütfen bana sorunun ne olduğunu söyle?

 #property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow

extern int Param = 14 ;
extern double Razmah = 0.9 ;

double VH [ ] , VL [ ] , Rang = 0 , z = 0 , z1 = 0 , num = 0 , num1 = 0 ;
int init ( )
   {
   SetIndexBuffer ( 0 , VH ) ;
   SetIndexBuffer ( 1 , VL ) ;
   return ( 0 ) ;
   }
int start ( )
   {
   int i , counted_bars = IndicatorCounted ( ) ;
   if ( counted_bars < = Param + 1 ) 
   { 
       for ( i = 0 ; i < = Bars - counted_bars - 1 ; i + + )
       {
         VH [ i ] = High [ i ] ;
         VL [ i ] = Low [ i ] ;
         num + + ;
         Print ( "Start     " , num ) ;
       }
       return ( 0 ) ;
   }
   
   i = - 5 ;
   if ( counted_bars > Param + 1 ) i = Bars - counted_bars - 1 ;
   while ( i > = 0 )
     {
      num1 + + ;
       Print ( "Main     " , num1 ) ;
      VH [ i ] = High [ i ] * 1.01 ;
      VL [ i ] = Low [ i ] * 0.99 ;
      i - - ;
     }
   return ( 0 ) ;
   }
 
Andrej78 писал(а) >>

Yazdır işlevini buldum, ancak şimdi başka bir soru ortaya çıktı: göstergelerin çıktısı nasıl çalışıyor?

Grafikte 512 çubuk var. Teorik olarak, kod 1x14 çubuklarda başlangıç ve çubuk numarasını, ardından ana ve geri kalan çubuk numarasını yazmalıdır, ancak nedense sadece başlangıç en sonuna kadar ve 295 çubuktan yazdırılır. Lütfen bana sorunun ne olduğunu söyle?

loglara bakman lazım

 
Vinin писал(а) >>

loglara bakman lazım

logları nasıl görebilirim

 
Lütfen döngüye girmeme yardım et, aksi halde bir şey çalışmıyor. Belki sadece taze bir görünüm yeterli olacaktır? Yardımınız için şimdiden teşekkür ederim. Koddaki açıklama.
Dosyalar:
proba9.mq4  3 kb