Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 10.03.13
naranjoe naranjoe ist offline
Elite Mitglied
 
Registriert seit: Jun 2010
Ort: Trier
Beiträge: 116
naranjoe befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

du verwendest zu oft return(0).
Dadurch wird nicht der ganze Code durchlaufen.
Beim schliessen der Order hast du ein if(OrderType()<=OP_SELL...
Das sollte heissen if(OrderType()==OP_SELL...

So, habe dir das mal abgeändert und Struktur reingebracht:
Code:
// MACD Seeger.mq4

//extern double TakeProfit = 10;
extern double Lots = 0.1;
//extern double Stop = 0;
//extern double TrailingStop = 20;
extern double A = 13;
extern double B = 26;
extern double C = 9;
extern double drehen = 0;

// ----------------------------------------------------
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
int cnt, ticket, total;

if(Bars<100)
{
Print("weniger als 100 Kerzen");
return(0);
}

MacdCurrent=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,A,B,C,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,0,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,0,0,MODE_EMA,PRICE_CLOSE,1);
//-------------------------------------------------------------------------------------
total=OrdersTotal();
if(total<1)
{
 if(AccountFreeMargin()<(1000*Lots))
   {
   Print("Oh Gott, wir haben keine freie Margin mehr = ", AccountFreeMargin());
   return(0);
   }
 if (SignalPrevious<SignalCurrent) //(MacdCurrent>SignalCurrent)
   {
    ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"m acd sample",16384,0,Green);
    if(ticket>0)
       {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Kauforder eröffnet : ",OrderOpenPrice());
        }
    else Print("Fehler bei Kauforder-Eröffnung : ",GetLastError());
    return(0);
   }
 if (SignalPrevious>SignalCurrent) //(MacdCurrent<SignalCurrent)
   {
    ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0," macd sample",16384,0,Red);
    if(ticket>0)
       {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Verkaufsorder eröffnet : ",OrderOpenPrice());
       }
    else Print("Fehler bei Verkaufsorder-Eröffnung : ",GetLastError());
    return(0);
    }
}
//---------------------------Position löschen--(vielleicht mal drehen)------------------------
 if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && SignalPrevious<SignalCurrent)
   {
    OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // close position
    return(0); // exit
   }

 if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && SignalPrevious>SignalCurrent)
   {
    OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // close position
    return(0); // exit
   }
}
Das ganze Teil ist allerdings sehr rudimentär!

Gruß
naranjoe