Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 01.10.14
Mole696 Mole696 ist offline
Neues Mitglied
 
Registriert seit: Jan 2014
Beiträge: 8
Mole696 befindet sich auf einem aufstrebenden Ast
Standard

Danke Dir für die rasche Antwort.

die Variable BuyTicket ist eine Globale Variable.

Nun habe ich kurz den ganzen Code zwischen
if(Time[0] != OldBar){
...
OldBar = Time[0];
}

reingesetzt. Er eröffnet leider aber auch Positionen die in der Definition nicht vorhanden sind. Kurz zu den Regeln des Systems:
Wenn der EMA 12 über der EMA 100 ist und der Preis über dem EMA12 war und zurückkommt unter die EMA 12 kommt und wieder nach oben durchgeht wird eine Buy Order eröffnet. Ich will eine Kerze mit Schlusskurs unter der EMA 12 und die darauffolgende über der EMA 12. Sobald die Kerze über der EMA 12 schließt soll eine Position eröffnet werden.

Ich kopiere nun kurz den ganzen Code rein. Evtl. kannst es kurz in ein leeres Prorgamm ziehen oder mir sagen ob ich das so richtig gemacht hab?

Habe nun allerdings noch SL und TP drinnen, soll aber eigentlich durch close unter der EMA 12 beendet werden. Z.B. am 1. August wäre da im DAX in short Richtung 150 Pkt. drinnen gewesen auf M5.

Code:
extern double FixedLotSize = 1;
extern double StopLoss = 10;
extern double TakeProfit = 26;

extern int MagicNumber = 125128;
extern int Slippage = 1;

extern int FastEMA = 12;
extern int SlowEMA = 100;



// Globale variables
int BuyTicket;
int SellTicket;

int OldBar;


//Init function

   

// start function
int start()
{
         
      //EMA zuweisung
      double EMA12 = iMA(Symbol(),0,FastEMA,0,MODE_EMA,PRICE_TYPICAL,0);            
      double EMA100 = iMA(Symbol(),0,SlowEMA,0,MODE_EMA,PRICE_TYPICAL,0);
      
    
      if(Time[0] != OldBar)
      {
      // calculating StopLoss & TakeProfit
      double BuyStopLoss = Ask - (StopLoss * 1);
      double BuyTakeProfit = Ask + (TakeProfit * 1);
      
      // Kerzenbestimmung
      double PrePreviousCloseM5 = iClose(Symbol(),PERIOD_M5,2);      //close des vorletzten Bars             
      double PreviousCloseM5 = iClose(Symbol(),PERIOD_M5,1);       //close des letzten Bars                         
      double PreviousOpenM5 = iOpen(Symbol(),PERIOD_M5,1);         //open des letzten Bars                           
     
      
      // Buy Order Bedingung und anschließende Eröffnung
      if(EMA12>EMA100 && (PrePreviousCloseM5-1)<EMA12 && PreviousCloseM5>EMA12)
        {
         BuyTicket = OrderSend(Symbol(),OP_BUY,FixedLotSize,Ask,Slippage,BuyStopLoss,BuyTakeProfit,"Buy Order opened",MagicNumber,0,Green);
         
         if(BuyTicket>0)
           {
            if(OrderSelect(BuyTicket,SELECT_BY_TICKET,MODE_TRADES))
            Print("Kauforder eröffnet : ",OrderOpenPrice());
           }
           else Print("Fehler bei der Kauforder-Eröffnung : ",GetLastError());
           return(0);
         }
         
        // BuyOrder Schließung durch Close under EMA 12
     
      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,DarkOrange);
                    
        }  
     
       // SellOrder Bedingung und Eröffnung
  
      double SellStopLoss = Bid + StopLoss;
      double SellTakeProfit = Bid - TakeProfit;
      
      if(EMA12<EMA100 && (PrePreviousCloseM5+1)>EMA12 && PreviousCloseM5<EMA12)
        {
         SellTicket = OrderSend(Symbol(),OP_SELL,FixedLotSize,Bid,Slippage,SellStopLoss,SellTakeProfit,"Sell Order opened",MagicNumber,0,Red);
         
         if(SellTicket>0)
           {
             if(OrderSelect(SellTicket,SELECT_BY_TICKET,MODE_TRADES))
             Print("Sellorder eröffnet : ",OrderOpenPrice());
           }
           else Print("Fehler bei der Sellorder-Eröffnung : ",GetLastError());
           return(0);
         }
      
      // SellOrder Schließung durch Close über EMA 12
      
      OrderSelect(SellTicket,SELECT_BY_TICKET,MODE_TRADES);
     
      if(PreviousCloseM5+1>EMA12 && OrderType() == OP_SELL && OrderCloseTime() == 0)
        {  
      
            double SellCloseLots = OrderLots();
            double SellClosePrice = Ask;
            
            
            bool Closed = OrderClose(SellTicket,SellCloseLots,SellClosePrice,Slippage,DarkOrange);   
                    
        }  
                   
         OldBar=Time[0];
       }
       
       
       
       

                       
                                                                                                 
       return(0);
       
}
Vielen Dank nochmals.
Mole696