Die Bedingungen sollten noch verfeinert werden. Zum Beispiel: wenn beide dasselbe signalisieren, ist das sehr häufig. Also, wann genau sollten sie das tun. Beim ersten Auftreten des Ereignisses? Bei jedem Auftreten des Ereignisses? Wenn Sie außerdem bei jedem Wechsel eines der beiden Signale aussteigen, werden die Ausstiege sehr häufig sein.
Danke für die Antwort! Ja, das ist vielleicht keine gute Strategie. Es ist nur so, dass wenn ich das als Vorlage bekomme, kann ich wahrscheinlich später selbst einige Änderungen vornehmen. Was ich möchte, ist die Möglichkeit, zwei Indikatoren zu kombinieren (und die Verwendung ihrer Puffer).
Sagen wir, die Strategie sollte stattdessen sein: Kaufen, wenn beide Indikatoren anzeigen. Und verkaufen, wenn beide Indikatoren anzeigen. Dies sollte nach einem Indikatorwechsel und einem geschlossenen Balken geschehen. Es sollte jedes Mal geschehen, wenn dies der Fall ist.
ich habe ein Problem mit dem beigefügten Indikator:
Wenn der Indikator während der EA-Ausführung angewendet wird (der gleitende Standard-Durchschnitt in MT4), sind die Werte sehr unterschiedlich zu den Werten, die am Ende der EA-Ausführung mit dem gleichen Indikator angezeigt werden.
Könnten Sie bitte erklären, warum und wenn machbar, die indi korrigieren?
Mladen hat gerade meine Anpassung an den von Ihnen geänderten Indikator abgeschlossen. Was ist falsch in diesem Code? Es wird nichts angezeigt...Keine Fehler beim Kompilieren.
#property version"1.00"#property strict#property indicator_chart_window#property indicator_buffers4#property indicator_color1 Gold
#property indicator_color2 DodgerBlue
#property indicator_color3 LimeGreen
#property indicator_color4 Crimson
#property indicator_width1 2#property indicator_width2 2#property indicator_width3 2#property indicator_width4 2externstring NOTE1 = "SELECT PARAMETERS OF THE INDICATOR"; //SPAN MA CROSS PARAMSexternint SpanPeriod = 1; // Period of Spanexternint SpanShift = -26; // Shift of SpanexternENUM_MA_METHOD SpanMode = 1; // Mode of SpanexternENUM_APPLIED_PRICE SpanPrice = 0; // Applied price of Spanexternint MaPeriod = 55; // Period of Moving averageexternint MaShift = 0; // Shift of Moving averageexternENUM_MA_METHOD MaMode = 1; // Mode of Moving averageexternENUM_APPLIED_PRICE MaPrice = 0; // Applied price of Moving averageexternstring NOTE2 = "SELECT COLORS/STYLES OF THE INDICATOR"; //SPAN MA CROSS COLORS/STYLESexterncolor SpanClr = Gold; // Span colorexternint SpanWdt = 2; // Span widthexternENUM_LINE_STYLE SpanStl = 0; // Span line styleexterncolor MaClr = DodgerBlue; // Moving average colorexternint MaWdt = 2; // Moving average widthexternENUM_LINE_STYLE MaStl = 0; // Moving average line styleexternstring NOTE3 = "SELECT PARAMETERS OF THE SIGNAL ARROWS"; //SPAN MA CROSS PARAMETERS OF THE SIGNAL ARROWSexternbool DrawArrows = true; // Draw signal arrows?externbool DrawMaLines = true; // Draw lines?externcolor UpArrowClr = LimeGreen; // Up arrow colorexternint UpArrowWdt = 2; // Up arrow widthexterncolor DnArrowClr = Crimson; // Down arrow colorexternint DnArrowWdt = 2; // Down arrow widthexternint ArrowsDistance = 10; // Arrows distance from candleexternstring NOTE4 = "SELECT PARAMETERS OF THE ALERT"; //SPAN MA CROSS PARAMETERS OF THE ALERTexternbool AlertsOn = true; // Active alert?externbool AlertsOnCurrent = true; // Alert on current unclosed barexternbool AlertsMessage = true; // Alert messageexternbool AlertsSound = true; // Alert soundexternbool AlertsEmail = false; // Alert e-mailexternstring SoundFile = "alert2.wav"; // Filename of sound alertstring IndicatorFileName;
int WhichBar;
double Gap;
double SpanBuffer[]; // Buffer of the Spandouble MaBuffer[]; // Buffer of the Moving averagedouble CrossUpBuffer[]; // Up arrow bufferdouble CrossDnBuffer[]; // Down arrow bufferdouble TrendBuffer[]; // Span/Ma cross bufferint init()
{
IndicatorFileName = WindowExpertName();
IndicatorBuffers(5);
SetIndexBuffer(0, SpanBuffer);
SetIndexBuffer(1, MaBuffer);
SetIndexBuffer(2, CrossUpBuffer);
SetIndexBuffer(3, CrossDnBuffer);
SetIndexBuffer(4, TrendBuffer);
if (DrawMaLines) {
SetIndexStyle (0, DRAW_LINE, SpanStl, SpanWdt, SpanClr);
SetIndexStyle (1, DRAW_LINE, MaStl, MaWdt, MaClr);}
else {
SetIndexStyle(0, DRAW_NONE);
SetIndexStyle(1, DRAW_NONE);}
if (DrawArrows) {
SetIndexStyle (2, DRAW_ARROW, 0, UpArrowWdt, UpArrowClr); SetIndexArrow(0, 233);
SetIndexStyle (3, DRAW_ARROW, 0, DnArrowWdt, DnArrowClr); SetIndexArrow(0, 234);}
else {
SetIndexStyle(2, DRAW_NONE);
SetIndexStyle(3, DRAW_NONE);}
return(0);}
int deinit() { return(0); }
int start() {
int counted_bars = IndicatorCounted();
int i, limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-counted_bars, Bars-1);
for(i=limit; i>=0; i--){
SpanBuffer[i] = iMA(NULL, 0, SpanPeriod, SpanShift, SpanMode, SpanPrice, i);
MaBuffer[i] = iMA(NULL, 0, MaPeriod, MaShift, MaMode, MaPrice, i);
Gap = iATR(NULL,0,20,i);
TrendBuffer[i] = TrendBuffer[i+1];
if (SpanBuffer[i] > MaBuffer[i]) TrendBuffer[i] = 1;
if (SpanBuffer[i] < MaBuffer[i]) TrendBuffer[i] =-1;
CrossUpBuffer[i] = EMPTY_VALUE;
CrossDnBuffer[i] = EMPTY_VALUE;
if (TrendBuffer[i]!= TrendBuffer[i+1])
if (TrendBuffer[i] == 1)
CrossUpBuffer[i] = Low[i] - ArrowsDistance * Gap;
else CrossDnBuffer[i] = High[i] + ArrowsDistance * Gap;
}
if (AlertsOn)
{
if (AlertsOnCurrent)
WhichBar = 0;
else WhichBar = 1;
if (TrendBuffer[WhichBar] != TrendBuffer[WhichBar+1])
if (TrendBuffer[WhichBar] == 1)
doAlert("uptrend");
else doAlert("downtrend");
}
return(0);
}
// CUSTOM FUNCTIONS -------------------------void doAlert(string doWhat)
{
staticstring previousAlert="nothing";
staticdatetime previousTime;
string message;
if (previousAlert != doWhat || previousTime != Time[0]) {
previousAlert = doWhat;
previousTime = Time[0];
message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," Span ma cross ", doWhat);
if (AlertsMessage) Alert(message);
if (AlertsEmail) SendMail(StringConcatenate(Symbol()," Span ma cross "), message);
if (AlertsSound) PlaySound(SoundFile);
}
}
Mladen hat gerade meine Anpassung an den von Ihnen geänderten Indikator abgeschlossen. Was ist falsch in diesem Code? Es wird nichts angezeigt...Keine Fehler beim Kompilieren.
thefxpros
Versuchen Sie es so
#property version"1.00"#property strict#property indicator_chart_window#property indicator_buffers4#property indicator_color1 Gold
#property indicator_color2 DodgerBlue
#property indicator_color3 LimeGreen
#property indicator_color4 Crimson
#property indicator_width1 2#property indicator_width2 2#property indicator_width3 2#property indicator_width4 2externstring NOTE1 = "SELECT PARAMETERS OF THE INDICATOR"; //SPAN MA CROSS PARAMSexternint SpanPeriod = 1; // Period of Spanexternint SpanShift = -26; // Shift of SpanexternENUM_MA_METHOD SpanMode = 1; // Mode of SpanexternENUM_APPLIED_PRICE SpanPrice = 0; // Applied price of Spanexternint MaPeriod = 55; // Period of Moving averageexternint MaShift = 0; // Shift of Moving averageexternENUM_MA_METHOD MaMode = 1; // Mode of Moving averageexternENUM_APPLIED_PRICE MaPrice = 0; // Applied price of Moving averageexternstring NOTE2 = "SELECT COLORS/STYLES OF THE INDICATOR"; //SPAN MA CROSS COLORS/STYLESexterncolor SpanClr = Gold; // Span colorexternint SpanWdt = 2; // Span widthexternENUM_LINE_STYLE SpanStl = 0; // Span line styleexterncolor MaClr = DodgerBlue; // Moving average colorexternint MaWdt = 2; // Moving average widthexternENUM_LINE_STYLE MaStl = 0; // Moving average line styleexternstring NOTE3 = "SELECT PARAMETERS OF THE SIGNAL ARROWS"; //SPAN MA CROSS PARAMETERS OF THE SIGNAL ARROWSexternbool DrawArrows = true; // Draw signal arrows?externbool DrawMaLines = true; // Draw lines?externcolor UpArrowClr = LimeGreen; // Up arrow colorexternint UpArrowWdt = 2; // Up arrow widthexterncolor DnArrowClr = Crimson; // Down arrow colorexternint DnArrowWdt = 2; // Down arrow widthexternint ArrowsDistance = 10; // Arrows distance from candleexternstring NOTE4 = "SELECT PARAMETERS OF THE ALERT"; //SPAN MA CROSS PARAMETERS OF THE ALERTexternbool AlertsOn = true; // Active alert?externbool AlertsOnCurrent = true; // Alert on current unclosed barexternbool AlertsMessage = true; // Alert messageexternbool AlertsSound = true; // Alert soundexternbool AlertsEmail = false; // Alert e-mailexternstring SoundFile = "alert2.wav"; // Filename of sound alertstring IndicatorFileName;
int WhichBar;
double Gap;
double SpanBuffer[]; // Buffer of the Spandouble MaBuffer[]; // Buffer of the Moving averagedouble CrossUpBuffer[]; // Up arrow bufferdouble CrossDnBuffer[]; // Down arrow bufferdouble TrendBuffer[]; // Span/Ma cross bufferint init()
{
IndicatorFileName = WindowExpertName();
IndicatorBuffers(5);
SetIndexBuffer(0, SpanBuffer);
SetIndexBuffer(1, MaBuffer);
SetIndexBuffer(2, CrossUpBuffer);
SetIndexBuffer(3, CrossDnBuffer);
SetIndexBuffer(4, TrendBuffer);
if (DrawMaLines) {
SetIndexStyle (0, DRAW_LINE, SpanStl, SpanWdt, SpanClr);
SetIndexStyle (1, DRAW_LINE, MaStl, MaWdt, MaClr);}
else {
SetIndexStyle(0, DRAW_NONE);
SetIndexStyle(1, DRAW_NONE);}
if (DrawArrows) {
SetIndexStyle (2, DRAW_ARROW, 0, UpArrowWdt, UpArrowClr); SetIndexArrow(0, 233);
SetIndexStyle (3, DRAW_ARROW, 0, DnArrowWdt, DnArrowClr); SetIndexArrow(0, 234);}
else {
SetIndexStyle(2, DRAW_NONE);
SetIndexStyle(3, DRAW_NONE);}
return(0);}
int deinit() { return(0); }
int start() {
int counted_bars = IndicatorCounted();
int i, limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-counted_bars, Bars-1);
for(i=limit; i>=0; i--){
SpanBuffer[i] = iMA(NULL, 0, SpanPeriod, SpanShift, SpanMode, SpanPrice, i);
MaBuffer[i] = iMA(NULL, 0, MaPeriod, MaShift, MaMode, MaPrice, i);
Gap = iATR(NULL,0,20,i);
if (i<Bars-1) TrendBuffer[i] = TrendBuffer[i+1];
if (SpanBuffer[i] > MaBuffer[i]) TrendBuffer[i] = 1;
if (SpanBuffer[i] < MaBuffer[i]) TrendBuffer[i] =-1;
CrossUpBuffer[i] = EMPTY_VALUE;
CrossDnBuffer[i] = EMPTY_VALUE;
if (i<Bars-1 && TrendBuffer[i]!= TrendBuffer[i+1])
if (TrendBuffer[i] == 1)
CrossUpBuffer[i] = Low[i] - ArrowsDistance * Gap;
else CrossDnBuffer[i] = High[i] + ArrowsDistance * Gap;
}
if (AlertsOn)
{
if (AlertsOnCurrent)
WhichBar = 0;
else WhichBar = 1;
if (TrendBuffer[WhichBar] != TrendBuffer[WhichBar+1])
if (TrendBuffer[WhichBar] == 1)
doAlert("uptrend");
else doAlert("downtrend");
}
return(0);
}
// CUSTOM FUNCTIONS -------------------------void doAlert(string doWhat)
{
staticstring previousAlert="nothing";
staticdatetime previousTime;
string message;
if (previousAlert != doWhat || previousTime != Time[0]) {
previousAlert = doWhat;
previousTime = Time[0];
message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," Span ma cross ", doWhat);
if (AlertsMessage) Alert(message);
if (AlertsEmail) SendMail(StringConcatenate(Symbol()," Span ma cross "), message);
if (AlertsSound) PlaySound(SoundFile);
}
}
Ändern Sie die Zeilen 74 und 75 von sigma wie folgt ab:
hierzu :
Und es sollte funktionieren
Oder entfernen Sie die strict-Anweisung komplett (da der Indikator komplett neu geschrieben werden muss, wenn er mit dem "strict" verwendet werden soll)
Liebe mladen,
Ich habe beide Vorschläge ohne Erfolg ausprobiert, aber ich habe festgestellt, dass die Indi nicht aktualisiert wird, wenn sie in einem EA wie im folgenden Bild läuft.
Ich habe es mit Mladen versucht und es scheint zu funktionieren, aber im Strategietester aktualisiert es sich nicht und es erscheint kein Alert, wenn der Markt geöffnet wird, werde ich es im echten Markt versuchen.
Simon
Die Bedingungen sollten noch verfeinert werden. Zum Beispiel: wenn beide dasselbe signalisieren, ist das sehr häufig. Also, wann genau sollten sie das tun. Beim ersten Auftreten des Ereignisses? Bei jedem Auftreten des Ereignisses? Wenn Sie außerdem bei jedem Wechsel eines der beiden Signale aussteigen, werden die Ausstiege sehr häufig sein.
Danke für die Antwort! Ja, das ist vielleicht keine gute Strategie. Es ist nur so, dass wenn ich das als Vorlage bekomme, kann ich wahrscheinlich später selbst einige Änderungen vornehmen. Was ich möchte, ist die Möglichkeit, zwei Indikatoren zu kombinieren (und die Verwendung ihrer Puffer).
Sagen wir, die Strategie sollte stattdessen sein: Kaufen, wenn beide Indikatoren anzeigen. Und verkaufen, wenn beide Indikatoren anzeigen. Dies sollte nach einem Indikatorwechsel und einem geschlossenen Balken geschehen. Es sollte jedes Mal geschehen, wenn dies der Fall ist.
Alles Gute!
Liebe mladen,
ich habe ein Problem mit dem beigefügten Indikator:
Wenn der Indikator während der EA-Ausführung angewendet wird (der gleitende Standard-Durchschnitt in MT4), sind die Werte sehr unterschiedlich zu den Werten, die am Ende der EA-Ausführung mit dem gleichen Indikator angezeigt werden.
Könnten Sie bitte erklären, warum und wenn machbar, die indi korrigieren?
Herr mladen ,
Ich bin dabei, einige Änderungen für die ma Band gefüllt, um ma Kanal, aber ich habe Problem mit dem Puffer.
Ist das eine Möglichkeit, den Kanal hinter dem Histogramm zu verstecken oder für die leere zwischen dem Kanal zu machen?
Ich versuche es auszublenden, aber ich kann es nur auf einer Seite machen, ist es notwendig, einen weiteren Puffer hinzuzufügen?
Und ein weiteres Problem ist in Zeile 44, ich kann sie nicht extern oder löschen.
Es kommt immer eine Fehlermeldung heraus.
Bitte geben Sie mir einen Rat, danke.
Steven .
Herr mladen ,
Ich bin dabei, einige Änderungen für die ma Band gefüllt, um ma Kanal, aber ich habe Problem mit dem Puffer.
Ist das eine Möglichkeit, den Kanal hinter dem Histogramm zu verstecken oder für die leere zwischen dem Kanal zu machen?
Ich versuche es auszublenden, aber ich kann es nur auf einer Seite machen, ist es notwendig, einen weiteren Puffer hinzuzufügen?
Und ein weiteres Problem ist in Zeile 44, ich kann sie nicht extern oder löschen.
Es kommt immer eine Fehlermeldung heraus.
Bitte geben Sie mir einen Rat, danke.
Steven .
Ich bin mir nicht sicher, ob es das ist, was Sie zu tun versuchen, aber probieren Sie es aus.
Ich bin mir nicht sicher, ob es das ist, was du versuchst, aber probiere es aus
JA, genau das, was ich will :D
Aber können Sie mir helfen, den Code in Zeile 44 "AlertOnClosedCandle" zu überprüfen, warum es nicht löschen oder extern bool ?
Dies ist mein erstes Mal mit dieser Art von Problem.
Wie auch immer, ich habe einige Dinge über den Puffer gelernt.
Vielen Dank.
Mladen hat gerade meine Anpassung an den von Ihnen geänderten Indikator abgeschlossen. Was ist falsch in diesem Code? Es wird nichts angezeigt...Keine Fehler beim Kompilieren.
Mladen hat gerade meine Anpassung an den von Ihnen geänderten Indikator abgeschlossen. Was ist falsch in diesem Code? Es wird nichts angezeigt...Keine Fehler beim Kompilieren.
thefxpros
Versuchen Sie es so
Berichtigung :
Ändern Sie die Zeilen 74 und 75 von sigma wie folgt ab:
hierzu :
Und es sollte funktionieren
Oder entfernen Sie die strict-Anweisung komplett (da der Indikator komplett neu geschrieben werden muss, wenn er mit dem "strict" verwendet werden soll)
Liebe mladen,
Ich habe beide Vorschläge ohne Erfolg ausprobiert, aber ich habe festgestellt, dass die Indi nicht aktualisiert wird, wenn sie in einem EA wie im folgenden Bild läuft.
Sollte es möglich sein, das zu beheben ?
:
thefxpros
Versuchen Sie es so
Hallo Herr Mladen,
Ich dachte daran, einen Kommentar hinzuzufügen, wenn der Preis vom Trend abgewichen ist und "wait for buy" & "wait for sell" hat.
Das Hinzufügen der neuen Zeile auf den Kauf ist kein Problem, aber wenn es auf den Verkauf hinzufügen kann es nicht machen, es zu arbeiten.
Was sollte ich ändern müssen?