Ok teste ich mal, sorry für den Doppelpost.
Code:
//Longsignal ermitteln
if(StrongSignalOnly ==true)
{
if((iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,2)>iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,2)) &&
(iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,1)<iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,1)) &&
(iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MAIN,1)>25) &&
(iClose(NULL,0,1) > iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANA,1)) &&
(iClose(NULL,0,1) > iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANB,1)) &&
(iClose(NULL,0,1)>iClose(NULL,0,Kijun)))
{
LongSignal = true;
}
else LongSignal = false;
}
else if(WeakSignalOnly == true)
{
if((iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,2)>iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,2)) &&
(iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,1)<iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,1)) &&
(iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MAIN,1)>25) &&
(iClose(NULL,0,1) < iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANA,1)) &&
(iClose(NULL,0,1) < iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANB,1)) &&
(iClose(NULL,0,1)>iClose(NULL,0,Kijun)))
{
LongSignal = true;
}
else LongSignal = false;
}
else if(StrongSignalOnly == false && WeakSignalOnly ==false)
{
if((iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,2)>iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,2)) &&
(iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,1)<iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,1)) &&
(iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MAIN,1)>25) &&
(iClose(NULL,0,1)>iClose(NULL,0,Kijun)))
{
LongSignal = true;
}
else LongSignal = false;
}
//Shortsignal ermitteln
if(StrongSignalOnly ==true)
{
if((iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,2)<iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,2)) &&
(iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,1)>iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,1)) &&
(iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MAIN,1)>25) &&
(iClose(NULL,0,1) < iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANA,1)) &&
(iClose(NULL,0,1) < iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANB,1)) &&
(iClose(NULL,0,1)<iClose(NULL,0,Kijun)))
{
ShortSignal = true;
}
else ShortSignal = false;
}
else if(WeakSignalOnly ==true)
{
if((iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,2)<iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,2)) &&
(iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,1)>iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,1)) &&
(iADX(NULL,0,ADXPeriod,PRICE_CLOSE,MODE_MAIN,1)>25) &&
(iClose(NULL,0,1) > iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANA,1)) &&
(iClose(NULL,0,1) > iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_SENKOUSPANB,1)) &&
(iClose(NULL,0,1)<iClose(NULL,0,Kijun)))
{
ShortSignal = true;
}
else ShortSignal = false;
}
else if(StrongSignalOnly == false && WeakSignalOnly ==false)
{
if((iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,2)<iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,2)) &&
(iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_KIJUNSEN,1)>iIchimoku(Symbol(),0,Tenkan,Kijun,SenkouSpan_B,MODE_TENKANSEN,1)) &&
(iADX(NULL,0,Kijun,PRICE_CLOSE,MODE_MAIN,1)>25) &&
(iClose(NULL,0,1)<iClose(NULL,0,Kijun)))
{
ShortSignal = true;
}
else ShortSignal = false;
}
//Ordermanagement
//Überprüfen,ob offene Order vorhanden sind
int OpenOrders = 0;
int AnzahlOrders = OrdersTotal();
int i;
for(i=0;i<AnzahlOrders;i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol() == Symbol())
{
if(OrderMagicNumber()== MagicNumber)
{OpenOrders++;
}
}
}
//Order aufgeben
int ExpirationTime = TimeCurrent()+ ((Period()*60)*3);
//Longorder aufgeben
double LongEntry = iHigh(NULL,0,1) + (SlippageFaktor);
if(OpenOrders == 0 && LongSignal == true && IsNewBar == true && TradingTime ==true)
{
LongTicket = OrderSend(Symbol(),OP_BUYSTOP,Lots,LongEntry,5,0,0,"Tenkan Kijun Cross Buy Order opened ",MagicNumber,0,Green);
if(LongTicket<0)
{
Alert("Tenkan Kijun Cross Placing Buy Order failed",Underlying, MagicNumber);
}
else Alert(OrderTicket());
}
// ShortOrder aufgeben
double ShortEntry = iLow(NULL,0,1) - (SlippageFaktor);
if(OpenOrders == 0 && ShortSignal == true && IsNewBar == true && TradingTime == true)
{
ShortTicket = OrderSend(Symbol(),OP_SELLSTOP,Lots,ShortEntry,5,0,0,"Tenkan Kijun Cross Sell Order opened ",MagicNumber,0,Red);
if(ShortTicket<0)
{
Alert("Tenkan Kijun Cross Placing Sell Order failed", Underlying, MagicNumber);
}
else Alert(OrderTicket());
}
//SL und TP hinzufügen
double SL = iATR(NULL,0,ADXPeriod,0)*SLFaktor;
double TP =iATR(NULL,0,ADXPeriod,0)*TPFaktor;
double SLShort = NormalizeDouble(OrderOpenPrice() + SL,Digits);
double TPShort = NormalizeDouble(OrderOpenPrice() - TP,Digits);
double SLLong = NormalizeDouble(OrderOpenPrice() - SL,Digits);
double TPLong = NormalizeDouble(OrderOpenPrice() + TP,Digits);
if(OrderSelect(ShortTicket,SELECT_BY_TICKET)== true)
{
if(OrderCloseTime()== 0 && OrderStopLoss()== 0 && OrderTakeProfit()== 0)
{
ShortOrderModified = OrderModify(OrderTicket(),OrderOpenPrice(),SLShort,TPShort,ExpirationTime);
if(ShortOrderModified ==true)
{
Alert(OrderTicket(),"Short Order modified", "IKH Tenkan Kijun Cross");
}
else Alert("Short Order modification failed","IKH Tenkan Kijun Cross", Underlying, GetLastError());
}
}
if(OrderSelect(LongTicket,SELECT_BY_TICKET)== true)
{
if(OrderCloseTime == 0 && OrderStopLoss() == 0 && OrderTakeProfit() ==0)
{
LongOrderModified = OrderModify(OrderTicket(),OrderOpenPrice(),SLLong,TPLong,ExpirationTime);
if(LongOrderModified ==true)
{
Alert(OrderTicket(),"Long Order modified", "IKH Tenkan Kijun Cross");
}
else Alert("Long Order modification failed", "IKH Tenkan Kijun Cross", Underlying, GetLastError());
}
}
//Tagesgültigkeit der Order
// Scahuen ob Order ausgeführt wurde
for(i=0;i<AnzahlOrders;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(Symbol()==OrderSymbol() && OrderMagicNumber()==MagicNumber)
{
if(OrderType()== OP_BUY || OrderType()== OP_SELL)
{
ausgefuehrt=True;
}
else ausgefuehrt=False;
}
}
}
//Pending Order am Tagesende löschen
for(i=0;i<AnzahlOrders;i++)
{
if(OpenOrders >0 && TimeHour(TimeCurrent())==EndTradingHour && TimeMinute(TimeCurrent())==EndTradingMinute && ausgefuehrt==False)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(Symbol()==OrderSymbol() && OrderMagicNumber()==MagicNumber)
{
OrderDelete(OrderTicket(),0);
}
}
}
}
//Ausgeführte Long Order am Tagesende schließen
for(i=0;i<AnzahlOrders;i++)
{
if(OpenOrders >0 && TimeHour(TimeCurrent())==EndTradingHour && TimeMinute(TimeCurrent())==EndTradingMinute && ausgefuehrt==True)
{
if(OrderSelect(LongTicket,SELECT_BY_TICKET,MODE_TRADES))
{
if(Symbol()==OrderSymbol() && OrderMagicNumber()==MagicNumber)
{
OrderClose(LongTicket,OrderLots(),Bid,5);
}
}
}
}
//Ausgeführte Short Order am Tagesende schließen
for(i=0;i<AnzahlOrders;i++)
{
if(OpenOrders >0 && TimeHour(TimeCurrent())==EndTradingHour && TimeMinute(TimeCurrent())==EndTradingMinute && ausgefuehrt==True)
{
if(OrderSelect(ShortTicket,SELECT_BY_TICKET,MODE_TRADES))
{
if(Symbol()==OrderSymbol() && OrderMagicNumber()==MagicNumber)
{
OrderClose(ShortTicket,OrderLots(),Ask,5);
}
}
}
}
//Ticketnummern auf 0 zurücksetzen
if(OrderSelect(LongTicket,SELECT_BY_TICKET)==true)
{
if(OrderTicket()>0 && OrderCloseTime()>0) LongTicket =0;
}
if(OrderSelect(ShortTicket,SELECT_BY_TICKET)==true)
{
if(OrderTicket()>0 && OrderCloseTime()>0) ShortTicket =0;
}
}