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

 
41ckm39fi :
PrevSignal ile ilgili her şeyi kaldırdım ama mesaj görüntülenmiyor.

Fili fark etmedim bile.

Bu bir gösterge olduğunda arabelleklerin başlatılmasını yapın.

#özellik göstergesi_chart_window

int(){

Gösterge Tamponları(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

aramayı ArraySetAsSeries'e kaldırın .. ve

DeMarker_buffer0[i]= iDeMarker ( NULL , 0 , 14 , 1 );

1 i yerine son parametreyi koy

 
keekkenen :

Fili fark etmedim bile.

Bu bir gösterge olduğunda arabelleklerin başlatılmasını yapın.

#özellik göstergesi_chart_window

int(){

Gösterge Tamponları(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

aramayı ArraySetAsSeries'e kaldırın .. ve

1 i yerine son parametreyi koy


İşte olanlar:

 #property  indicator_level1 0.3
#property  indicator_level2 0.7
#property indicator_chart_window
//---- 
extern int         period_MA            = 5 ,
                  period_DeMarker      = 14 ;
//---- 
double             DeMarker_buffer0[],
                  MA_buffer1[],
                  Signal_Buffer2[];       
#define SIGNAL_BAR 1
 //+------------------------------------------------------------------+
int init()
{

IndicatorBuffers( 2 );

SetIndexBuffer ( 0 ,DeMarker_buffer0);

SetIndexBuffer ( 1 ,MA_buffer1);

SetIndexStyle( 0 , DRAW_NONE );

SetIndexStyle( 1 , DRAW_NONE );

return ( 0 );
  }
   //+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|   
//+------------------------------------------------------------------+
int start()
  {
   int     i,limit= ArraySize (DeMarker_buffer0);
        
   int     counted_bars=IndicatorCounted();
//----
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;
//----
   for (i=limit; i>= 0 ; i--)
  DeMarker_buffer0[i]= iDeMarker ( NULL , 0 , 14 ,i);
//---- 
   for (i=limit; i>= 0 ; i--)
  
  MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit, 5 , 0 , MODE_LWMA ,i);
//----  
                 if (MA_buffer1[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA_buffer1[SIGNAL_BAR+ 1 ] >= 0 )  
//---- 
                                 Alert ( "sMA(" , Symbol (), ", " , Period (), ")  -  BUY!!!" );
//----
                 if ( 0.7 - MA_buffer1[SIGNAL_BAR] > 0 && MA_buffer1[SIGNAL_BAR+ 1 ] - 0.7 >= 0 )
//----               
                                 Alert ( "sMA(" , Symbol (), ", " , Period (), ")  -  SELL!!!" );
                        
   return ( 0 );
  }

Ama bu satır kafamı karıştırıyor

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit, 5 , 0 , MODE_LWMA ,i);

Oluşturulan diğer göstergelerde limit yerine Barlar yazılır.

 
41ckm39fi :


İşte olanlar:

Ama bu satır kafamı karıştırıyor

Oluşturulan diğer göstergelerde limit yerine Barlar yazılır.




Bu iMAOnArray() işlevi, ikinci parametre 0'dan farklıysa, yani normal olarak ortalamayı hesaplayabileceğinden emin değilim. DeMarker_buffer0 dizisinin tamamı için hesaplama, onu 0 olarak ayarlamak daha iyidir..
 
keekkenen :
Benim de kafam karıştı.. bu iMAOnArray() işlevi, ikinci parametre 0'dan farklıysa, yani normal olarak ortalamayı hesaplayabileceğinden emin değilim. DeMarker_buffer0 dizisinin tamamı için hesaplama, 0 olarak ayarlamak daha iyidir.
Limit yerine Bars kaydettim ve program mesaj vermeye başladı!!! Her şey istediğim gibi çalışıyor gibi görünüyor. Sinyal çubuğu kapanana kadar yalnızca mesajlar birçok kez gider.
 
Tünaydın. Danışmanı indirdim, kaydettim, derledim, terminali yeniden yükledim. Lütfen bana MT4'e eklenen Expert Advisor'ın neden tabloya eklenmediğini söyleyin. Yanlış bir şey mi oldu?
 
41ckm39fi :

Onun yerine Bars'ı reçete ettim...

Sinyal çubuğu kapanana kadar yalnızca mesajlar birçok kez gider.

0 hala doğru.

ve zaman kontrolünü geri getir..

 static int PrevTime = Time[0] ;
//---- 
if (PrevTime >= Time[ 0 ] ) return ( 0 );
//---- 
PrevTime = Time[ 0 ];

// а здесь проверяйте условия на алерт
 

hattı söylemeyi unutmuşum

 int     i,limit= ArraySize (DeMarker_buffer0);

onunla değiştirdim

 int     i,limit;

ve satırdaki Barlar ile değiştirilen limit

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0, Bars , 5 , 0 , MODE_LWMA ,i);

Şimdi PrevTime döndürmek ve ikinci parametre Bars'ı 0 ile değiştirmek için dediğiniz gibi yapmaya çalışacağım.

 

Örneğin, mql4 konusunda bir uzman benim için çalışıyor.

harici değişkenler arasında dolaşırken bazı değerler belirledim.

Soru: Zamanın herhangi bir noktasında değişiklik yapmak mümkün müdür?

çalışması sırasında bazı EA değişkenleri (örneğin, klavyeden) ve böylece EA yeniden başlamaz mı?

 
Jazzz :

Örneğin, mql4 konusunda bir uzman benim için çalışıyor.

harici değişkenler arasında dolaşırken bazı değerler belirledim.

Soru: Zamanın herhangi bir noktasında değişiklik yapmak mümkün müdür?

çalışması sırasında bazı EA değişkenleri (örneğin, klavyeden) ve böylece EA yeniden başlamaz mı?


Global düzeyde değişkenler kullanıyorsanız yapabilirsiniz. Değerlerini danışmanı kapatmadan klavyeden değiştirmek için terminalde F3 tuşuna basmanız gerekir.
 
teşekkür ederim!