Autor Thema: MQL Hilfe  (Gelesen 1051 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

  • Tastaturvirtuose
  • **
    • Beiträge: 92
    • Karma: +0/-0
    • Mitglied seit:
      25 Aug 2008

  • Stop
MQL Hilfe
« am: Februar 10, 2009, 15:56:33 pm »
Hi Leute,

bräuchte mal eure Hilfe da ich nicht weiss was ich hier falsch gemacht habe:

Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol

        {
         if(OrderType()==OP_BUY)   // long position is opened
             {
             (OrderTicket()) OP_BUY<=0)
             {  
             OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position  
            return(0); // exit 
             }
            // check for trailing stop
            if(TrailingStop>0) 
              {                
               if(Bid-OrderOpenPrice()>TrailingStop1* iATR(NULL,PERIOD_D1,ATR_Period,1))
                 {
                  if(OrderStopLoss()<Bid-TrailingStop1* iATR(NULL,PERIOD_D1,ATR_Period,1))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop1* iATR(NULL,PERIOD_D1,ATR_Period,1),OrderTakeProfit(),0,Green);
                     return(0);


Kurze erläuterung:

Also ich öffne je nach Signal einen (OP_BUY) oder eine (OP_SELL) Order.

Wird eine OP_BUY geöffnet folgt nachdem die Order 1R für mich gelaufen ist ein Einstieg durch einen OP_BUYSTOP.

SO das Problem nun. Ich möchte dass meine OP_BUYSTOP gelöscht wird (nicht geschlossen wird) sobald die OP_BUY geschlossen wird, also ausgestoppt.

Das Problem dürfte das hier sein:               if(OrderTicket()) OP_BUY<=0

Danke für eure Hilfe.



  • Gelegenheitsschreiber
  • *
    • Beiträge: 37
    • Karma: +0/-0
    • Mitglied seit:
      23 Oct 2008

  • Stop
Re: MQL Hilfe
« Antwort #1 am: Februar 10, 2009, 17:33:39 pm »
Hallo,

also ich versuchs mal,
auch wenn ich mir garnicht vorstellen kann, das es sich kompilieren laesst, was du da hast.

die von dir genannte
if(OrderTicket()) OP_BUY<=0)

steht da nicht da.

Die Zeile halte ich fuer... naja  :-X

Du willst eine OP_BUYSTOPP schliessen, gehst aber nur beim Ordertyp buy dort hin...

Da ich es wohl nur als ganzes verstehen wuerde, ein Gegenvorschlag
falls noch nicht eroeffnet wird die Buystopp geloescht ansonsten geschlossen.

Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic) {
               Print("Cancel or Close Orders ", OrderSymbol(), " open at ", OrderOpenPrice(), " profit ", OrderProfit());
               if (OrderProfit() == 0)
                  OrderDelete(OrderTicket());
               else
                  if (OrderType() == OP_BUY)
                     OrderClose(OrderTicket(),OrderLots(),Bid,50,Coral);
                  if (OrderType() == OP_SELL)
                     OrderClose(OrderTicket(),OrderLots(),Ask,50,Coral);
            }
         }

  • Tastaturvirtuose
  • **
    • Beiträge: 92
    • Karma: +0/-0
    • Mitglied seit:
      25 Aug 2008

  • Stop
Re: MQL Hilfe
« Antwort #2 am: Februar 12, 2009, 15:28:59 pm »
Hallo ich nochmal,

also ich muss dazu sagen dass ich erst am Anfang bin was MQL angeht. Deshalb auch die blöden fragen  :-X

Und jetzt noch eine:

Hat vill. einer von euch nen Beispiel EA / Tamplate mit MM und RM.

und vill. auch mit der funktion zu Pyramidisieren?? So was bräuchte ich. Kann mir da einer helfen.

Ich kann mitlerweile zwar ne Stopp order öffnen wenn ich 1R im Plus bin aber kann die nicht zeitlich begrenzen oder löschen oder....

Danke für eure Hilfe.


Achja und ich lade alle rechtherzlich ein in diesem Thread Fragen zu stellen was MQL angeht.

  • Gelegenheitsschreiber
  • *
    • Beiträge: 37
    • Karma: +0/-0
    • Mitglied seit:
      23 Oct 2008

  • Stop
Re: MQL Hilfe
« Antwort #3 am: Februar 13, 2009, 22:36:21 pm »
Hallo Howardcool,

vielleicht kannst du mal deine Lösung für den 1R Stop präsentieren.
Ich bin da noch ziemlich unbedarft.

Hier mal ein Auszug, wie ich einen Timestop setze

Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
//-- use TimeStop
   if (useTimeStop && Hour() >= time2Stop) {
      for (i = 0; i < OrdersTotal(); i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic) {
               Print("Cancel or Close Orders ", OrderSymbol(), " open at ", OrderOpenPrice(), " profit ", OrderProfit());
               if (OrderProfit() == 0)
                  OrderDelete(OrderTicket());
               else
                  if (OrderType() == OP_BUY)
                     OrderClose(OrderTicket(),OrderLots(),Bid,50,Coral);
                  if (OrderType() == OP_SELL)
                     OrderClose(OrderTicket(),OrderLots(),Ask,50,Coral);
            }
         }
      }
   }

Bisher weiss ich nicht, wie ich eine getriggerte Buystopp oder Buylimit bzw. Sellstopp/Selllimit erkennen kann
ausser über den OrderProfit der dann 0 ist.

Wenn der Timestop für Wochentag sein soll, dann natürlich noch
&& DayOfWeek == 0 - 6  wobei 0 = Sonntag  5 = Freitag

grüsse
LiF

  • Tastaturvirtuose
  • **
    • Beiträge: 92
    • Karma: +0/-0
    • Mitglied seit:
      25 Aug 2008

  • Stop
Re: MQL Hilfe
« Antwort #4 am: Februar 14, 2009, 09:59:25 am »
Hi, und danke schon mal:

Anbei mal der MACD Sample von mir umgebastelt damit nach 1R ein Stopp gesetzt wird. Bitte kontrolliere ob das mit dem 1R noch stimmt da ich ne menge rumgespielt habe, aber leider mom. keine Zeit. Morgen Abend werd ich mal rein schaun und dir den neuen Code geben wenn ich fertig werde.


Bitte nicht lachen, bin ANFÄNGER:


  • Tastaturvirtuose
  • **
    • Beiträge: 92
    • Karma: +0/-0
    • Mitglied seit:
      25 Aug 2008

  • Stop
Re: MQL Hilfe
« Antwort #5 am: Februar 16, 2009, 10:40:21 am »
Ich habe mir jetzt mal folgendes zusammengeschrieben:

Ich zähle alle offenen Market Orders und sollten diese auf 0 sein wird alles geschlossen:

Will nur nicht klappen. Kann mir einer helfen?

Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
MarketOrders = 0;
   for(cnt=OrdersTotal()-1; cnt >= 0; cnt--)
     {
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderType()==OP_BUY)
         {
            OpenBuyOrders++;
         }
         if (OrderType()==OP_SELL)
         {
            OpenSellOrders++;
         }
            MarketOrders = OpenBuyOrders + OpenSellOrders;
      }
     
         {
               
            if (OrderMagicNumber() == magic1 && MarketOrders < 1|| OrderMagicNumber() == magic2 && MarketOrders < 1)
            {
               Print("Cancel or Close Orders ", OrderSymbol(), " open at ", OrderOpenPrice(), " profit ", OrderProfit());
               if (OrderProfit() == 0)
                  OrderDelete(OrderTicket());
                  return(0);
            }
             
            if(OrderMagicNumber()==magic)    // long position is opened
             {
             
            // check for trailing stop
            if(TrailingStop>0) 
              {                 
               if(Bid-OrderOpenPrice()>(TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1)/2))
                 {
                  if(OrderStopLoss()<Bid-TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1),OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else if(OrderMagicNumber()==magicc) // go to short position
           {

            // check for trailing stop
            if(TrailingStop>0) 
              {                 
               if((OrderOpenPrice()-Ask)>(TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1)/2))
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1))) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1),OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }

   
   return(0);

  • Gelegenheitsschreiber
  • *
    • Beiträge: 37
    • Karma: +0/-0
    • Mitglied seit:
      23 Oct 2008

  • Stop
Re: MQL Hilfe
« Antwort #6 am: Februar 16, 2009, 14:22:35 pm »
Hallo Howardcool,

also

wegen des Verstaendnisses, willst du damit alle BuyStop, BuyLimit, SellStop und SellLimit Orders loeschen?

Problem,
wenn die erste Order fuer die die Schleife
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
for(cnt=OrdersTotal()-1; cnt >= 0; cnt--)durchlaufen wird
keine Buy oder Sell war UND die Order noch nicht getriggert wurde, dann funktioniert es.

Du musst erst alle Orders zaehlen und anschliessend die Aktionen in einer weiteren Schleife durchfuehren!

Was passiert mit bereits getriggerten Ordern? Die werden nicht behandelt?


Kannst du vielleicht das mit dem 1R mal genauer erklaeren.
Wenn ich das richtig verstehe, ist das beispielhaft diese Zeile, oder?
Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
Ask-TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1)
danke
LiF

  • Tastaturvirtuose
  • **
    • Beiträge: 92
    • Karma: +0/-0
    • Mitglied seit:
      25 Aug 2008

  • Stop
Re: MQL Hilfe
« Antwort #7 am: Februar 16, 2009, 16:37:20 pm »
Hi habs jetzt ganz einfach gelöst  ;)

Code: Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
   for(cnt=0;cnt<total;cnt++)
     {     
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
     
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic1 && OrdersTotal() == 2)
            {
               Print("Cancel or Close Orders ", OrderSymbol(), " open at ", OrderOpenPrice(), " profit ", OrderProfit());
               if (OrderProfit() == 0)
                  OrderDelete(OrderTicket());
                 
            }
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic2 && OrdersTotal() == 1)
            {
               Print("Cancel or Close Orders ", OrderSymbol(), " open at ", OrderOpenPrice(), " profit ", OrderProfit());
               if (OrderProfit() == 0)
                  OrderDelete(OrderTicket());
                 
            }

Klappt hervorragend und ist das was ich wollte.

Und nun zum 1R.

Ich berechne beim eröffnen meiner z.B. BuyOrder den Stop:
             Ask-TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1) (Wobei mein TrailingStop ein Multipler)
ich zieh also vom Ask den ATRx3 ab und hab somit meinen initial Stopp = 1R.

Dann setze ich einen BUYSTOP:
             Ask + price
             wobei price = price=NormalizeDouble(TrailingStop* iATR(NULL,PERIOD_D1,ATR_Period,1),4);


Wenn noch Fragen sind....
   

  • Tastaturvirtuose
  • **
    • Beiträge: 92
    • Karma: +0/-0
    • Mitglied seit:
      25 Aug 2008

  • Stop
Re: MQL Hilfe
« Antwort #8 am: Februar 24, 2009, 20:21:23 pm »
Halllo ich mal wieder.

Ich such schon ewig nach ner lösung meines Problems aber ich komm einfach nicht drauf:

Es geht um meinen TrailingStop:

dieser wird wie folgt berechnet

Vortages Hoch oder Tief  = InitialStop
oberes BollingerBand  - unteres BollingerBand = BBAbstand

so nun berechne ich meinen

Faktor = BBAbstand / InitialStop

Um meinen Stopp jetzt immer an die Vola anzupassen sollte z.b. bei einer Long Order immer

aktueller BBAbstand / Faktor

vom HighestHigh seit OrderOpen abgezogen werden.


FOLGENDES FUNKTIONIERT LEIDER NICHT:

   FaktorShort= NormalizeDouble((BBoben-BBunten)*Point/(((BBoben-BBunten)*Point)/((meinHigh-Bid)*Point)),4);

Meldung Fehler Zero Devide



Auserdem kann mir einer sagen wie ich zum Beispiel das High[1] fixieren kann. Weil in MT4 wird das ja immer mit einer neuen Bar aktualisiert.

auch was den BBAbstand angeht, möchte den gerne bei OrderOpen fixieren und auf dessen Basis dann meinen Faktor berechnen.


Hoffe ich habe mich verständlich ausgedrück. Danke für eure Hilfe.






 

Ähnliche Themen

  Betreff / Begonnen von Antworten Letzter Beitrag
4 Antworten
859 Aufrufe
Letzter Beitrag Januar 30, 2009, 21:51:25 pm
von billylong
4 Antworten
491 Aufrufe
Letzter Beitrag Mai 18, 2009, 12:57:19 pm
von Divecall
BROKER... Hilfe

Begonnen von Sasch « 1 2 » Broker

16 Antworten
2193 Aufrufe
Letzter Beitrag September 25, 2009, 18:32:33 pm
von stony
MQL4 Hilfe

Begonnen von Sasch « 1 2 3 » MT 4 - EA´s

37 Antworten
2392 Aufrufe
Letzter Beitrag Oktober 06, 2011, 13:19:42 pm
von Sasch
12 Antworten
414 Aufrufe
Letzter Beitrag Januar 21, 2012, 02:42:51 am
von Divecall
6 Antworten
318 Aufrufe
Letzter Beitrag März 26, 2012, 17:18:28 pm
von divebubble
12 Antworten
345 Aufrufe
Letzter Beitrag April 08, 2012, 22:01:21 pm
von traderdoc
0 Antworten
86 Aufrufe
Letzter Beitrag Mai 03, 2012, 10:10:02 am
von remans


ChartTec´s World Topsites