Einzelnen Beitrag anzeigen
  #6 (permalink)  
Alt 16.03.19
RollsReus RollsReus ist offline
Neues Mitglied
 
Registriert seit: Mar 2019
Beiträge: 12
RollsReus befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AVT Beitrag anzeigen
das gibt Dir den Eröffnungskurs (iOpen) der 0. Kerze, also den gerade aktuellen Eröffnungskurs. Du brauchst aber
1. den Höchstkurs iHigh
2. der vorletzten Kerze, das ist die 2. Kerze
Kerzenzahlen werden standardmäßig von 0=aktuell zurückgezählt bis z.B. 3598=erste Kerze in Chart (gleichzeitig die erste Kerze, bei der Berechnungen anfangen können - klar, man kann nur mit dem rechnen, was man hat).

Also Langstab innerhalb der Range
Code:
   iHigh(NULL,0,2) < RangeHigh // Hoch 2.Kerze vorher kleiner Obergrenze
&& iLow(NULL,0,2)  > RangeLow  // Tief 2. Kerze vorher größer Untergrenze
Fehlt noch Innenstab-Bedingung (Hoch und Tief der 1. Kerze mit der vorherigen, also der 2. Kerze vergleichen), versuch's mal. Ein Tip: wenn Du im MT-Editor das Wort z.B. iOpen geschrieben hast, Cursor auf Wort, F1 drücken und Du kriegst automatisch die Hilfseite dazu.
AVT
Habe mich mit dem iOpen/iClose total vertan, danke. War wohl doch schon zu spät gestern Abend.

Habe dies nun wie von Dir vorgeschlagen auf iHigh und iLow geändert.
Trotz zahlreichen rumprobieren eröffnet der EA bei mir immer noch bei dem ersten Durchbruch bzw. im aktuellen Code garnicht mehr.

Eine Info noch bevor ich den Code zeige: Ich hatte mich mit dem Innenstab unklar ausgedrückt. Ich wollte damit ausdrücken, dass ich nach dem ersten Ausbruch lediglich einen Bar sehen will der das Hoch unter dem RangeHigh hat und das Tief über dem RangeLow. Also nicht die klassiche Definition einen Innenstabs. Mehr ein "RangeInnenstab" (so habe ich ihn auch genannt).


Zitat:
//Longtrade

if (Ask>(RangeHigh+Point*20)) //1. Ausbruch über dem RangeHigh
Erstausbruch = true;
RangeInnenstab = false;

if(Erstausbruch == true && RangeInnenstab == false && iHigh(Symbol(),NULL,0)<RangeHigh && iLow(Symbol(),NULL,0)>RangeLow) //danach Innenstab innerhalb der Range
RangeInnenstab = true;

if (RangeInnenstab == true && Ask>(RangeHigh+Point*20) && TradeAllowed == true && RangeOk==true && GetTotalTrades()==0) //2. Ausbruch über dem RangeHigh


{

bool ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-(SL*Point),Ask+(TP*Point),NULL,Magic,0,Blue);
TradeAllowed=false;
}
//Shorttrade
if (Bid<(RangeLow+Point*-20) && TradeAllowed == true && RangeOk==true && GetTotalTrades()==0)
{
bool ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+( SL*Point),Bid-(TP*Point),NULL,Magic,0,Red);
TradeAllowed=false;
}

Hast Du noch einen Hinweis, warum es nicht klappt? Bin nach etlichen Versuchen mit meinem Latein nah am Ende.

Kurze Erläuterung damit es besser verständlich ist:

a)Nach 1. Ausbruch ist RangeInnenstab = false, damit er noch keine Order setzt.

b) Nach dem Bilden des RangeInnenstabs ist dieser = true

c) Und erst wenn RangeInnenstab = true ist, dann soll beim 2. Ausbruch die Order gesetzt werden.

Danke orab für Deine bzw. je nach User-Antwort Eure Hilfe.