Wie programmiert man? - Seite 120

 
denis68:
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,

Sie öffnen die Datei Accelerator.mq4 in MetaEditor (sie befindet sich in Ihrem Indikatorenordner) und setzen // vor diese beiden Zeilen, dann speichern Sie sie unter dem neuen Namen AcceleratorMod.mq4 und klicken auf compile.

Dateien:
 
hiachiever:
Nein, das ist nicht korrekt.

In der for-Schleife beginnen Sie bei 6 und dekrementieren auf 1. Das bedeutet, dass in der letzten Schleife, die die for-Schleife ausführt, die Prüfung "if (i == 1) qqeacross = True;" durchgeführt wird. 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

Also selbst wenn es heißt "if (i == 1) qqeacross = True;" und dann i=4 (wegen des Countdowns), wird qqeacross immer noch = True?

 

Danke hiachiever!

hiachiever:
Der Weg, es zu tun ist, erstellen Sie eine vriable auf globalen Umfang (dh vor init)

z.B.

int BarCount;

int init ()

Dann verwenden Sie 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.

Prost!

Hiachiever

Vielen Dank, hiachiever, es war sehr nett von Ihnen, mir zu helfen, obwohl ich Sie um einen weiteren kleinen Gefallen bitten möchte.

Ich glaube, ich habe verstanden, wie Ihr Code funktioniert, und ich bin sicher, dass ich ihn in meinen EA kopieren kann. Ich bin mir allerdings nicht sicher, wie ich die StopLossBars wieder auf ihre Standardwerte zurücksetzen kann. Dies ist der Code am Ende des EAs, um long oder short zu gehen:

void goLong()

{

int ticket = OrderSend(Symbol(),OP_BUY,GetLots(100),Ask,maxSlippage,0,0,"Long",MagicNumber,0,Green);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

}

void goShort()

{

int ticket = OrderSend(Symbol(),OP_SELL,GetLots(100),Bid,maxSlippage,0,0,"Short",MagicNumber,0,Red);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

}

double stopLoss(int ordertype)

Könnten Sie so freundlich sein, mir mit einem Code zum Zurücksetzen der StopLossBars zu helfen?

Nochmals vielen Dank.

 

matrixebiz ich habe das getan, jetzt kann ich mein ea nicht kompilieren, wenn ich die folgenden Zeilen zu meinem ea hinzugefügt habe

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 Lime

bool acsell = ac1==0 && ac22==0; // Lime wechselt zu Red

Ich erhalte 12 Fehler: AC-Variable nicht definiert :

und ich möchte mich bei Ihnen für die Hilfe bedanken

 

Ich nehme an, StopLossBars ist eine globale Variable, die über die Benutzereingaben richtig gesetzt wird?

Nun, was ich tun würde, ist etwas wie dieses.

Haben Sie die Benutzer-Eingabe-Variable etwas wie gStopLossBars dann in Ihrer Init-Funktion weisen Sie es auf Ihre lokale Variable wie...

StopLossBars = gStopLossBars;

Verwenden Sie dann einfach die gleiche Zuweisung in Ihren Kauf- und Verkaufsfunktionen, um StopLossBars zurückzusetzen.

Ist das sinnvoll?

Hoffentlich hilft das.

Lux

 

Ac+ao+psar

Hallo zusammen,

Kann jemand AC+AO+PSAR zu einem neuen Indikator mit Alarm/E-Mail kombinieren? Bitte PM mich. Dankeschön

 
luxinterior:
Ich nehme an, StopLossBars ist eine globale Variable, die über die Benutzereingaben gesetzt wird, richtig?

Nun, was ich tun würde, ist etwas wie dieses.

Haben Sie die Benutzer-Eingabe-Variable etwas wie gStopLossBars dann in Ihrer Init-Funktion weisen Sie es auf Ihre lokale Variable wie...

StopLossBars = gStopLossBars;

Verwenden Sie dann einfach die gleiche Zuweisung in Ihren Kauf- und Verkaufsfunktionen, um StopLossBars zurückzusetzen.

Ist das sinnvoll?

Ich hoffe, das hilft.

Lux

Das macht absolut Sinn. Vielen herzlichen Dank.

 

Wie kann ich erkennen, wann die neue Kerze beginnt?

Bitte jemand geben Sie mir einige Ratschläge, wie kann ich einen EA, dass eine ausstehende Bestellung, wenn die neue Bar Start (täglich TF) machen zu erstellen?

Danke

 
:: Hallo! Prüfen Sie den Code in diesem Indikator... (nur für die Eröffnungszeit, es ist kein EA)
tcl:
Kann mir jemand einen Rat geben, wie ich einen EA erstellen kann, der eine Pending-Order auslöst, wenn der neue Balken beginnt (Daily TF)?
 

Kann jemand verhindern, dass dies in einer Schleife wiederholt wird?

void BEM ()

{

int pips;

for (int k=0; k<OrdersTotal ();k++)

{

OrderSelect(k, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (Bid - OrderOpenPrice())/Point;

wenn ((pips >= BE) && (OrderStopLoss() < OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()+ 12*Point, OrderTakeProfit (), 0, LightBlue);

}

}

if(OrderType()==OP_SELL && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (OrderOpenPrice() - Ask)/Point;

wenn ((pips >= BE) && (OrderStopLoss() > OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()- 12*Point, OrderTakeProfit (), 0, Pink);

}

}

}

}

Grund der Beschwerde: