Autore dell'idea: George F.Peskov, autore del codice MQL5: barabashkakvn.
CrossMA è un sistema di trading che si basa sull'incrocio di due medie mobili (iMA). La gestione del stop loss è automatica e si basa sul valore dell'ATR. Ogni volta che viene aperta o chiusa una posizione, riceverai una notifica via email. Inoltre, puoi personalizzare i parametri tramite backtesting.
Valori degli indicatori sulle prime due barre:
//--- Ottieni la Media Mobile
mas=iMAGet(handle_iMA1,1); // media mobile lunga 12
maf=iMAGet(handle_iMA2,1); // media mobile corta 4
mas_p=iMAGet(handle_iMA1,2); // media mobile lunga 12
maf_p=iMAGet(handle_iMA2,2); // media mobile corta 4
Atr=iATRGet(0);
mas=iMAGet(handle_iMA1,1); // media mobile lunga 12
maf=iMAGet(handle_iMA2,1); // media mobile corta 4
mas_p=iMAGet(handle_iMA1,2); // media mobile lunga 12
maf_p=iMAGet(handle_iMA2,2); // media mobile corta 4
Atr=iATRGet(0);
Controllo delle condizioni per la vendita:
//--- Condizione per la vendita
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="Operazione VENDITA per "+Symbol()+"";
sBodyLetter="Operazione Vendita per "+Symbol()+" a "+DoubleToString(m_symbol.Bid(),Digits())+
", e stop/loss fissato a "+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="Operazione VENDITA per "+Symbol()+"";
sBodyLetter="Operazione Vendita per "+Symbol()+" a "+DoubleToString(m_symbol.Bid(),Digits())+
", e stop/loss fissato a "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
Controllo delle condizioni per l'acquisto:
//--- Condizione per l'acquisto
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="Operazione ACQUISTO a "+Symbol()+"";
sBodyLetter="Operazione Acquisto a "+Symbol()+" per "+DoubleToString(m_symbol.Ask(),Digits())+
", e stop/loss fissato a "+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="Operazione ACQUISTO a "+Symbol()+"";
sBodyLetter="Operazione Acquisto a "+Symbol()+" per "+DoubleToString(m_symbol.Ask(),Digits())+
", e stop/loss fissato a "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
Post correlati
- Rilevare il Venerdì della Prima Settimana del Mese: La Guida per il Giorno NFP
- RRS Impulse: Il Tuo Esperto per MetaTrader 4
- EA Efficiente: Come Aggiungere la Chiusura del Venerdì per Migliorare le Performance
- Utilità Market Watch Panel: il tuo alleato in MetaTrader 4
- Guida all'Utilizzo del MQL5 Wizard: Trading con Pattern di Candele e Indice CCI