Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich versuche, herauszufinden, ob das falsch ist;
for (int i=qqea_alert_x_candles_ago; i>0; i--) {
// int i = 1;
qqea_up = iCustom(NULL,0, "QQE Alert v3",0,i);
qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i);
if (qqea_up < qqea_down) {
if (i == 1) qqeacross = True;
qqea_long = Wahr;
qqea_short = False;
} else if (qqea_up > qqea_down) {
wenn (i == 1) qqeacross = Wahr;
qqea_long = False;
qqea_short = True;
}
}
}
es sollte auf gültige Signale bis zu "qqea_alert_x_candles_ago" Bars zurück prüfen, aber dann hat es (i == 1), was i==1 nur einmal passiert ??
Ich versuche, herauszufinden, ob das falsch ist;
for (int i=qqea_alert_x_candles_ago; i>0; i--) {
// int i = 1;
qqea_up = iCustom(NULL,0, "QQE Alert v3",0,i);
qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i);
Print("qqea_up: ", qqea_up, "qqea_down: ", qqea_down);
if (qqea_up < qqea_down) {
if (i == 1) qqeacross = True;
qqea_long = Wahr;
qqea_short = False;
} else if (qqea_up > qqea_down) {
wenn (i == 1) qqeacross = Wahr;
qqea_long = False;
qqea_short = True;
}
}
}
es sollte auf gültige Signale bis zu "qqea_alert_x_candles_ago" Bars zurück prüfen, aber dann hat es (i == 1), die i==1 nur einmal passiert ??Auf den ersten Blick sieht Ihr Code gut aus, vorausgesetzt "qqea_alert_x_candles_ago" > 0.
Ihr Problem, wenn dies nicht funktioniert, hängt höchstwahrscheinlich mit iCustom zusammen.
Damit diese Funktion korrekt funktioniert, müssen Sie ein Eingabeelement für jedes Eingabeelement im eigentlichen Indikator übergeben. Wenn Sie dies nicht tun oder die falschen Datentypen übergeben, wird icustom nichts zurückgeben.
Ich habe eine Print-Anweisung in den obigen Code eingefügt. Verwenden Sie diese, um festzustellen, ob die von iCustom zurückgegebenen Werte tatsächlich etwas enthalten.
Zum Wohl,
Hiachiever
Hilfe bei Code zum Zählen von Balken benötigt
Mein EA hat eine Reihe von Optionen zur Berechnung des Stoploss einer offenen Position. Eine dieser Optionen ist die Verwendung des Tiefstwertes der letzten "x" Anzahl von Kursbalken.
Die derzeit im EA verwendete Codezeile zur Berechnung des Stoploss (SL) dieser Option für eine Long-Position lautet
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));
StopLossBars ist eine von außen eingegebene Variable.
Das Problem, das ich habe, ist, dass ich möchte, dass der Wert von StopLossBars mit jedem Bar, der seit der Eröffnung der Position gezählt wird, steigt, bis eine meiner anderen Bedingungen für StopLoss diese Bedingung übersteigt. Ich schätze eine Codezeile wie:
StopLossBars = StopLossBars + BarsCountedSincePositionOpened
würde den Trick tun. Leider ist meine Codierung ziemlich beschränkt auf Cut'n'Paste und ich weiß nicht, wie man BarsCountedSincePositionOpened berechnet oder codiert.
Könnte mir jemand sagen, wie man es bitte tun?
Auf den ersten Blick sieht Ihr Code in Ordnung aus, vorausgesetzt, dass "qqea_alert_x_candles_ago" > 0 ist.
Ihr Problem, wenn dies nicht funktioniert, ist mehr als wahrscheinlich im Zusammenhang mit iCustom.
Damit diese Funktion korrekt funktioniert, müssen Sie ein Eingabeelement für jedes Eingabeelement im eigentlichen Indikator übergeben. Wenn Sie dies nicht tun oder die falschen Datentypen übergeben, gibt icustom nichts zurück.
Ich habe eine Print-Anweisung in den obigen Code eingefügt. Verwenden Sie diese, um festzustellen, ob die von iCustom zurückgegebenen Werte tatsächlich etwas enthalten.
Zum Wohl,
HiachieverDer Code stammt aus einem anderen EA, aber ich dachte, wenn die Schleife bis "qqea_alert_x_candles_ago" > 1 geht, dann würde diese Anweisung "if (i == 1) qqeacross = True;" jetzt False sein, richtig? Wenn sie True bleiben sollte, bis i>qqea_alert_x_candles_ago.
Helfen
Hallo zusammen,
ich habe dieses Coding von einem Kollegen bekommen. Er sagte mir, dass dies ein sehr guter Indikator sein sollte, der SMA Auf- oder Abwärtseinträge signalisiert. Kann mir jemand helfen, einen Indikator mit dem folgenden Code zu erstellen.
/*[[
Name := SMA aufwärts und abwärts
Getrenntes Fenster := nein
Erste Farbe := Blau
Erster Zeichnungstyp:= Linie
Zweite Daten verwenden := Ja
Zweite Farbe := Rot
Zweiter Zeichnungstyp := Linie
]]*/
Eingaben : MAPeriod(10), Bandwide_UP(20),Bandwide_DOWN(20);
Variablen : shift(0), cnt(0), sum(0), loopbegin1(0), loopbegin2(0), first(True), prevbars(0);
Variablen : MA(0);
SetLoopCount(0);
// erste Überprüfungen
If MAPeriod < 1 Then Exit;
// Prüfen, ob zusätzliche Balken geladen werden oder ob der gesamte Kurs neu geladen wird
If Bars 1 Then first = True;
prevbars = Bars;
// loopbegin1 und loopbegin2 verhindern, dass die gezählten Balken den aktuellen ausschließen
If first Then Begin
loopbegin1 = Bars-MAPeriod-1;
If loopbegin1 < 0 Then Exit; // nicht genug Balken zum Zählen
loopbegin2 = Bars-MAPeriod-1;
If loopbegin2 < 0 Then Exit; // nicht genug Balken für die Zählung
first = False; // dieser Block soll nur einmal ausgewertet werden
Ende;
// Konvergenz-Divergenz
loopbegin1 = loopbegin1+1; // aktueller Balken soll ebenfalls neu gezählt werden
For shift = loopbegin1 Downto 0 Begin
MA = iMA(MAPeriod,MODE_SMA,shift);
SetIndexValue(shift,(MA+Bandwide_UP*point));
SetIndexValue2(shift,(MA-Bandwide_DOWN*Punkt));
loopbegin1 = loopbegin1-1; // verhindern, dass zu vorherigen Takten zurückgezählt wird
Ende;
Mit freundlichen Grüßen,
Rogerio
Hilfe mit Code benötigt
Ich brauche Hilfe bei folgendem Code, der im Moment nur eine Order öffnet, wenn AC über oder unter Null ist, und ich möchte, dass er öffnet, wenn Rot zu Grün wechselt und umgekehrt
double AC1 = iAC(NULL, 0, Aktuell + 0);
double AC2 = iAC(NULL, 0, Current + 1);
wenn ((AC1 < AC2)) Ordnung = SIGNAL_CLOSEBUY;
Der Code ist von einem anderen EA, aber ich dachte, wenn die Schleife bis "qqea_alert_x_candles_ago" > 1 geht, dann würde diese Anweisung "if (i == 1) qqeacross = True;" jetzt False sein, richtig? Wenn sie True bleiben sollte, bis i > qqea_alert_x_candles_ago.
Nein, das ist nicht korrekt.
In der for-Schleife beginnen Sie bei 6 und dekrementieren auf 1. Das bedeutet, dass die for-Schleife in der letzten Schleife die Prüfung"if (i == 1) qqeacross = True;" ausführt. Das Endergebnis ist, dass die Ausgabe wahr sein wird, wenn qqeacross aufgetreten ist.
Das einzige Problem, das dabei auftreten kann, ist, dass qqeacross in einer früheren Schleife auf true gesetzt wurde. Um dies zu umgehen, sollten Sie qqeacross = false; vor der for-Schleife setzen. Auf diese Weise können Sie sicherstellen, dass qqeacross = true durch die gerade abgeschlossene Schleife gesetzt wurde.
Zum Wohl,
hiachiever
Mein EA hat eine Reihe von Optionen, um den StopLoss einer offenen Position zu berechnen. Eine dieser Optionen ist die Verwendung des Tiefstwertes der letzten "x" Anzahl von Kursbalken.
Die derzeit im EA verwendete Codezeile zur Berechnung des StopLoss (SL) dieser Option für eine Long-Position lautet wie folgt:
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));
StopLossBars ist eine von außen eingegebene Variable.
Das Problem, das ich habe, ist, dass ich möchte, dass der Wert von StopLossBars mit jedem Bar, der seit der Eröffnung der Position gezählt wird, steigt, bis eine meiner anderen Bedingungen für StopLoss diese Bedingung übersteigt. Ich schätze eine Codezeile wie:
StopLossBars = StopLossBars + BarsCountedSincePositionOpened
würde den Trick tun. Leider ist meine Codierung ziemlich auf Cut'n'Paste beschränkt und ich weiß nicht, wie man BarsCountedSincePositionOpened berechnet oder codiert.
Kann mir jemand sagen, wie man das macht?Der Weg, es zu tun ist, erstellen Sie eine vriable auf globaler Ebene (dh vor init)
z.B.
int BarCount;
int init ()
Verwenden Sie dann in Ihrem Stop-Loss-Code das Folgende:
if (BarCount<Bars)
{
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));
StopLossBars++;
BarCount=Bars;
}
Dadurch wird StopLossBars bei jedem neuen Balken um 1 erhöht.
Die einzige weitere Ergänzung Ihres Codes wäre, "StopLossBars" auf seinen ursprünglichen Standardwert zurückzusetzen, wenn ein neuer Handel eröffnet wird.
Zum Wohl,
Hiachiever
Ich brauche Hilfe bei folgendem Code, der im Moment nur eine Order öffnet, wenn AC über oder unter Null ist, und ich möchte, dass er öffnet, wenn Rot zu Grün wechselt und umgekehrt
double AC1 = iAC(NULL, 0, Strom + 0);
double AC2 = iAC(NULL, 0, Strom + 1);
if ((AC1 < AC2)) Order = SIGNAL_CLOSEBUY;Ich habe die beiden anderen Puffer im Code des Indikators geöffnet oder angezeigt, indem ich diese beiden Zeilen entfernt habe;
// SetIndexLabel(1,NULL);
// SetIndexLabel(2,NULL);
Dann habe ich mit meinem modifizierten AC einen iCustom-Aufruf gemacht;
double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);
double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);
double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);
double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2);
bool acbuy = ac2==0 && ac11==0; // Rot wechselt zu Grün
bool acsell = ac1==0 && ac22==0; // Grün wechselt zu Rot
Ich hoffe das hilft
matrixebiz was meinen Sie mit rem'ing aus diesen beiden Zeilen; und wie mache ich es, ich kann; nicht in den Code der AC-Indikator habe ich versucht, zu bekommen,