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

 

Bitte helfen Sie bei zwei einfachen Skripten, die Folgendes öffnen

schwebende Aufträge zum Kauf und Verkauf mit festgelegtem Stop-Loss und Take-Profit zu bestimmten

Entfernung vom aktuellen Preis. Irgendwie habe ich einen geschrieben, der funktioniert, ihn aber versehentlich gelöscht.

Ich habe sie versehentlich gelöscht und weiß jetzt nicht mehr, wie ich sie zum Laufen gebracht habe.

die einzige Hoffnung für Sie...

verkaufen:


int start()
{
OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid-20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}


und kaufen


int start()

{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}

Hilfe bitte...

 
NickXXX:

Hallo zusammen!

Heute übe ich mit der Zeit) Ich muss zum Beispiel einen Indikator dazu bringen, etwas zu einer bestimmten Zeit zu tun.

Der Code wird wie folgt lauten:

Nehmen wir an, unsere Bedingung soll nicht nur um 21.30 Uhr, sondern auch um 22.00 Uhr, 22.30 Uhr, 23.00 Uhr und so weiter gelten...

Sie können natürlich auch Folgendes tun:

Aber ich denke, das ist irgendwie unvernünftig, vor allem, wenn es viele Kontrollpunkte geben wird. Ich denke, das kann man und ist einfacher.

Frage, wie man es einfacher machen kann (richtig) ?)

Hier kommt es darauf an, ob die zeitlichen Bedingungen eine Art Gesetz ergeben, ob es ein Muster gibt. Zum Beispiel für Ihren Fall, jede halbe Stunde: if(TimeCurrent()%1800==0) {tra-ta}. Wenn es keine Logik in diesen Zeitpunkten gibt - Ihre Option. Nur gefällt mir das nicht, es ist eine strenge Gleichheit, wenn es in dieser Minute kein Häkchen gibt - EA wird die Bedingung nicht erfüllen...
 
Figar0:
Hier kommt es darauf an, ob die zeitlichen Bedingungen einem Gesetz unterliegen, ob es ein Muster gibt oder nicht. In Ihrem Fall zum Beispiel jede halbe Stunde: if (TimeCurrent()%1800==0) {tra-ta}. Wenn es keine Logik in diesen Zeitpunkten gibt - Ihre Option. Nur ich mag es nicht, es ist eine strenge Gleichheit, wenn es in dieser Minute kein Häkchen gibt - EA wird die Bedingung nicht erfüllen...

D.h. die Überprüfung der restlichen Teilungsarbeiten. Aber mir scheint, dass es in diesem Fall immer einen Rest geben wird...

Ich stimme mit der strikten Gleichstellung völlig überein, ich habe sie noch nicht durchdacht. Im Prinzip könnte man wahrscheinlich so etwas wie ein Intervall machen, z. B. 16.00 - 16.03.

Aber es ging nur darum, alle halbe Stunde einmal zu rechnen und dann schlafen zu gehen. Damit das System nicht ständig mit unnötigen Berechnungen belastet wird.

 
NickXXX:

D.h. die Überprüfung der restlichen Teilungsarbeiten. Aber mir scheint, dass es in diesem Fall immer einen Rest geben wird...


Ja, Sie haben recht, es ist besser: if(TimeCurrent()%1800<60) {tra-ta}.
 
Figar0:

Nun ja, Sie haben recht, besser so: if (TimeCurrent()%1800<60) {tra-ta}.

< 0,6, oder etwas Ähnliches. Der Rest der Division ist immer kleiner als eins :)
 

Was ist, wenn es viele solcher Variablen gibt?

double Time_Mes_1=21.30;
double Time_Mes_2=22.00;
double Time_Mes_3=22.30;
...

Ist das zu schade, oder wird es funktionieren?

Und noch eine kleine Frage: Wenn ich z.B. ein Intervall (z.B. 16.00-16.03) für eine auszuführende Bedingung festlege. Wie kann man erreichen, dass es nur einmal ausgeführt wird, obwohl neue Ticks eintreffen?

 

1. Es gibt einen Datentyp: datetime. Wenn Sie etwas Exotisches wollen, können Sie int für time verwenden, aber double ist ein Extremfall.

2. Gehen Sie 5-10 Seiten zurück: Dort steht, wie Sie das tun können, was Sie wollen.

 

Hallo.

Bitte helfen Sie mir, den Code zu korrigieren.

Beide Zeilen unten sind fehlerhaft.

Vielen Dank im Voraus.

if((OrderMagicNumber()==MAGIC || OrderMagicNumber()==777))

if((OrderMagicNumber()==(MAGIC || 777))

Das Programm selbst:

int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int MAGIC;
  int i;
  for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 }
 
tara:
Bitte verbreiten Sie keine Ketzerei in der Öffentlichkeit. Geh woanders nerdig sein, es gibt genug zu tun...
 
tara:

1. Es gibt einen Datentyp: datetime. Wenn Sie etwas Exotisches wollen, können Sie int für time verwenden, aber double ist ein Extremfall.

Wenn Sie time verwenden wollen, müssen Sie int und double verwenden. 2) Spulen Sie 5-10 Seiten zurück: Dort steht geschrieben, wie Sie das tun können, was Sie wollen.

1. Nun, hier wurde das Doppelte nur zum Hinzufügen von Minuten und Stunden verwendet, damit man Kontrollpunkte als HH markieren konnte.MM (z.B. 16. 23).

2. Wenn man sich die letzten Seiten ansieht, geht es natürlich um datetime, aber nicht genau um dasselbe. Sie geben einfach den Zeitpunkt der letzten Bestellung im Format HH.MM aus.


Grund der Beschwerde: