Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?
01.10.2010, 20:37
Beitrag: #1
Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?
Guten Abend,

wisst Ihr wie ich die "OnTick()" Funktion abbrechen kann wenn schon 2 offene Trades vorhanden sind?

mit folgendem code funktioniert es nicht.

Code:
void OnTick()
{
      if(PositionsTotal() > 2) return;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2010, 19:35
Beitrag: #2
RE: Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?
Genau 2 ?

dann musst du schreiben
Code:
if(PositionsTotal() >= 2) return;

http://www.metatraders.de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2010, 20:29
Beitrag: #3
RE: Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?


Die Trades anzahl ist eigenlich egal.

Das Problem ist das wenn mehr als 1 offener Trade vorhanden ist, fügt Metatrader 5 alle anderen Trades dem ersten hinzu und ich kann die anzahl der offenen Trades nicht mit dem Befehl "PositionsTotal()" auslesen, weil sobalt 1 oder mehrere Trades offen sind wird immer der Wert "1" zurückgegeben.

Kenn jemand eine Lösung?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.10.2010, 22:17 (Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2010 22:18 von FinGeR.)
Beitrag: #4
RE: Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?
Sprichst du jetzt von einem Symbol oder mehrere ?
Du kannst in Metatrader 5 nur noch eine Pos. eröffnen.
Also Buy und gleichzeitig Sell vom selben Symbol ist nicht mehr möglich.

PositionsTotal() gibt bei mir den exakten wert zurück.

http://www.metatraders.de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2010, 22:49
Beitrag: #5
RE: Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?
hier ist der Code der nicht Funkioniert

Code:
#include <k_orders.mqh>
Order order;


int OnInit()
  {
   return(0);
  }

void OnDeinit(const int reason)
  {  }
  

void OnTick()
  {


   if(PositionsTotal() >= 3) return;

   buy(0.1, 200, 200);
  

  
  }
//+------------------------------------------------------------------+

void buy(double Lots, int sl, int tp)
{
   order.SetLots(Lots);
   order.SetMagic(123);
   order.SetSL_inPoints(sl);
   order.SetTP_inPoints(tp);
   order.SetComment("");
  
   order.Buy();
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2010, 07:56 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2010 07:57 von FinGeR.)
Beitrag: #6
RE: Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?


Versuch das mal.
Code:
#include <k_orders.mqh>
Order order;


int OnInit()
  {
   return(0);
  }

void OnDeinit(const int reason)
  {  
  
  }
  
void OnTick()
  {


   if(OpenPos() >= 3) return;

   buy(0.1, 200, 200);
  

  
  }
//+------------------------------------------------------------------+

void buy(double Lots, int sl, int tp)
{
   order.SetLots(Lots);
   order.SetMagic(123);
   order.SetSL_inPoints(sl);
   order.SetTP_inPoints(tp);
   order.SetComment("");
  
   order.Buy();
}



// gibt die Anzahl der offene Positionen zurück(Market Ordern)
int OpenPos()
{
   // int magic = 1234567; // Magic Nummer oder ID zu identifi. deiner Trades
   int total=PositionsTotal();
   int count=0;
   for (int cnt=0; cnt<=total-1; cnt++)
      {
       if(!PositionSelect(PositionGetSymbol(cnt))) continue;
       // if(!PositionGetInteger(POSITION_MAGIC)== magic) continue;        
       count++;
      }

    return(count);
}
Von Quelle

http://www.metatraders.de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2010, 12:25
Beitrag: #7
RE: Wie breche ich die "OnTick" Funktion bei 2 offenen Trades ab?
Funktioniert leider auch nicht.

Ich glaube es lieg an der Buy() funktion.

Welche funktion benutzt ihr um Tades zu öffnen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu: