[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 167

 
Erstellen Sie eine globale oder statische boolesche Variable wie flag. Wenn die Bedingung eingetreten ist und flag=true, öffnen Sie den Auftrag und setzen Sie flag=false. Wenn der Auftrag jetzt geschlossen wird, wird kein neuer Auftrag eröffnet. Wenn die Bedingung nicht mehr gegeben ist, setzen Sie wieder flag=True.
 
Roger:
Erstellen Sie eine globale oder statische boolesche Variable vom Typ Flag. Wenn die Bedingung erfüllt ist und flag=true, eröffnen Sie einen Auftrag und setzen flag=false. Wenn der Auftrag nun geschlossen wird, wird kein neuer Auftrag eröffnet. Wenn die Bedingung nicht mehr gegeben ist, setzen Sie wieder flag=True.

Wie erkenne ich, ob ein Auftrag eröffnet, aber aufgrund der Bedingung N geschlossen wurde? Denn es gibt viele Bedingungen, und das Vorhandensein der Bedingung N garantiert nicht, dass der Auftrag abgeschlossen ist.

Das heißt, ich muss wissen, dass der Auftrag ausgeführt wurde, aber er wurde vor n Kerzen geschlossen, weil die N-Bedingung ausgelöst wurde. Und wenn die Bedingung N verschwunden ist und nicht mehr als n Kerzen seit der Schließung der Order vergangen sind, sollten wir die Order wieder öffnen.

 
Xaoss1990:

Wie erkenne ich, ob ein Auftrag eröffnet, aber aufgrund der Bedingung N geschlossen wurde? Denn es gibt viele Bedingungen, und das Vorhandensein der Bedingung N garantiert nicht, dass der Auftrag abgeschlossen ist.

Das heißt, ich muss wissen, dass der Auftrag abgeschlossen wurde, aber vor n Kerzen geschlossen wurde, weil die Bedingung N ausgelöst wurde. Und wenn die Bedingung N verschwunden ist und nicht mehr als n Kerzen seit der Schließung der Order vergangen sind, sollten wir die Order wieder öffnen.


Seien Sie aktiver mit Alert(), Print() mit Logic!
 
Xaoss1990:

Bitte beraten Sie uns, meine Herren!

Stellen Sie sich die Situation vor: Ein Halt wird ausgelöst, weil die N-te Bedingung einget reten ist. Aber nach ein paar Kerzenleuchtern ist die N-te Bedingung weggefallen. Mit Hilfe dieser Funktion können Sie das Geschäft wieder öffnen, nachdem die N-te Bedingung weggefallen ist. Das heißt, Sie müssen feststellen, dass vor einer gewissen Anzahl von Takten ein Stop ausgelöst wurde, und weil die N-te Bedingung weggefallen ist, den Handel wieder eröffnen!


wenn programmgesteuert - beim Öffnen einer Bestellung - eine Magie und ein Kommentar vorhanden sind - können Sie die Information, unter welcher Bedingung die Bestellung geöffnet wird, in der Magie oder im Kommentar verschlüsseln

Im Allgemeinen wird der Stopp nicht durch eine Bedingung ausgelöst, sondern wenn der Kurs ein bestimmtes Niveau erreicht - dieser Auftrag kann durch eine Bedingung geschlossen werden.

 
Xaoss1990:

Wie erkenne ich, ob ein Auftrag eröffnet, aber aufgrund der Bedingung N geschlossen wurde? Denn es gibt viele Bedingungen, und das Vorhandensein der Bedingung N garantiert nicht, dass der Auftrag abgeschlossen ist.

Das heißt, ich muss wissen, dass der Auftrag erteilt wurde, aber vor n Kerzen geschlossen wurde, weil die Bedingung N eingetreten ist. Und wenn die Bedingung N verschwunden ist und nicht mehr als n Kerzen seit der Schließung des Auftrags vergangen sind, muss ich den Auftrag erneut öffnen.

Sie möchten die Dinge nicht zu sehr verkomplizieren? Schließlich hätte der Auftrag abgeschlossen werden können, wenn die Bedingung X vorgelegen hätte, obwohl auch die Bedingung N vorgelegen haben kann.

Die Lösung hängt stark von Ihrer Positionsverwaltungslogik ab, z. B. von der Suche nach Aufträgen, die spätestens nach n Candlesticks geschlossen wurden, und von der Überprüfung des Ereignisses N zum Zeitpunkt der Auftragsschließung sowie zum aktuellen Zeitpunkt.

 
 int CountH,NewCountH,CountL,NewCountL;
 double ResistH,ResistL;
 
 //========================
 
 int start(){

 //--------------------------
   double bid = Bid;
   double UPPprice = bid+3000.0*Point;
   double LOWprice = bid-3000.0*Point;
   NewCountH=0;
   ResistH=0;
   NewCountL=0;
   ResistL=0;
  
   while(LOWprice<UPPprice)
    {
      CountH=0;
      CountL=0;
      for(int i=1; i<=6000; i++){  
          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountL++;
       } 
      if(CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
      if(CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+5*Point;
    }
 //----------------------------
 
 return(0);
 }
Wie kann ich diesen Zyklus "einfacher" gestalten? Es dauert sehr lange zu zählen.
 
DhP:

Wie kann ich diesen Zyklus "einfacher" gestalten? Es dauert sehr lange zu zählen.


vielleicht etwas, das ich nicht verstehe, aber hier:

          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountL++;
die gleiche Bedingung
 
abolk:


Vielleicht habe ich es nicht richtig verstanden, aber hier:

die gleiche Bedingung - zu jeder Zeit ist CountH gleich CountL

Nein, wenn der Preis höher ist als Bid, dann zählt CountH, wenn er niedriger ist, dann zählt CountL
 
DhP:
Nein, wenn der Preis höher als Bid ist, dann CountH? wenn niedriger, dann CountL


ist es möglich, die Berechnung zu beschleunigen:

reduzieren i<=6000

 
abolk:


Es ist möglich, die Berechnung zu beschleunigen:

a) Reduzieren Sie i<=6000
b) Berechnen Sie nur am Anfang des Balkens

a) Eine Verringerung der Anzahl von i ist möglich, aber nicht wünschenswert. Auf diese Weise werden die Balken für das Jahr aufgenommen.

b) Am Anfang eines Taktes... Dies ist wahrscheinlich eine Option. Funktioniert auf M15.

In jedem Fall werden aber fast 2 Sekunden gezählt.