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)
-   -   Bei Trendsignal nur eine Order öffnen aber nach geschlossene öffnet wieder eine!? (http://www.expert-advisor.com/forum/showthread.php?t=3638)

Richi777 23.04.14 18:37

Bei Trendsignal nur eine Order öffnen aber nach geschlossene öffnet wieder eine!?
 
Hallo Leute,

nachdem ich meine ersten EA super hinbekommen habe, der allerdings nur auf bestimmte Zeitfenster reagiert, bastel ich gerade an einen neuen, der 24 h laufen soll.....:D

Folgendes Problem habe ich:

Wie im Titel beschrieben, soll nach long- oder short-Signal nur eine Buy- bzw. Sell-Order geöffnet werde bis zum Trendwechsel.
Eigentlich sollte es funktionieren aber nach jedem geschossene Order öffnet sich eine.
Hier der Code--->

Code:

int offeneorders= 0;

int anzahlorders=OrdersTotal();

  for(i=0;i<anzahlorders;i++)
    {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
     
      if (OrderSymbol()== Symbol()&& OrderMagicNumber()==MagicNumber)
            {
            offeneorders++;
            }     
        }
   
//-------------------------------------------------------------------+
    if(offeneorders == 0 ) { 
   
      if(signal ==  "long")
        {
        ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"Buy",MagicNumber,0,Green);

        if(ticket>0)
          {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Kauforder geöffnet : ",OrderOpenPrice());     
          }
        else Print("Error opening BUY order : ",GetLastError(), kauf);
        return(0);
        }
       
//+------------------------------------------------------------------+

      if(signal == "short" )
        {
        ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Sell",MagicNumber,0,Red);
        if(ticket>0)
          {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
          }
        else Print("Error opening SELL order : ",GetLastError(), kauf);
        return(0);
        }
      return(0);
   

}

Vielleicht habe ich etwas übersehen aber momentan drehe ich am Rad. :confused:

Bitte um Hilfe.

traderdoc 23.04.14 19:14

Zitat:

Zitat von Richi777 (Beitrag 26055)
Hallo Leute,

nachdem ich meine ersten EA super hinbekommen habe, der allerdings nur auf bestimmte Zeitfenster reagiert, bastel ich gerade an einen neuen, der 24 h laufen soll.....:D

Folgendes Problem habe ich:

Wie im Titel beschrieben, soll nach long- oder short-Signal nur eine Buy- bzw. Sell-Order geöffnet werde bis zum Trendwechsel.
Eigentlich sollte es funktionieren aber nach jedem geschossene Order öffnet sich eine.
Hier der Code--->

Code:

int offeneorders= 0;

int anzahlorders=OrdersTotal();

  for(i=0;i<anzahlorders;i++)
    {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
     
      if (OrderSymbol()== Symbol()&& OrderMagicNumber()==MagicNumber)
            {
            offeneorders++;
            }     
        }
   
//-------------------------------------------------------------------+
    if(offeneorders == 0 ) { 
   
      if(signal ==  "long" && !BuyOrder)
        {
        ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"Buy",MagicNumber,0,Green);

        if(ticket>0)
          {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Kauforder geöffnet : ",OrderOpenPrice());
            BuyOrder = true;
            SellOrder = false;
          }
        else Print("Error opening BUY order : ",GetLastError(), kauf);
        return(0);
        }
       
//+------------------------------------------------------------------+

      if(signal == "short" && !SellOrder)
        {
        ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"Sell",MagicNumber,0,Red);
        if(ticket>0)
          {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
            SellOrder = true;
            BuyOrder = false;
          }
        else Print("Error opening SELL order : ",GetLastError(), kauf);
        return(0);
        }
      return(0);
   

}

Vielleicht habe ich etwas übersehen aber momentan drehe ich am Rad. :confused:

Bitte um Hilfe.


Viel Erfolg!

traderdoc

fxdaytrader 23.04.14 19:25

Du mußt dann nur bei Vorliegen eines erneuten Signals (an dem dann auch gekaufto der verkauft werden soll) BuyOrder und SellOrder jeweils wieder auf false setzen.

Richi777 23.04.14 19:46

@ Traderdoc--->Echt Super. Es funktioniert wie es soll. Danke.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:22 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