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

 

Ich brauche Hilfe beim Schließen von Aufträgen)) gibt es einen Handel auf jedem Balken. Der Tester öffnet viele, viele Aufträge, und der korrekte Weg ist, einen Auftrag auf dem aktuellen Balken zu senden und ihn auf dem nächsten Balken zu schließen.

Sag mir, was los ist...

 if (OrdersTotal()!=0)
   {
     OrderSelect(OrderTicket(),SELECT_BY_TICKET);
     if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
     if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
   }
 

Nein, so ist es nicht...

Wer hat Ihnen das beigebracht?

Wo ist die Auftragsschleife?

Was passiert, wenn der Auftrag nicht "select" ist?

Wo wird nach dem Zeitpunkt des Öffnens und Schließens der letzten Bestellung gesucht ???? ?

Wo ist das Verbot, weitere Aufträge auf demselben Balken zu eröffnen, wenn alle Aufträge gemäß den RECHTEN Bedingungen (die Sie nicht haben) geschlossen werden?

 
FAQ:

Nein, so ist es nicht...

Wer hat Ihnen das beigebracht?

Wo ist die Auftragsschleife?

Was passiert, wenn der Auftrag nicht "select" ist?

wo ist die Suche nach dem Zeitpunkt des Öffnens und Schließens der letzten Bestellung ???? ?

Wo ist das Verbot, weitere Aufträge auf demselben Balken zu eröffnen, wenn alle Aufträge gemäß den RECHTEN Bedingungen (die Sie nicht haben) geschlossen werden?

Warum der Überschneidungszyklus, wenn es immer einen offenen Auftrag gibt?
 
orb:

Ich brauche Hilfe beim Schließen von Aufträgen)) gibt es einen Handel auf jedem Balken. Der Tester öffnet viele, viele Aufträge, und der korrekte Weg ist, einen Auftrag auf dem aktuellen Balken zu senden und ihn auf dem nächsten Balken zu schließen.

Sag mir, was los ist...

OrderSelect(OrderTicket(),SELECT_BY_TICKET);

"Bestellung mit dem Ticket der aktuell ausgewählten Bestellungauswählen " - wie geht das?

 

Dann...

Gehen Sie zum Thread von Igor Kim, geben Sie die benötigten Funktionen ein und verwenden Sie sie, um zu sehen, wie man es richtig macht.

 
(Mann, bin ich blöd.)
 
7sintez:
Hallo zusammen! Leute..., ein Tipp für einen Neuling...! Ich möchte es so einrichten, dass unter bestimmten Bedingungen nur ein Handel oberhalb der Kerze eröffnet wird!!! Aus irgendeinem Grund habe ich viele offene Handelsgeschäfte... Nicht sofort, aber allmählich... D.h. sagen wir über eine 5-Minuten-Kerze während aller 5 Minuten werden Geschäfte eröffnet! Und ich muss es so einrichten, dass nur ein Handel eröffnet wird! Und damit bei der nächsten Kerze unter bestimmten Bedingungen auch nur ein Geschäft eröffnet wird, usw.


Ich danke Ihnen!

Ich habe es so gemacht. Ich schaue mir die Aufträge an, und wenn es einen offenen Auftrag für das Währungspaar gibt, vergleiche ich dessen Eröffnungszeit mit dem Zeitpunkt der Eröffnung des aktuellen Balkens. Wenn die Zeit der Bestellung länger ist, steige ich aus. Wenn es einen neuen Balken gibt, wird seine Öffnungszeit länger als die Zeit des Auftrags, der den Handel auf dem vorherigen Balken blockierte, und Sie können auf dem neuen Balken handeln.
if (OrdersTotal()>0)
   {  for (i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  if (OrderSymbol()==Symbol() && OrderOpenTime()>iTime(NULL,0,0))
            {   Sleep(5*1000); return(0);
   }  }  }  }
 
Qwertee:

Technisch gesehen ist es einfach: buysell !="buy" - also wird der nächste Alert(1) nicht ausgeführt.

Was die Variable buysel zu diesem Zeitpunkt enthält, wird durch print herausgefunden: Print (buysell); nach dem ersten Alert.

------------------------------------------------------------------------------------------------------------------------------------------------

Das ist das Problem, wenn ich Print(buysell) anstelle von Alert(1) in den Code einfüge, dann gibt buysell den Wert buy zurück, wo liegt also das Problem?

Um sicher zu sein, dass man eine Kakerlake betäubt, indem man ihr die Beine ausreißt, sollte man ihr alle Beine einzeln ausreißen und jedes Mal das Kommando "Krabbeln" geben - das ist das Schicksal aller Experimentatoren. Versuchen Sie, etwas anderes in den zweiten Alert() -Befehl zu schreiben, zum Beispiel Alert ("1") oder Alert ("Mama, trauere nicht!") - beobachten Sie, was passiert. ;)))
 
paladin80:
Ich habe es auf diese Weise gemacht. Wenn ein offener Auftrag für das betreffende Währungspaar vorliegt, vergleiche ich dessen Eröffnungszeit mit der Zeit, zu der der aktuelle Balken zu öffnen beginnt. Wenn die Zeit der Bestellung länger ist, steigen wir aus. Wenn es einen neuen Balken gibt, ist seine Öffnungszeit länger als die Zeit des Auftrags, der die Transaktion auf dem vorherigen Balken blockierte, und wir können auf dem neuen Balken handeln.
Wenn man einem kleinen Kind sagt, dass es seine Mutter "Papa" nennen soll, wird es das so lange tun, bis es von jemandem "ausgelacht" wird...

Wenn Sie einen Neuankömmling auffordern, tun Sie es gleich RICHTIG! Konstruktion:

if (OrdersTotal()>0)

Dies funktioniert, solange der Händler nicht mehrere Expert Advisors auf demselben Konto einsetzt, und das wird früher oder später passieren! Das bedeutet, Ein Berater ohne MAGIC ist "wie ein Vogel ohne Flügel, wie ein Mann ohne Teig"....

Übrigens und

iTime(NULL,0,0)

ist es korrekter, es als Time[0] zu schreiben.
Und Schlaf (5*1000) = 5 Sekunden. Und worauf warten wir noch?

 
7sintez:
Hallo zusammen! Leute..., ein Tipp für einen Neuling...! Ich möchte es so einrichten, dass unter bestimmten Bedingungen nur ein Handel oberhalb der Kerze eröffnet wird!!! Aus irgendeinem Grund habe ich eine Menge Angebote geöffnet... Nicht sofort, aber allmählich... D.h. sagen wir über eine 5-Minuten-Kerze während aller 5 Minuten werden Geschäfte eröffnet! Und ich muss es so einrichten, dass nur ein Handel eröffnet wird! Und damit bei der nächsten Kerze unter bestimmten Bedingungen auch nur ein Geschäft eröffnet wird, usw.


Danke!

Vergleichen Sie die Eröffnungszeit des Auftrags mit dem Beginn der 5-Minuten-Kerze, z.B. so:

if (iBarShift (NULL, 5, OrderOpenTime()) == iBarShift (NULL, 5, iTime (NULL, 5, 0))) return (0);
или
if (OrderOpenTime() >= iTime (NULL, 5, 0)) return (0);
Grund der Beschwerde: