Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 12.03.18
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Post Code Korrekturlesen: EA + manuelles Trading

Wäre jemand bitte so nett, meinen Code Korrektur zu lesen.

Ich hatte meinen EA geladen, der war erst mal inaktiv, also eröffnete ich manuell eine Position. Die lief immer noch, als eigentlich der EA das Entry Signal erhielt (und da ich gut im Plus war, wollte ich die Position auch nicht schließen). Der EA reagierte aber nicht. Als ich meine Position schloß, machte der EA seine Positionen auf - dumm gelaufen, viiieel zu spät um den Profit zu erreichen, den ich haben wollte. Schuld daran war folgende Zeile (immer wieder bin ich dieser Zeile begegnet):
Code:
if( OrdersTotal()==0 ) // && Signal, dann eröffne Position
Logisch, OrdersTotal bezieht sich auf den gesamten Account, und da ich drin war, war die Anzahl ==1 und der Entry verboten. Ich habe das umgeschrieben und bitte Euch mal einen Blick auf die Struktur zu werfen, ob das jetzt mit manuellem Trading vereinbar ist - oder ich noch irgendwas übersehen habe.
Code:
//====================== TRADING ===========================================
// !!! if OrdersTotal()==0 interferes with manual trading at the same time
   for(n=0; n<OrdersTotal(); n++)
   {  if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES))
      {  
//====================== no open orders by this EA =========================
         if     (   OrderMagicNumber()==EANo   // this EAs number
                 && OrderComment()==EAname     // this EAs comment
                 && OrderSymbol()==Symbol()    // this market
                 && OrderType()!=OP_BUY        // no buy order from EA
                 && OrderType()!=OP_SELL       // no sell order from EA
                )
         { 
            // wait for buy/sell signal, then action
         }  // == end no open positions by this EA
//====================== some kind of open order ===========================
         // ===== open L running
         else if(   OrderMagicNumber()==EANo   // this EAs number
                 && OrderComment()==EAname     // this EAs comment
                 && OrderSymbol()==Symbol()    // this market
                 && OrderType()==OP_BUY        // long orders
                )
         {
            // manage open L running
         }  // == end open L running
         //===== open S running
         else if(   OrderMagicNumber()==EANo   // this EAs number
                 && OrderComment()==EAname     // this EAs comment
                 && OrderSymbol()==Symbol()    // this market
                 && OrderType()==OP_SELL       // short orders
                )
         {
            // manage open S running
         }  // == end open S running
      
      }  // == end OrderSelect(n,SELECT_BY_POS,MODE_TRADES)
   }  // == end for(n=0; n<OrdersTotal(); n++)
Vielen Dank. AVT