Ich kann den Fehler einfach nicht finden, warum der EA keine Short's eingeht,
vielleicht kann mal ein anderer rüber schauen wo der Fehler ist.
Code:
//+------------------------------------------------------------------+
//| MA Cross.mq4 |
//| Marlak |
//| |
//+------------------------------------------------------------------+
#property copyright "Marlak"
#property link ""
#property version "1.00"
#property strict
extern int ATR=14, Gleitener_Durchschnitt=50;
extern double Standardhandelsgroesse=10, Multiplikator=2.618, CRV=3;
string Signal;
double risk1, Kursziel, gewinn, Lots, Stopkurs, Kauf, OrderProfit;
int offeneOrders, anzahlOrders, zaehler, ticket;
int Magicnummer= 001;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//Variablen
double ma = iMA(NULL,5,Gleitener_Durchschnitt,0,MODE_SMA,PRICE_CLOSE,0);
double malang = iMA(NULL,240,Gleitener_Durchschnitt,0,MODE_SMA,PRICE_CLOSE,0);
if (Close[1] > ma && ma > malang){Signal="LONG";}
if (Close[1] < ma && ma < malang){Signal="Short";}
Comment ("Signal: "+Signal);
//Einstieg;Ziel;Stop
risk1 = iATR(NULL,5,ATR,0)*Multiplikator;
gewinn = risk1* CRV;
//Risikobewertung
if (risk1 >50) {Lots=0;}
if (risk1 <=50) {Lots=Standardhandelsgroesse*0.1;}
if (risk1 <=40) {Lots=Standardhandelsgroesse*0.3;}
if (risk1 <=30) {Lots=Standardhandelsgroesse*0.5;}
if (risk1 <=20) {Lots=Standardhandelsgroesse*0.7;}
if (risk1 <=10) {Lots=Standardhandelsgroesse*0.9;}
if (Signal == "LONG")
{Kauf = Bid;
Kursziel = Kauf+gewinn;
Stopkurs = Kauf-risk1;}
if (Signal == "Short")
{Kauf = Ask;
Kursziel = Kauf-gewinn;
Stopkurs = Kauf+risk1;}
//Prüfen ob Orders oder Positionen im Markt liegen
offeneOrders = 0;
anzahlOrders = OrdersTotal();
for(zaehler=0; zaehler<anzahlOrders;zaehler++)
{if(OrderSelect(zaehler,SELECT_BY_POS,MODE_TRADES) )
{if(OrderSymbol()==Symbol())
{if(OrderMagicNumber()==Magicnummer) offeneOrders++;}}}
//Order aufgeben
if (Kauf>0 && offeneOrders == 0)
{if (Signal == "LONG")
{ticket=OrderSend(Symbol(),OP_BUY,Lots,Kauf,30,Stopkurs,Kursziel,"MA Cross",Magicnummer,clrBlueViolet);
if (ticket>0)
{if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Profit: ",OrderProfit);}
else Print("fehlerhaft Entry: ", GetLastError(), Kauf);}}
return;
{if (Signal == "Short")
{ticket=OrderSend(Symbol(),OP_SELL,Lots,Kauf,30,Stopkurs,Kursziel,"MA Cross",Magicnummer,clrBlueViolet);
if (ticket>0)
{if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Profit: ",OrderProfit);}
else Print("fehlerhaft Entry: ", GetLastError(), Kauf);}}
return;
return;
}
//+------------------------------------------------------------------+