Einzelnen Beitrag anzeigen
  #17 (permalink)  
Alt 23.06.15
saro2018 saro2018 ist offline
Neues Mitglied
 
Registriert seit: Mar 2015
Ort: Berlin
Beiträge: 28
saro2018 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Code:
int ticket;
double closedProfit;
int lastorder;
int hstTotal = OrdersHistoryTotal();

for(int i = hstTotal -1; i >= 0; i--) { 
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == mymagicnumber) {
         closedProfit = OrderProfit();
         lastorder = OrderType();
         break;
      }
   }
}

if (closedProfit>=0) {
   //[...my conditions]
   //[am ende der Loop]
}

if (closedProfit < 0) {
   if(total < 1) {          //was soll total sein???
      if (lastorder == 0) {
         ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2, StopLoss, TakeProfit, NULL, mymagicnumber);
      }
      if (lastorder == 1) {
         ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2, StopLoss, TakeProfit, NULL, mymagicnumber);
      }
   } 
}
Auf die Schnelle hingeschrieben, ohne zu testen.

traderdoc
Hallo, vielen Dank für deine schnelle Antwort. Ich soeben den von dir umgeänderten Code bei mir im EA eingefügt. Allerdings ist das Problem immernoch vorhanden. Der EA verkauft bzw. kauft leider immernoch nicht sobald ein Trade mit Verlust geschlossen wurde. Woran könnte das liegen?

Gruß Aron

Hier nochmal als Anhang der Teil meines EAs, wo die Bedingung drin stehen:
Code:
 
 
double mymagicnumber = 123456;


double closedProfit;
int lastorder;
int hstTotal = OrdersHistoryTotal();

for(int i = hstTotal -1; i >= 0; i--) { 
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == mymagicnumber) {
         closedProfit = OrderProfit();
         lastorder = OrderType();
         break;
      }
   }
}
  
//---- detect trading signal ---------------------------------------------------------------+
double close = NormalizeDouble(iClose(NULL,0,0),digits);
double open  = NormalizeDouble(iOpen(NULL,0,0),digits); 
double o  =  NormalizeDouble(Upper,digits);
double u =  NormalizeDouble(Lower,digits);

total=OrdersTotal();
if(total<1)
{

static  datetime    tradingAllowed;
int newCount = HistoryTotal();  static  int prevCount;
if (newCount != prevCount){                 prevCount = newCount;
    datetime lastClose;
    for(int pos=newCount-1; pos >= 1; pos--) if (
        OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY)  
    &&  OrderCloseTime()    > lastClose               
    &&  OrderTicket()  == ticket           
    &&  OrderSymbol()       == Symbol()                 
    &&  OrderType()         <= OP_SELL){   
        lastClose = OrderCloseTime();
    }
    datetime lastClosePlus24Hrs = lastClose + 2* 3600;
    tradingAllowed = lastClosePlus24Hrs;
}
if (TimeCurrent() <= tradingAllowed) return(0);


 if(AccountFreeMargin()<(1000*Lots))
 {Print("We have no money. Free Margin = ", AccountFreeMargin());
 return(0);
 }
 //check for long position
if (closedProfit>=0)
{  
if (iOpen(NULL,0,0) > u && iClose(NULL,0,0) < u)
   {
        RefreshRates();                        // Refresh rates
       
         SL=Bid + main_sl;     // Calculating SL of opened
         TP=Bid - main_tp;   // Calculating TP of opened
         
        ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,NULL,123456); 
        if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
        }
        else Print("Error opening BUY order : ",GetLastError());
        return(0);
        }                           // Criterion for opening Sell 

if (iOpen(NULL,0,0) < o  && iClose(NULL,0,0) > o)
   {
        RefreshRates();                        // Refresh rates
             
         SL=Ask - main_sl;     // Calculating SL of opened
         TP=Ask + main_tp;
         
       ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,NULL,123456);  
       if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
        }
        else Print("Error opening SELL order : ",GetLastError());
        return(0);
        } 
 }       

// Criterion for opening Sell 

if (closedProfit < 0) {
  // if(total < 1) {          //was soll total sein???
      if (lastorder == 0) {
         ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2, StopLoss, TakeProfit, NULL, mymagicnumber);
      }
      if (lastorder == 1) {
         ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2, StopLoss, TakeProfit, NULL, mymagicnumber);
      }
   } 

 
        
        

return(0);
      }






int maxDuration = 20 * 60; // 20 minutes
for(int posi = OrdersTotal()-1; posi >= 0 ; posi--) if (
    OrderSelect(posi, SELECT_BY_POS)            // Only my orders w/
&&  OrderMagicNumber() == 123456        // my magic number
&&  OrderSymbol()      == Symbol() ){               // and period and symbol
    int duration = TimeCurrent() - OrderOpenTime();
    if (duration >= maxDuration)
    OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(),
                2 * my_point);    
}


return(0);
}