Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 30.09.14
Mole696 Mole696 ist offline
Neues Mitglied
 
Registriert seit: Jan 2014
Beiträge: 8
Mole696 befindet sich auf einem aufstrebenden Ast
Standard Order Schließung && CheckOncePerBar

Guten Tag werte Programmierer/-innen

Seit einiger Zeit studiere ich Andrew R. Youngs Buch "EA Programming" und leider funktionierte schon sein erstes Besipiel eines EMA Crossover Systems nicht Ich stattete die Orders mit SL und TP aus, und nahm Teile raus dann lief es.

Nun bin ich an meinem eigenen System dran und habe Probleme mit der Order Schließung. Weil er macht sie nicht.
Bei der OrderSelect Funktion bekomme ich den Error: "unknow ticket 118 for OrderClose function"
Doch bei OrderSelect müsste ich ja um die Ticket Nummer zu erhalten, die Order Richtung eingeben?
Außerdem bekomme ich eine Warnung "return value of OrderSelect should be checked". Wäre dies return(true)? Oder Ticket?

Code:
OrderSelect(BuyTicket,SELECT_BY_TICKET);
     
      if(PreviousCloseM5-1<EMA12 && OrderType() == OP_BUY)
        {
            double BuyCloseLots = OrderLots();
            double BuyClosePrice = Bid;
            
            bool Closed = OrderClose(BuyTicket,BuyCloseLots,BuyClosePrice,Slippage,Red);

Mein zweites Prob. ist dass ich nur einmal per Bar einen Check haben will, weil sonst eröffnet er 4-500 Positionen. Das nicht so toll.
Dies ist auch aus Herr Youngs Buch. Allerdings meldet der Kompiler, dass es undeclarierte Variablen gibt, was aber nicht der Wahrheit entspricht.
Dieses Problem hatte ich schonmal. Dann habe ich ein neues Programm aufgemacht, den ganzen Code rüber kopiert und alles hat funktioniert

Code:
extern bool CheckOncePerBar == true;
//Globale Variabel
datetime = CurrentTimeStamp;

//Init function
int init()
   {
      CurrentTimeStamp = Time[0];
      return(0);
   }
int start()
{
if(CheckOncePerBar == true)
         {
            int BarShift = 1;
            if(CurrentTimeStamp != Time[0])
              {
                  CurrentTimeStamp = Time[0];
                  bool NewBar = true;
              }
            else NewBar = false;
          }
      else
         {
            NewBar = true;
            BarShift = 0;
         }   

         if(NewBar == true)
      { 
            // weiter führender Code zur Order Ausführung
}
Naja vielleicht erkennt es ja jemand. Ggf. schreibe ich den ganzen Code rein falls notwendig.

MfG und bestem Dank
Mole696