Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 12.07.17
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Code:
//simple Test Order die einfach platziert bei Neuer Candle platziert werden soll => und Streichung der vorherigen StopOrder
if(orderset=true)
{
   if (0<1) //Bedingung Hauptsache es geht die Order raus
   {
      OrderNumber = OrderSend(Symbol(), OP_BUYSTOP,0.1,High[1]+6, 5,12500, 0,"Test",202,TimeCurrent()+660,Blue);
      BarsSinceEntry=TimeCurrent();
   }
}
1. Oben musst du 2 Gleichheitszeichen setzen (orderset == true), oder einfach (orderset). So wie du es hast, weist du der Variablen den Wert "true" zu.
2. Erst willst du pro EA nur eine Order und jetzt setzt du immer eine neue, wenn orderset == true, also wenn schon eine Order von diesem EA vorhanden ist?
3. Die zweite If-Bedingung ist sinnlos. Wieso hast du sie drinne?
4. Wenn du als Preis den Höchstkurs mit 6 addierst, kann es nicht vernünftig werden. Rate mal was passiert, wenn du zu einer Gleitpunktzahl 6 addierst (z.B. 1.12345 + 6).

Code:
if (BarsSinceEntry > 0 && TimeCurrent() > BarsSinceEntry + PeriodSeconds(PERIOD_CURRENT))
Übersetztes, freies Beispiel:
1000 > 0 && 1060 > 1060
Na, wo liegt der Fehler? Warum 1060 > 1060? Weil du in der if davor (if(orderset=true)) immer BarsSinceEntry auf TimeCurrent() setzt.
Sofern zwischen diesen beiden Codeblöcken nicht mindestens 1 Sekunde vergangen ist, so ist TimeCurrent() nie größer als BarsSinceEntry.
Außerdem erübrigt sich an paar Stellen auch eine Abfrage, weil du in den ganzen Codeblock ja erst mit der nächsten Kerze kommst.

Code:
bool res = OrderDelete(OrderTicket());
if (res) BarsSinceEntry = 0;
break;
Print(GetLastError());
GetLastError() wird hier nie aufgerufen, da du jedesmal vorher mit break abbrichst.

Geändert von next user (12.07.17 um 14:52 Uhr)