Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Öffne neue Order gleich nachdem letzte Oder ausgestoppt wurde (http://www.expert-advisor.com/forum/showthread.php?t=4326)

saro2018 26.06.15 13:23

Zitat:

Zitat von traderdoc (Beitrag 30275)
@pako:MarketInfo(Symbol(),MODE_STOPLEVEL) geprüft?

Na das habe ich doch schon in Post #28 geschrieben!!!, wenn er seine "20" Pips nimmt und ohne Berücksichtigung des 5Digit das in Deine Funktion einsetzt.
Aber Du hast ja immer geschrieben 1 Pip = 1Pip, auch in Afrika.
Ist zwar formal, wie es da steht, richtig aber eben doch im Endeffekt falsch!
Und daran wird er scheitern, solange er nicht die 5Digit-Verhältnisse berücksichtigt.

traderdoc

Gut alles klar, ich habe soweit jetzt herausgefunden, wo genau der
Fehler ist. Also ich habe eine große Schleife indem sich zwei
Bedingungen befinden. Zum einen falls die letzte Order ein Profit oder
Null war und fallst die letzte Order ein Verlust war.
Das frunktioniert auch soweit (in der ersten Bedinung auch wieder nach
Long und short jeweils eine Bedinung).
Allerdings wenn ein Trade aus der ersten Bedinung mit Verlust schließt
und eine Order aus der zweiten Bedingung geöffnet wird, bleibt der EA in
dieser Schleife, unabhängig vom Profit und Verlust. Immer in bestimmten
Perioden öffnet er eine neue ORder. Ich möchte eigenltich folgendes
Szenario: Wenn eine Order aus der ersten Bedingung mit Verlust schließt,
soll er zur zweiten Bedinung übergehen und dann unabhängig davon ob
dieser Trade ein Gewinn oder Verlust war zur ersten Bedinung wieder
übergeht.
Wie kommt man aus dieser Bedinung wieder raus unabhängig vom Profit oder
Verlust?

saro2018 26.06.15 13:25

Hier der Code bzw. die Schleife mit den Bedingungen:

Code:

if (closedProfit>=0)
{  //Print("6");
if (iOpen(NULL,0,0) > u && iClose(NULL,0,0) < u)
  {
        RefreshRates();                        // Refresh rates
     
        SL=Bid + main_sl;    // Calculating SL of opened
        TP=Bid - main_tp;  // Calculating TP of opened
       
        ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,"Sell St",123456);
        if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
        }
        else Print("Error opening BUY order : ",GetLastError());
        return(0);
        }                          // Criterion for opening Sell

if (iOpen(NULL,0,0) < o  && iClose(NULL,0,0) > o)
  {
        RefreshRates();                        // Refresh rates
           
        SL=Ask - main_sl;    // Calculating SL of opened
        TP=Ask + main_tp;
       
      ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,"Buy St",123456); 
      if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
        }
        else Print("Error opening SELL order : ",GetLastError());
        return(0);
        }
        //Print("7");
 }     

                        // Criterion for opening Sell

if (closedProfit < 0 && (lastcomment=="Buy St" || lastcomment=="Sell St"))
    Print("8");
    double STOPLOSS = 200;
    double TAKEPROFIT = 200;
  //if(total < 1)
  {          //was soll total sein???
      if (lastorder == 0) {
      Print("Gegenposi");
        ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2, Bid + (STOPLOSS*Point), Bid - (TAKEPROFIT*Point), "abgesichert", mymagicnumber);
          if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
        }
        else Print("Error opening SELL order : ",GetLastError());
        return(0);     
      }
      if (lastorder == 1)
      {
      Print("Gegenposition Buy");
      ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2,Ask - (STOPLOSS*Point), Ask + (TAKEPROFIT*Point), "abgescihert", mymagicnumber);
      if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
        }
        else Print("Error opening BUY order : ",GetLastError());
        return(0);
         
      }

  }

 
       
       

return(0);
      }


traderdoc 26.06.15 16:32

Dann solltest Du beide Bedingungen einschließen in:

if (OrdersTotal() == 0) {
.
.
.
}

Das funktioniert aber nur solange, Du nur mit einem einzigen EA arbeitest und das auch nur auf einem einzigen TimFrame bei nur einem einzigen Handelsinstrument!

traderdoc

saro2018 26.06.15 23:51

Zitat:

Zitat von traderdoc (Beitrag 30299)
Dann solltest Du beide Bedingungen einschließen in:

if (OrdersTotal() == 0) {
.
.
.
}

Das funktioniert aber nur solange, Du nur mit einem einzigen EA arbeitest und das auch nur auf einem einzigen TimFrame bei nur einem einzigen Handelsinstrument!

traderdoc

Das habe ich bereits gemacht mit dem folgenden Code:

Code:

total=OrdersTotal();
if(total<1)
{
[...]
}

Dort drin ist die Bedinungen eingeschlossen. Allerdings geht er nicht mehr, wie ich oben beschrieben habe, aus der Schleife raus.
Das Problem ist, ich möchte, dass er im Verlustfall in diese Schleife einmal geht und dann wieder raus zu der ersten, die mit den Ursprungsbedinungen. Das Bedeutet eigentlich nur, dass ich möchte, dass eine Gegenposition aufgebaut wird falls eine Order aus der oberen Bedingung mit Verlust schließt.
Gibt es da eine Möglichkeit?

Gruß
Aron

pako 03.07.15 22:41

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von traderdoc (Beitrag 30183)
Für eine BuyOrder:

if(OrderClosePrice()<=OrderStopLoss())

für eine SellOrder:

if(OrderClosePrice()>=OrderStopLoss())

oder noch sicherer im OrderComment() der Order der Historie nach den Worten sl oder tp suchen.

traderdoc

wenn OrderStopLoss() =0 ???

Für eine BuyOrder: Close per TP
Code:


if(OrderTakeProfit()!=0)
  {
  if(OrderClosePrice()>=OrderTakeProfit())
    {
      Print("TP");
    }
  }

ticket 95679237 OrderClosePrice() !=OrderStopLoss() OrderComment()=="sl"
ticket 95692919 OrderClosePrice() ==OrderTakeProfit() OrderComment()==""
ECN Brocker


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:25 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum