Ideengeber – George F.Peskov, Programmierung des MQL5-Codes – barabashkakvn.
Das Trading-System basiert auf dem Schnittpunkt von zwei gleitenden Durchschnitten (iMA). Der Stop-Loss wird automatisch anhand des ATR-Wertes festgelegt. Bei jeder Öffnung oder Schließung einer Position wird eine E-Mail-Benachrichtigung versendet. Die Parameter können durch Backtesting ausgewählt werden.
Werte der Indikatoren abrufen
Hier erfährst du, wie du die Werte der Indikatoren für die erste und zweite Kerze abruft:
//--- Gleitenden Durchschnitt abrufen
mas=iMAGet(handle_iMA1,1); // langer gleitender Durchschnitt 12
maf=iMAGet(handle_iMA2,1); // kurzer gleitender Durchschnitt 4
mas_p=iMAGet(handle_iMA1,2); // langer gleitender Durchschnitt 12
maf_p=iMAGet(handle_iMA2,2); // kurzer gleitender Durchschnitt 4
Atr=iATRGet(0);
mas=iMAGet(handle_iMA1,1); // langer gleitender Durchschnitt 12
maf=iMAGet(handle_iMA2,1); // kurzer gleitender Durchschnitt 4
mas_p=iMAGet(handle_iMA1,2); // langer gleitender Durchschnitt 12
maf_p=iMAGet(handle_iMA2,2); // kurzer gleitender Durchschnitt 4
Atr=iATRGet(0);
Verkaufskriterien überprüfen
Hier sind die Bedingungen, um einen Verkauf auszulösen:
//--- Bedingung für den Verkauf
if(maf<mas && maf_p>=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operation SELL by "+Symbol()+"";
sBodyLetter="Deal Sell by "+Symbol()+" at "+DoubleToString(m_symbol.Bid(),Digits())+
", und setze stop/loss auf "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
if(maf<mas && maf_p>=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operation SELL by "+Symbol()+"";
sBodyLetter="Deal Sell by "+Symbol()+" at "+DoubleToString(m_symbol.Bid(),Digits())+
", und setze stop/loss auf "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
Kaufkriterien überprüfen
Hier sind die Bedingungen, um einen Kauf auszulösen:
//--- Bedingung für den Kauf
if(maf>mas && maf_p<=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operation BUY at "+Symbol()+"";
sBodyLetter="Deal Buy at "+Symbol()+" for "+DoubleToString(m_symbol.Ask(),Digits())+
", und setze stop/loss auf "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
if(maf>mas && maf_p<=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operation BUY at "+Symbol()+"";
sBodyLetter="Deal Buy at "+Symbol()+" for "+DoubleToString(m_symbol.Ask(),Digits())+
", und setze stop/loss auf "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}

Kommentar 0