[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 603

 
41ckm39fi:
Ich habe alles entfernt, was mit PrevSignal zusammenhängt, aber die Meldung wird nicht angezeigt.

Ich habe den Elefanten im Raum nicht gesehen...

eine Pufferinitialisierung durchführen, da es sich um einen Indikator handelt...

#property indicator_chart_window

int init(){

IndikatorPuffer(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexPuffer(1,MA_Puffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

ArraySetAsSeries-Aufruf entfernen.. . und in

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

Setzen Sie den letzten Parameter anstelle von 1 i

 
keekkenen:

Ich habe den Elefanten im Raum nicht gesehen...

eine Pufferinitialisierung durchführen, da es sich um einen Indikator handelt...

#property indicator_chart_window

int init(){

IndikatorPuffer(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexPuffer(1,MA_Puffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

ArraySetAsSeries-Aufruf entfernen.. . und in

Setzen Sie den letzten Parameter anstelle von 1 i


Das bekommen Sie:

#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);
  }

Aber diese Zeile verwirrt mich

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

Andere zusammengesetzte Indikatoren schreiben Bars anstelle von Limit.

 
41ckm39fi:


Das ist dabei herausgekommen:

Aber diese Zeile verwirrt mich

Andere zusammengesetzte Indikatoren schreiben Bars anstelle von Limit.




Ich bin auch verwirrt... diese iMAOnArray()-Funktion, ich bin nicht sicher, dass es richtig Mittelwertbildung berechnen kann, wenn der zweite Parameter ungleich 0 ist, d.h. Berechnung über das gesamte DeMarker_buffer0-Array, besser setzen 0...
 
keekkenen:
Ich bin auch verwirrt... diese iMAOnArray()-Funktion, ich bin nicht sicher, es kann richtig berechnen, Mittelwertbildung, wenn der zweite Parameter anders als 0, d.h. Berechnung über die gesamte DeMarker_buffer0 Array, besser setzen 0...
Ich habe Bars anstelle von Limit eingegeben und das Programm gab Meldungen aus!!! Es scheint so zu funktionieren, wie ich es wollte. Nur die Meldungen gehen viele Male, bis sich der Signalbalken schließt.
 
Guten Tag. Ich habe den EA heruntergeladen, gespeichert, kompiliert und das Terminal neu geladen. Können Sie mir sagen, warum der zu MT4 hinzugefügte EA nicht mit dem Diagramm verbunden ist? Habe ich etwas falsch gemacht?
 
41ckm39fi:

Ich verschrieb Riegel anstelle von ...

Nur die Meldungen gehen viele Male, bis sich der Signalbalken schließt.

0 ist immer noch richtig...

und bringen Sie die Zeitkontrolle zurück...

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

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

Ich vergaß zu erwähnen, dass die Zeile

int    i,limit=ArraySize(DeMarker_buffer0);

Ich ersetzte durch

int    i,limit;

und ersetzte Limit durch Bars in der Zeile

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

Ich werde nun versuchen, wie Sie sagen, PrevTime zurückzugeben und den zweiten Parameter Bars durch 0 zu ersetzen.

 

Ich habe zum Beispiel einen Expert Advisor, der auf mql4 läuft.

Wenn ich es durch externe Variablen laufen lasse, setze ich einige Werte.

Frage: Kann ich jederzeit wechseln?

einige Variablen des Expert Advisors während seines Betriebs (z. B. über die Tastatur) und würde in einem solchen Fall keinen Neustart des Expert Advisors verursachen?

 
Jazzz:

Ich habe zum Beispiel einen Expert Advisor, der auf mql4 läuft.

Wenn ich es durch externe Variablen laufen lasse, setze ich einige Werte.

Frage: Kann ich jederzeit wechseln?

einige Variablen des Expert Advisors während seines Betriebs (z. B. über die Tastatur) und würde dies in einem solchen Fall nicht zu einem Neustart des Expert Advisors führen?


Das können Sie, wenn Sie Variablen auf globaler Ebene verwenden. Um ihre Werte über die Tastatur zu ändern, ohne den EA auszuschalten, drücken Sie F3 im Terminal.
 
Ich danke Ihnen!