Vielen Dank für Deine Mühe Traderdoc, ehrlich!
Funktioniert aber nicht. Habe da bestimmt im Code einen Bock. So viel gelesen, aber immer noch am Anfang.
Habe den ganzen Code mal reingestellt. Ausgangsbasis ist von MindfulFX.
Habe da aber schon ganz schön rum gefurcht.
PHP-Code:
//+------------------------------------------------------------------+
//| Dirk Rohmann |
//| copyright 2015 |
//| |
//+------------------------------------------------------------------+
#property copyright "Dirk Rohmann"
#property link ""
//Globale Externe Variablen
extern int MA_lang = 17;
extern int MA_kurz = 1;
extern int MA_Mittel = 26;
extern double HandelsLots = 0.01,SL_prozent = 0.25, TP_prozent = 0.50;
extern int MagicNummer = 12345;
extern int LongOrder,ShortOrder;
//Globale Variablen
datetime PeriodenStartZeit;
bool NeuePeriodeBegonnen,LongSignal,ShortSignal;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
/////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------Überprüfen ob neuer Periodenbeginn vorliegt-----------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////
if(PeriodenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriodenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;
////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------Marktdaten ermitteln-----------------------------------//
////////////////////////////////////////////////////////////////////////////////////////////////
double MAlang = iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,1);
double MAlangVorperiode = iMA(NULL,0,MA_lang,0,MODE_SMA,PRICE_CLOSE,2);
double MAkurz = iMA(NULL,0,MA_kurz,0,MODE_SMA,PRICE_CLOSE,1);
double MAkurzVorperiode = iMA(NULL,0,MA_kurz,0,MODE_SMA,PRICE_CLOSE,2);
double MAmittel = iMA(NULL,0,MA_Mittel,0,MODE_SMA,PRICE_CLOSE,1);
double MAmittelVorperiode = iMA(NULL,0,MA_Mittel,0,MODE_SMA,PRICE_CLOSE,2);
double StochSchliessenLongK = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
double StochSchliessenLongD = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL,1);
double StochSchliessenShortK = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_MAIN,1);
double StochSchliessenShortD = iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL,1);
/////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------Handelssignale ermitteln---------------------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////
if(NeuePeriodeBegonnen == true)
{
//Buy Signal
if(MAkurz>MAlang && MAkurzVorperiode<=MAlangVorperiode)
{
LongSignal = true;
}
else LongSignal =false;
//Sell Signal
if(MAkurz<MAlang && MAkurzVorperiode>=MAlangVorperiode)
{
ShortSignal = true;
}
else ShortSignal = false;
}
else
{
LongSignal =false;
ShortSignal = false;
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------Long Signale umsetzen-----------------------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////
if(LongSignal == true)
{
//Evtl. Short Order schließen
if(ShortOrder>0)
{
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
bool ShortOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
if (ShortOrderGeclosed==true) ShortOrder=0;
}
}
//Long Order eröffnen
while(LongOrder<=0)
{
LongOrder = OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,10,0,0,"MAXing LONG",MagicNummer,0,Green);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------Short Signale umsetzen-----------------------------------//
/////////////////////////////////////////////////////////////////////////////////////////////////
if(ShortSignal == true)
{
//Evtl. Long Order schließen
if(LongOrder>0)
{
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
bool LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
if (LongOrderGeclosed==true) LongOrder=0;
}
}
//Short Order eröffnen
while(ShortOrder<=0)
{
ShortOrder = OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,10,0,0,"MAXing SHORT",MagicNummer,0,Red);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------Stopp Loss nach MA-------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------------------Stopp Loss nach Pips------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////
//SL Long Deals Setzen
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
double StoppLoss= NormalizeDouble(OrderOpenPrice()/(1+(SL_prozent/100)),Digits);
bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
}
}
//SL Short Deals Setzen
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
StoppLoss= NormalizeDouble(OrderOpenPrice()*(1+(SL_prozent/100)),Digits);
OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------Take Profit nach Stochastic setzen-----------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////
//TakeProfit Long - Stoch
if((iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1) && iStochastic(NULL,0,8,3,3, MODE_SMA, 0, MODE_SIGNAL, 1) > 80))
//if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
{
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Ask,10,Blue);
if (LongOrderGeclosed==true) LongOrder=0;
}
}
}
if((iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1) && iStochastic(NULL,0,8,3,3, MODE_SMA, 0, MODE_SIGNAL, 1) < 20))
//if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
{
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderCloseTime()==0 && OrderStopLoss()==0)
{
ShortOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
if (ShortOrderGeclosed==true) ShortOrder=0;
}
}
}
//TakeProfit Long - Stoch
//if(MAkurz>(iStochastic(NULL,0, 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1)>80))
//if((iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,0)>=80) > (iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)))//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
// {
// if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
// {
// if(OrderCloseTime()==0 && OrderStopLoss()==0)
// {
// LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Ask,10,Blue);
// if (LongOrderGeclosed==true) LongOrder=0;
// }
//}
//}
//TP Short Deals Setzen
// if(MAkurz<(iStochastic(NULL, Period(), 8, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1)<20))
// if(iStochastic(NULL,0,8,3,3,MODE_SMA,0,MODE_LOW,1)<=10)//iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_LOW,0))return(0);
// {
// if(ShortOrder>0)
// {
// if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
// {
// ShortOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Bid,10,Blue);
// if (ShortOrderGeclosed==true) ShortOrder=0;
// }
//}
//}
//////////////////////////////////////////////////////////////////////////////////////////////////
//-----------------------------------Aufträge rücksetzen----------------------------------------//
//////////////////////////////////////////////////////////////////////////////////////////////////
//Ticketnummern nach Closing auf 0 zurücksetzen
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
if(OrderTicket()>0 && OrderCloseTime()>0) LongOrder=0;
}
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
if(OrderTicket()>0 && OrderCloseTime()>0) ShortOrder=0;
}
//----
return(0);
}
//+------------------------------------------------------------------+
|