[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 162

 
Vinin:


Ok, ich bringe ein bisschen Logik mit

Zyklus wird unabhängig von der Bedingung ausgeführt if(NewBar())


Ich brauche keine Abhängigkeit von NewBAR(). Diese Funktion wird benötigt, um zu vermeiden, dass Aufträge in Stapeln platziert werden. Bitte sagen Sie mir, warum mein Code (in seiner letzten Variante) besser funktioniert.

funktioniert, aber sobald ich dasselbe für SELLSTOP tue, werden die Geschäfte nicht mehr geöffnet?

 

Sehr geehrte Damen und Herren, ich bin ein Neuling!

Ich habe angefangen, meinen allerersten EA...... zu schreiben, und ich kann ihn nicht beenden.

Im Moment teste ich es mit dem Strategietester.

Es ist ganz einfach.

Bei der Eröffnung einer 10-Stunden-Kerze platziere ich eine schwebende Order mit einem Abstand von z.B. 60 Pips zum Eröffnungskurs dieser 10-Stunden-Kerze.

Ich habe damit einige Erfolge erzielt.

Aber ich muss den schwebenden Auftrag löschen, wenn er nicht innerhalb einer Stunde nach seiner Erteilung umgesetzt wurde.

in einen Marktauftrag umwandeln.

Hier ist mein Code.

int start()
{
double Price=Ask+60*Point;
double SL=Price-30*Point;
double TP=Price + 15*Point;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600);

}

Dieser Code wird erfolgreich kompiliert; der Tester zeigt keine Fehler an.

Aber der Verfallsparameter funktioniert nicht, d.h. Pending Orders, die nicht innerhalb von 1 Stunde in Market Orders umgewandelt werden, werden nicht gelöscht.

Ich habe den Wert 3600 in 3600000.... geändert, aber es passiert nichts.

Ich wäre Ihnen sehr dankbar, wenn Sie mir sagen könnten, wo mein Fehler liegt.

 
solnce600:
der Parameter "Ablauf" funktioniert nicht

Höchstwahrscheinlich unterstützt der Broker dies nicht. Sie können natürlich auch so vorgehen:

int i,ot = OrdersTotal();

for(i=ot-1;i>=0;i--)
{
   if(!OrderSelect()) continue;
   if(OrderMagicNumber()!=123) continue;
   
   if(OrderType()==OP_BUYSTOP && TimeCurrent()-OrderOpenTime()>3600)
   {
      OrderDelete(OrderTicket());
   }
}
 
solnce600:

Sehr geehrte Damen und Herren, ich bin ein Neuling!

Ich habe angefangen, meinen allerersten EA...... zu schreiben, und ich kann ihn nicht beenden.

Im Moment teste ich es mit dem Strategietester.

Es ist ganz einfach.

Bei der Eröffnung einer 10-Stunden-Kerze platziere ich eine schwebende Order mit einem Abstand von z.B. 60 Pips zum Eröffnungskurs dieser 10-Stunden-Kerze.

Ich habe damit einige Erfolge erzielt.

Aber ich muss den schwebenden Auftrag löschen, wenn er nicht innerhalb einer Stunde nach seiner Erteilung umgesetzt wurde.

in einen Marktauftrag umwandeln.

Hier ist mein Code.

int start()
{
double Price=Ask+60*Point;
double SL=Preis-30*Punkt;
double TP=Preis + 15*Punkt;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600);

}

Dieser Code wird erfolgreich kompiliert und getestet.

Aber der Verfallsparameter funktioniert nicht, d.h. Pending Orders, die nicht innerhalb von 1 Stunde in Market Orders umgewandelt werden, werden nicht gelöscht.

Ich habe den Wert 3600 in 3600000.... geändert, aber es passiert nichts.

Ich wäre Ihnen sehr dankbar, wenn Sie mir sagen könnten, wo mein Fehler liegt.

Was hindert Sie daran, die Bedingung für die stunden- und minutengenaue Löschung festzulegen? Die DC entspricht möglicherweise nicht Ihrem Verfallsdatum.
 
borilunad:
Und was hindert Sie daran, eine Bedingung zu stellen, um zur gleichen Stunde und Minute zu löschen? Es kann sein, dass die Maklerfirma Ihr Verfallsdatum nicht einhält.


alsu:

Höchstwahrscheinlich unterstützt der Broker dies nicht. Sicherlich können Sie das tun:



Ich habe ein Terminal Alpari.on der Demo-Konto, das ich manuell das Pendel und legte die Ablaufzeit - 1 Stunde. Alles war in Ordnung.

Ich habe gelesen, dass, wenn der Broker diesen Parameter nicht unterstützt, ein Fehler.... auftreten würde, aber es gibt keinen Fehler.

Die Tests laufen ... aber der Auftrag wird nicht gelöscht.

 
borilunad:
Und was hindert Sie daran, die Bedingung für die Löschung zur gleichen Stunde und Minute zu stellen? Die DC entspricht möglicherweise nicht Ihrem Verfallsdatum.

Wie sieht es mit Stunden- und Minutenangaben aus?

Ich danke Ihnen.

 
solnce600:

Wie wäre es mit stundenweise und minutenweise?

Ich danke Ihnen.



Wodurch soll der Parameter "Ablauf" ersetzt werden?

 
solnce600:

Und bei einer Stunde und einer Minute, wie ist das?

Ich danke Ihnen.

Es ist genau so, wie Sie es geöffnet haben, nur eine Stunde später um 11:00 Uhr. So mache ich es nicht, aber das ändert nichts an der Sache.
 
borilunad:
Genauso, wie Sie ihn geöffnet haben, nur eine Stunde später um 11 Uhr. Ich mache es anders, aber das ändert nichts an der Sache.

Entschuldigen Sie, dass ich so dumm bin, aber ich habe nicht verstanden, ob ich an diesem Parameter etwas ändern muss oder nicht.

Wenn ja, wäre ich Ihnen dankbar, wenn Sie den Ablaufparameter in meinen Code einfügen und die gesamte Zeile in den Text Ihrer Antwort einfügen könnten.

Ich danke Ihnen.

 
solnce600:

Entschuldigen Sie, dass ich so dumm bin, aber ich habe nicht verstanden, ob ich an diesem Parameter etwas ändern muss oder nicht.

Wenn ja, wäre ich Ihnen dankbar, wenn Sie den Ablaufparameter in meinen Code einfügen und die gesamte Zeile in den Text Ihrer Antwort einfügen könnten.

Ich danke Ihnen.



Ich kann die folgende Variante vorschlagen:

if(Stunde()==11 && OrdersTotal()>0)

{

if(OrderSelect(0,SELECT_BY_POS)==true)

{

if(Auftragsart()==OP_BUYSTOP)

{

OrderDelete(OrderTicket());

}

}

}

Und Sie verwenden den Parameter "Ablauf" nicht. Der Nachteil ist, dass beim Handel der Computer mit dem Internet verbunden und das Terminal eingeschaltet sein muss, damit die Position geschlossen werden kann.

Grund der Beschwerde: