[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 463

 

Hallo zusammen!

Können Sie mir sagen, wie ich dem Expert Advisor beibringen kann, sich daran zu erinnern, dass ein Auftrag eröffnet wurde (nachdem er geschlossen wurde). Globale logische Variablen sind geeignet, aber nur für ein Instrument. Wenn ich mehr als ein Symbol in einem Terminal habe, ändern sich die Variablen und funktionieren nicht wie erwartet.

 
demlin:

Hallo zusammen!

Können Sie mir sagen, wie ich dem Expert Advisor beibringen kann, sich daran zu erinnern, dass ein Auftrag eröffnet wurde (nachdem er geschlossen wurde). Globale logische Variablen sind geeignet, aber nur für ein Instrument. Wenn ich mehr als ein Symbol in einem Terminal habe, ändern sich die Variablen und funktionieren nicht wie erwartet.


Jedes Werkzeug hat also seine eigene globale Variable).
 
tol64:

Jedes Werkzeug hat also seine eigene globale Variable).
Das macht Sinn, aber wie kann ich das Programm dazu bringen, die Namen zu generieren? Ich möchte nicht 60 Variablen manuell in den Code einfügen)))
 

Hallo zusammen!

Ich habe Schwierigkeiten... Ich habe daran gearbeitet, ich habe versucht, eine Short-Order auf EUR/USD für eine lange Zeit zu öffnen, ich habe versucht, eine kurze einmal vor dem MA zu öffnen und der Abschluss der vorherigen Kerze war unter dem MA, aber die Bestellung nicht geöffnet, ich habe in der Tester jetzt gearbeitet und die Bestellung geöffnet wie ein netter Kerl,

Wo ist der Fehler im Code - ich verstehe nicht, ich habe speziell die Bedingung eingefügt, wenn der Auftrag nicht geöffnet hat - versuchen, es zu öffnen 10 mal, aber es scheint nicht zu helfen, bitte helfen Sie einem Anfänger ...

void CheckForOpensell()
  {
   double maopensell;
   int    ticketsell=0;


//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   maopensell=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>maopensell && Close[1]<maopensell)
   for (int it=1; it<=10; it++)
    {
      while (!IsTradeAllowed()) Sleep(5000); 
      RefreshRates();
      ticketsell=OrderSend(Symbol(),OP_SELL,LotsOptimizedsell(),Bid,3,0,0," MA Sell M"+TF,MAGICMA,0,Red);
      if(ticketsell>0)
         {
          OrderModify (ticketsell,OrderOpenPrice(),Bid+StopLoss*Point,Bid-TakeProfit*Point,0,Gold);
          return;  
         }
      
      else
       {
        int err=GetLastError();
        if (err==128 || err==142 || err==143 || err==144) 
         {
           Sleep(2000);
           Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
           continue;
         }
        if (err==146) while (IsTradeContextBusy()) Sleep(2000);
        Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
        if (err==2 || err==64 || err==65 || err==4110 || err==4111) break;
        Sleep(2000);
       }
      
     }
  }
 
Abylhat:

Hallo zusammen!

Ich habe Schwierigkeiten... Ich habe mit dem EA auf dem Chart 24 Stunden am Tag gearbeitet, heute auf EUR/USD hatte ich eine Bedingung, um einen Short zu öffnen, (vorherige Kerze war offen höher als MA, und seine Schließung war niedriger als MA), aber die Reihenfolge nicht öffnen, ich habe versucht, diesen Abschnitt in der Tester zu öffnen, die Reihenfolge wie eine schöne geöffnet,

Wenn die Bestellung nicht geöffnet wurde, habe ich 10 Mal versucht, sie zu öffnen, aber es hat nicht geholfen, bitte helfen Sie einem Anfänger ...


Es ist gut möglich, dass das Problem in diesem Bereich liegt

 if(Volume[0]>1) return;

Signale mit einer solchen Bedingung können übersprungen werden. Aber im Testgerät werden sie mit Sicherheit funktionieren.

Es gibt kein Tick-Skipping im Tester

 
Vinin:


Es ist gut möglich, dass das Problem in diesem Abschnitt liegt

Signale mit dieser Bedingung können übersehen werden. Sie werden aber auf jeden Fall im Testgerät funktionieren.

Kein Tick-Skipping im Testgerät


Danke, können Sie mir sagen, wie ich die Bedingung anders einstellen kann?
 
Abylhat:

Danke, können Sie mir sagen, wie ich die Bedingung anders einstellen kann?

int start(){
   static int prevtime=0;
   if (Time[0]==prevtime) return(0);
   prevtime=Time[0];

//
   return(0);
}
Sie können TimeCurrent() anstelle von Time[0] verwenden.
 
demlin:

Hallo zusammen!

Können Sie mir sagen, wie ich einem Expert Advisor beibringen kann, sich daran zu erinnern, dass ein Auftrag offen war (nachdem der Auftrag geschlossen wurde). Globale logische Variablen sind geeignet, aber nur für ein Instrument. Wenn es mehrere Symbole in einem Terminal gibt, ändern sich die Variablen und funktionieren nicht wie erwartet.

Handelt der Expert Advisor mehrere Symbole auf einmal?

Wenn er/sie nur mit einem Instrument handelt, kann die Magic-Nummer des Expert Advisors zum Namen der globalen Variablen hinzugefügt werden.

 
rlx:

Kann der Expert Advisor mit mehr als einem Instrument gleichzeitig handeln?

Wird nur mit einer gehandelt, kann die Magic-Nummer des Expert Advisors zum Namen der globalen Variable hinzugefügt werden.

Der Expert Advisor handelt mit mehreren Instrumenten gleichzeitig
 
Vinin:

Sie können TimeCurrent() anstelle von Time[0] verwenden.

Danke, ich werde mich bewerben und testen....