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

 

Bitte um Hilfe!

Es werden nur zwei MAH-Zeilen angezeigt, obwohl der Code für alle vier Zeilen gleich ist - wo liegt das Problem?

#property indicator_separate_window // Indikator wird in einem separaten Fenster gezeichnet
#property indicator_buffers 4 // Anzahl der Puffer
#property indicator_color1 Blue // Farbe der ersten Zeile
#property indicator_color2 Rot // Farbe der zweiten Zeile
#Eigenschaft indicator_color3 Olive
#property indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // Array-Deklaration (für Indikatorpuffer)
//--------------------------------------------------------------------
int init() // Spezielle Funktion init()
{
SetIndexBuffer(0,Buf_MA40); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Linienstil
SetIndexBuffer(1,Buf_MA20); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Linienstil
SetIndexBuffer(3,Buf_ROC_MA40); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);//Linienstil
SetIndexBuffer(4,Buf_ROC_MA40); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2);// Linienstil
return; // Beenden der speziellen Funktion init()
}
//--------------------------------------------------------------------
int start() // Spezielle Funktion start()
{
int i, // Balkenindex
Geschichte=3000,
counted_bars; // Anzahl der berechneten Balken
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Gezählte_Balken=IndicatorCounted(); // Anzahl der gezählten Balken
i=Bars;//Counted_bars-1; // Index des ersten nicht gezählten Balkens
while(i>=0) //Zyklus durch die nicht gezählten Balken
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
Alert("ma20=",ma20, " ma20_s=",ma20_s, " ma40_s=",ma40_s, " ma40=",ma40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
// Berechnung des nächsten Balkenindexes
}
//--------------------------------------------------------------------
return; // Beenden der Sonderfunktion start()
}

 

1.empfehlen, bitte, einen Debugger (vorzugsweise mit Schritt-für-Schritt-Debugging, so dass Sie Zwischenwerte von Variablen sehen können).

2. wie kann ich Debugging-Daten anzeigen und wo (in welchem Fenster), denn es ist unbequem, Warnungen zu verwenden.

3) Wie kann ich die MMS-Version aktualisieren?

 

Bitte um Rat!

Wie kann ich meinen Expert Advisor dazu bringen, nur während der europäischen Sitzung zu handeln?

 
VNG писал(а) >>

Bitte um Hilfe!

Es werden nur zwei MAs-Zeilen ausgegeben, obwohl der Code für alle vier Zeilen gleichwertig ist - wo liegt das Problem?

int init() // Специальная функция init()
{
SetIndexBuffer(0, Buf_MA40); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(1, Buf_MA20); // Назначение массива буферу
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(2, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (2,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(3, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (3,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
return; // Выход из спец. ф-ии init()
}

Ich habe einen Fehler gefunden. Nach Puffer 1 folgte sofort Puffer 3. Puffer 2 wurde übersprungen.

Sie sollten nur die Maischen und die Differenz nicht in einem Fenster ausgeben. Sie unterscheiden sich um mehr als eine Größenordnung.

 
KoDi писал(а) >>

Bitte um Rat!

Wie bringe ich meinen EA dazu, nur während der europäischen Sitzung zu handeln?

Setzen Sie einfach Start an den Anfang des Moduls

if(Hour()<7 || Hour()>15)return(0);

 

Bitte sehen Sie sich den Code noch einmal an. Ich habe die MAs entfernt, da die neu empfangenen Werte eine völlig andere Skala haben.

Es wird immer noch nichts angezeigt.

#property indicator_separate_window // Indikator wird in einem separaten Fenster gezeichnet
#property indicator_buffers 2 // Anzahl der Puffer
#property indicator_color1 Blue // Farbe der ersten Zeile
#property indicator_color2 Rot //Farbe der zweiten Zeile
//#Eigenschaft indicator_color3 Olive
//#Eigenschaft indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // Deklaration von Arrays (für Indikatorpuffer)
//--------------------------------------------------------------------
int init() // Spezielle Funktion init()
{
//SetIndexBuffer(0,Buf_MA40); // Zuweisung eines Arrays an den Puffer
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Linienstil
//SetIndexBuffer(1,Buf_MA20); // Array dem Puffer zuweisen
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Linienstil
SetIndexBuffer(0,Buf_ROC_MA40); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//Linienstil
SetIndexBuffer(1,Buf_ROC_MA20); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Linienstil
return; // Beenden der speziellen Funktion init()
}
//--------------------------------------------------------------------
int start() // Spezielle Funktion start()
{
int i, // Balkenindex
Geschichte=3000,
counted_bars; // Anzahl der berechneten Balken
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Gezählte_Balken=IndicatorCounted(); // Anzahl der gezählten Balken
i=Bars;//Counted_bars-1; // Index des ersten nicht gezählten Balkens
while(i>=0) //Zyklus durch die nicht gezählten Balken
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//Berechnen des nächsten Balkenindex
}
//--------------------------------------------------------------------
return; // Beenden der Sonderfunktion start()
}

 
VNG писал(а) >>

Bitte sehen Sie sich den Code noch einmal an. Ich habe die MAs entfernt, da die neu empfangenen Werte eine völlig andere Skala haben.

Es wird immer noch nichts angezeigt.

#property indicator_separate_window // Indikator wird in einem separaten Fenster gezeichnet
#property indicator_buffers 2 // Anzahl der Puffer
#property indicator_color1 Blue // Farbe der ersten Zeile
#property indicator_color2 Rot //Farbe der zweiten Zeile
//#Eigenschaft indicator_color3 Olive
//#Eigenschaft indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // Deklaration von Arrays (für Indikatorpuffer)
//--------------------------------------------------------------------
int init() // Spezielle Funktion init()
{
//SetIndexBuffer(0,Buf_MA40); // Zuweisung eines Arrays an den Puffer
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// Linienstil
//SetIndexBuffer(1,Buf_MA20); // Array dem Puffer zuweisen
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Linienstil
SetIndexBuffer(0,Buf_ROC_MA40); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//Linienstil
SetIndexBuffer(1,Buf_ROC_MA20); // Zuweisung eines Arrays an den Puffer
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//Linienstil
return; // Beenden der speziellen Funktion init()
}
//--------------------------------------------------------------------
int start() // Spezielle Funktion start()
{
int i, // Balkenindex
Geschichte=3000,
counted_bars; // Anzahl der berechneten Balken
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Gezählte_Balken=IndicatorCounted(); // Anzahl der gezählten Balken
i=Bars;//Counted_bars-1; // Index des ersten nicht gezählten Balkens
while(i>=0) //Zyklus durch die nicht gezählten Balken
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//Berechnen des nächsten Balkenindex
}
//--------------------------------------------------------------------
return; // Beenden der Sonderfunktion start()
}

Es gibt zu viele Fehler.

Hauptsächlich Fehler bei der Arbeit mit Arrays.

Dateien:
proba.mq4  2 kb
 

Helfen Sie mir, dieses Problem zu lösen - es gibt ein Kauf-/Verkaufssignal, EA eröffnet ein Geschäft, setzt einen Gewinn und einen Stop. Und wenn das Geschäft auf Stop auf der gleichen Kerze geschlossen wird, dann öffnet der Berater das Geschäft wieder, und ich brauche es nicht zu öffnen, d.h. auf ein Signal ein Geschäft geöffnet wurde.

Wie kann man das tun?

 
KoDi >> :

Wie kann man das tun?

Die Schlusszeit des letzten Auftrags muss kleiner sein als die Eröffnungszeit des aktuellen Balkens.

Wenn dies nicht der Fall ist, eröffnen Sie den Handel nicht.

 
TheXpert >> :

Die Schlusszeit des letzten Auftrags muss kleiner sein als die Eröffnungszeit des aktuellen Balkens.

Wenn dies nicht der Fall ist, eröffnen wir kein Geschäft.

>> Ich bin verwirrt.

Nun, wie wird er den ERSTEN Handel eröffnen, wenn die Bedingung lautet, dass er nicht einsteigt, bis es mindestens einen Handel gibt?