du verwendest zu oft return(0).
Dadurch wird nicht der ganze Code durchlaufen.
Beim schliessen der Order hast du ein if(OrderType()<=OP_SELL...
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
}
}