bitte helfen Sie mir [gelöst] - Seite 2

 
ZEIGEN SIE DEN CODE AN.
 

bool order= 0;
int ticket;

void OnTick()
  {


  if(order==0)
    {
     double up= iIchimoku (NULL, 5,9,26,52,3,0);
     double down= iIchimoku (NULL,5,9,26,52,4,0);

     if (MathMax (up,down) < Bid )

    int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
      {
       if( ticket!=1)
        {
         order=1;
        }
      }
    }
  }
Ich habe alle anderen Funktionen, die ich nicht benutze, gelöscht, mein ganzer Code ist nur das
Automated Trading and Strategy Testing
Automated Trading and Strategy Testing
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 

Ihre doppelte Deklaration von Ticket .

bool order= 0;
int ticket;

void OnTick()
  {


  if(order==0)
    {
     double up= iIchimoku (NULL, 5,9,26,52,3,0);
     double down= iIchimoku (NULL,5,9,26,52,4,0);

     if (MathMax (up,down) < Bid )

    int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
      {
       if( ticket!=1)
        {
         order=1;
        }
      }
    }
  }

Die Deklaration von ticket versteckt ... blah blah ? siehe ich bin der menschliche Compiler.

Entferne das zweite int .

 
mrluck1:

Ich habe

bool Bestellung und

int ticket

auf globale Variablen gesetzt und den Rest des Codes auf OnTick, aber trotzdem macht er jetzt keinen Eintrag

Unkompiliert, ungetestet

void OnTick()
  {
   double up   = iIchimoku(NULL,5,9,26,52,3,0),
          down = iIchimoku(NULL,5,9,26,52,4,0);
   static bool was_above = true;
   bool is_above = (MathMax(up,down)< Bid);
   if(!was_above && is_above && open_orders()<1)
     {
      if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
        {
         printf("OrderSend() failed. Error code: %i",GetLastError());    
        }
     }
   was_above = is_above;
  }

int open_orders()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
     {
      if(!OrderSelect(i,SELECT_BY_POS))  continue;  // select the order
      if(OrderSymbol() != _Symbol)       continue;  // optional check for same symbol
      if(OrderMagicNumber()!= magic_no)  continue;  // optional check for magic number
      if(OrderType() < 2)                count++;   // 0 == OP_BUY and 1 == OP_SELL
     }
   return(count);
  }
 

Marco: Ich entfernte die doppelte int, aber jetzt kein Handel gemacht wird, ich brauche 1 Handel, wenn Preis> ichimoku Wolke, dass Code zunächst war groß, aber es weiterhin neue Trades zu erstellen, wenn

der Preis war über die Wolke, ich brauche nur Hilfe, um Code in einer Weise, dass das Skript nach dem 1 Handel zu stoppen.

Honest Knave: Ich habe versucht, Ihren Code, ich habe gerade definiert magic_no, die fehlte, es funktioniert gut, es wartet auf den neuen Handel der Preis berühren die Wolke wieder, es wird wirklich nützlich sein für nächste Projekte, aber

ich brauche es nur zu stoppen, nachdem die 1º Handel, was soll ich tun?

Vielen Dank an alle für Ihre Hilfe

 
bool order= 0;
int ticket;

void OnTick()
  {


  if(order==0)
    {
     double up= iIchimoku (NULL, 5,9,26,52,3,0);
     double down= iIchimoku (NULL,5,9,26,52,4,0);

     if (MathMax (up,down) < Bid )

    ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
      {
       if( ticket!=1)
        {
         order=1;
        }
      }
    }
  }

Das ist das Problem.

bool order= 0;
int ticket;

void OnTick()
  {


  if(order==0)
    {
     double up= iIchimoku (NULL, 5,9,26,52,3,0);
     double down= iIchimoku (NULL,5,9,26,52,4,0);

     if (MathMax (up,down) < Bid )

    ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
      {
       if( ticket>-1)
        {
         order=1;
        }
      }
    }
  }


Versuchen Sie also Folgendes, worauf ich bereits in einigen Beiträgen hingewiesen habe.

Marco vd Heijden:

Beachten Sie auch, dass OrderSend entweder die Ticketnummer zurückgibt, oder -1 minus eins, wenn es fehlschlägt.

Siehe.
 
mrluck1:

Ehrlich Knave: Ich habe versucht, Ihren Code, ich habe gerade definiert magic_no, die fehlte, es funktioniert gut, es wartet auf neue Handel, wenn der Preis berührt die Wolke wieder, es wird wirklich nützlich sein für die nächsten Projekte, aber

ich brauche es nur zu stoppen, nachdem die 1 Handel, was sollte ich tun?

Vielen Dank an alle für Ihre Hilfe

Es sollte nicht mehr als 1 Handel machen...? Das ist, was dies tut:

void OnTick()
  {
   double up   = iIchimoku(NULL,5,9,26,52,3,0),
          down = iIchimoku(NULL,5,9,26,52,4,0);
   static bool was_above = true;
   bool is_above = (MathMax(up,down)< Bid);
   if(!was_above && is_above && open_orders()<1)
     {
      if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
        {
         printf("OrderSend() failed. Error code: %i",GetLastError());    
        }
     }
   was_above = is_above;
  }

int open_orders()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
     {
      if(!OrderSelect(i,SELECT_BY_POS))  continue;  // select the order
      if(OrderSymbol() != _Symbol)       continue;  // optional check for same symbol
      if(OrderMagicNumber()!= magic_no)  continue;  // optional check for magic number
      if(OrderType() < 2)                count++;   // 0 == OP_BUY and 1 == OP_SELL
     }
   return(count);
  }
 

Ehrlicher Knave:

Ihr EA ist großartig, aber es schafft neue Trades, wenn der Preis geht wieder nach unten zu ichimoku Wolke und dann wieder nach oben. Es doesnt wiederholen die Aufträge in der gleichen Kerze, wie das Problem, das ich hatte, und ich werde eine Menge lernen, durch diese Probe, die Sie mir gegeben haben, um neue zu erstellen

EA's, aber ich brauche einen Weg, um Code, der nach dem ersten Handel, der EA oder Skript wird sofort schließen, so dass ich nur 1 Handel jemals gemacht brauchen.

Marco: Ich habe Ihr neues Update ausprobiert, aber es macht keinen Handel, ich habe nur die Art und Weise, wie Sie zuletzt gepostet haben, nur die zweite int entfernt, in das Ticket. Aber der erste Handel ist nie auf Strategie-Tester gemacht, was jetzt zu tun?

 
mrluck1:

Ehrlicher Knave:

Ihr EA ist großartig, aber es schafft neue Trades, wenn der Preis geht wieder nach unten zu ichimoku Wolke und dann wieder nach oben. Es doesnt wiederholen die Aufträge in der gleichen Kerze, wie das Problem, das ich hatte, und ich werde eine Menge lernen, durch diese Probe, die Sie mir gegeben haben, um neue zu erstellen

EA's, aber ich brauche einen Weg, um Code, dass nach dem ersten Handel, der EA oder Skript wird sofort schließen, so dass ich nur 1 Handel jemals gemacht.

Ich verstehe nicht, was Sie meinen.

Dieser Code kann nicht mehr als 1 Order auf einmal öffnen.

Aber wenn der Auftrag geschlossen wird und der Auslöser erneut auftritt, wird ein weiterer geöffnet.

Meinen Sie damit, dass nur ein Handel JEMALS geöffnet werden soll?

 
honest_knave:

Ich verstehe nicht, was Sie meinen.

Dieser Code kann nicht mehr als 1 Auftrag auf einmal öffnen.

Aber wenn der Auftrag geschlossen wird und der Auslöser erneut auftritt, wird ein weiterer geöffnet.

Meinen Sie, dass nur ein Handel JEDES Mal geöffnet werden soll?

Ja, Sir, nur 1 Handel jemals gemacht, aber Ihr Beispiel war großartig, es wird sehr nützlich sein, als Basis für die Erstellung neuer eas