|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Support-Resistance-Trade
Frohe Ostern an alle,
und vorab schon mal vielen Dank!!!! Wer hat eine Idee oder kann mir helfen? Ich trade gerne und mit guten Ergebnissen an Unterstützungs- und Widerstandslinien - da ich alles per Hand eingebe bin ich desöfteren zu langsam. Deshalb versuche ich folgendes: Beispiel DAX: Wir haben z.B. bei 12120 eine Pivot-, Fibo- oder Unterstützungslinie lokalisiert. Ich setze 8 Punkte über der 12120 - also bei 12128 eine horizontale Linie für eine Longorder und 8 Punkte unter 12120 - also bei 12112 eine Linie für eine Shortorder - jeweils mit einem TP von 15 Punkten. Beispiel: Der Kurs durchbricht die obere Linie bei 12128 und dann beginnt folgender Ablauf Trade 1 wird als Long ausgelöst: Wird TP von 15 Punkten erreicht - ok - dreht Kurs jedoch ins Minus, wird an der unteren Linie bei 12112 - also bei -16 Punkten Trade 2 als Short ausgelöst und die Positionsgröße verdreifacht. Hatten wir beim ersten Trade 0,01 Lot so sind es jetzt 0,03 Lot. Wird TP 15 nicht erreicht und Kurs dreht ins Plus wird ab 12128 wieder eine Longorder aktiviert Das wäre dann Trade 3 Long und die Lotgröße würde von 0,03 auf 0,06 verdoppelt - läuft dieser in den TP ist alles gut, aber dreht der Kurs nochmals gehts in Trade 4 Short: Lotgröße verdoppeln auf 0,12 - läuft Kurs in TP endet der Trade immer noch mit einem kleinen Plus - sollte der Kurs jedoch nochmals drehen wird gehedget. Aber - mein Problem sind die Abläufe: Wenn als erstes ein Long ausgelöst wird dann ist der Ablauf wie in Kasten 1 - dann darf aber nicht der Kasten " aktiv werden - und klar, wird Kasten 2 mit dem Short als erstes ausgelöst, darf Kasten1 nicht aktiv werden Kasten 1 Kasten 2 1) Long 1) Short 2) Short 2) Long 3) Long 3) Short 4) Short 4) Long //+------------------------------------------------------------------+| //| TTR_Martingale | //| trade | //+------------------------------------------------------------------+ #property copyright "TTR_Martingale" #property link "trade" #property version "1.00" #property strict //setze Lotgroesse double LotGroesse=0.01; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // statische Variable fuer letzten Kontostand static double lastBalance; // finde den hoechsten Preis double HighestPrice = High[iHighest(NULL,0,MODE_HIGH,30,0)]; // Erstelle ein Linien-Objekt ObereLinie ObjectCreate("ObereLinie",OBJ_HLINE,0,0,HighestPri ce); // Setze die Objektfarbe ObjectSetInteger(0,"ObereLinie",OBJPROP_COLOR,clrG old); // Setze Linienbreite ObjectSetInteger(0,"ObereLinie",OBJPROP_WIDTH, 3); // finde den niedrigsten Preis double LowestPrice = Low[iLowest(NULL,0,MODE_LOW,30,0)]; // Erstelle ein Linien-Objekt UntereLinie ObjectCreate("UntereLinie",OBJ_HLINE,0,0,LowestPri ce); // Setze die Objektfarbe ObjectSetInteger(0,"UntereLinie",OBJPROP_COLOR,clr Gold); // Setze Linienbreite ObjectSetInteger(0,"UntereLinie",OBJPROP_WIDTH,3); // Wenn aktueller Preis groesser oder gleich Hoechstpreis if (Close[0] >= HighestPrice) // Wenn keine offenen Orders existieren if (OrdersTotal()==0) { // Kaufe LotGroesse zum Askpreis, 3 Punkte Toleranz,Stop 300 Punkte unter Bid, Take Profit 150 Punkte ueber Ask int buyticket = OrderSend(Symbol(),OP_BUY,LotGroesse,Ask,3,(Bid-300*_Point),(Ask+150*_Point),NULL,NULL,0,Green); } // Wenn aktueller Preis kleiner oder gleich Niedrigstpreis if (Close[0] <= LowestPrice) // Wenn keine offenen Orders existieren if (OrdersTotal()==0) { // Verkaufe LotGroesse zum Bidpreis, 3 Punkte Toleranz,Stop 300 Punkte ueber Ask, Take Profit 150 Punkte unter Bid int sellticket = OrderSend(Symbol(),OP_SELL,LotGroesse,Bid,3,(Ask+3 00*_Point),(Bid-150*_Point),NULL,NULL,0,Green); } // Wenn Kontostand seit dem letzten Mal gesunken ist, erhoehe LotGroesse if ((lastBalance!=0)&&(lastBalance>AccountBalance())) LotGroesse=LotGroesse*2; // Wenn Kontostand seit dem letzten Mal gestiegen ist, verringere LotGroesse if ((lastBalance!=0)&&(lastBalance<AccountBalance())) LotGroesse=0.01; // Chart Ausgabe Comment ("Account Balance: ",AccountBalance(),"\n","LastBalance: ",lastBalance,"\n","LotGroesse: ",LotGroesse); // Speichere aktuelles Bruttoguthaben als letztes Bruttoguthaben lastBalance=AccountBalance(); // Container 1 - wenn erster Trade LONG ist //Kaufe LotGroesse zum Askpreis, 3 Punkte Toleranz,Stop 250 Punkte unter Bid, Take Profit 100 Punkte ueber Ask int buyticket1 = OrderSend(Symbol(),OP_BUY,0.01,Ask,3,(Bid-250*_Point),(Ask+100*_Point),NULL,NULL,0,Green); // zweiter Trade läuft ins Short int sellticket1 = OrderSend(Symbol(),OP_SELL,0.03,Bid,3,(Ask+250*_Po int),(Bid-100*_Point),NULL,NULL,0,Green); // dritter Trade lüuft zurück ins Long int buyticket2 = OrderSend(Symbol(),OP_BUY,0.06,Ask,3,(Bid-250*_Point),(Ask+100*_Point),NULL,NULL,0,Green); //vierter Trade int sellticket2 = OrderSend(Symbol(),OP_SELL,0.12,Bid,3,(Ask+250*_Po int),(Bid-100*_Point),NULL,NULL,0,Green); // Container 2 - wenn erster Trade Short ist //Kaufe LotGroesse zum Askpreis, 3 Punkte Toleranz,Stop 250 Punkte unter Bid, Take Profit 100 Punkte ueber Ask // erster Short Trade int sellticket3 = OrderSend(Symbol(),OP_SELL,0.01,Bid,3,(Ask+250*_Po int),(Bid-100*_Point),NULL,NULL,0,Green); // zweiter Trade Long int buyticket4 = OrderSend(Symbol(),OP_BUY,0.03,Ask,3,(Bid-250*_Point),(Ask+100*_Point),NULL,NULL,0,Green); // dritter Trade Short int sellticket4 = OrderSend(Symbol(),OP_SELL,0.06,Bid,3,(Ask+250*_Po int),(Bid-100*_Point),NULL,NULL,0,Green); // vierter wieder Long int buyticket5 = OrderSend(Symbol(),OP_BUY,0.12,Ask,3,(Bid-250*_Point),(Ask+100*_Point),NULL,NULL,0,Green); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ |
Lesezeichen |
|
|