0% ont trouvé ce document utile (0 vote)
17 vues3 pages

2ma&rsi 012

Ce document présente un expert advisor (EA) pour le trading automatisé utilisant des moyennes mobiles et le RSI. Il inclut des fonctions pour passer des ordres d'achat et de vente, gérer le nombre de trades par jour, et vérifier les conditions d'entrée basées sur des signaux d'achat et de vente. Les paramètres de trading, tels que le risque par transaction et le ratio risque-récompense, sont également définis.

Transféré par

Vladimir Strogoff
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
17 vues3 pages

2ma&rsi 012

Ce document présente un expert advisor (EA) pour le trading automatisé utilisant des moyennes mobiles et le RSI. Il inclut des fonctions pour passer des ordres d'achat et de vente, gérer le nombre de trades par jour, et vérifier les conditions d'entrée basées sur des signaux d'achat et de vente. Les paramètres de trading, tels que le risque par transaction et le ratio risque-récompense, sont également définis.

Transféré par

Vladimir Strogoff
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

// --- Variables ---

double FastMA, SlowMA, RSIValue;


int TradeMagicNumber = 202408001; // Numéro magique pour identifier les commandes
EA
int Slippage = 3; // Valeur de glissement autorisée
datetime lastTradeTime;
int currentTrades = 0; // Nombre de trades effectués aujourd'hui
datetime lastTradeTime = 0; // Temps du dernier trade

// --- OnInit ---


int OnInit()
{
lastTradeTime = 0;
currentTrades = 0;
return(INIT_SUCCEEDED);
}

// --- OnTick ---


void OnTick()
{
ManageTradesPerDay();

// Calculer les indicateurs


FastMA = iMA(Symbol(), PERIOD_CURRENT, FastMA_Period, 0, FastMA_Method,
PRICE_CLOSE, 0);
SlowMA = iMA(Symbol(), PERIOD_CURRENT, SlowMA_Period, 0, SlowMA_Method,
PRICE_CLOSE, 0);
RSIValue = iRSI(Symbol(), PERIOD_CURRENT, RSIPeriod, PRICE_CLOSE);

// Vérifier les conditions d'entrée


if (IsBuySignal() && currentTrades < MaxTradesPerDay && TimeCurrent() >
lastTradeTime + TradeCooldown)
PlaceBuyOrder();
else if (IsSellSignal() && currentTrades < MaxTradesPerDay && TimeCurrent() >
lastTradeTime + TradeCooldown)
PlaceSellOrder();

// Gestion des trades ouverts


CheckOpenTrades();
}

// --- Fonctions d'entrée ---


bool IsBuySignal()
{
// Conditions d'achat :
// 1. La moyenne mobile rapide croise la moyenne mobile lente à la hausse
// 2. Le RSI est en dessous du niveau de survente
return (FastMA > SlowMA && FastMA[1] < SlowMA[1] && RSIValue < RSIOversold);
}

bool IsSellSignal()
{
// Conditions de vente :
// 1. La moyenne mobile rapide croise la moyenne mobile lente à la baisse
// 2. Le RSI est au-dessus du niveau de surachat
return (FastMA < SlowMA && FastMA[1] > SlowMA[1] && RSIValue > RSIOverbought);
}
// --- Fonctions de passation des ordres ---
void PlaceBuyOrder()
{
// Calculer le volume
double lots = AccountEquity()*RiskPercentage/100;

// Calculer le Stop Loss


double StopLoss = Ask - (Ask - Bid) * RiskRewardRatio;

// Calculer le Take Profit


double TakeProfit = Ask + (Ask - Bid) * RiskRewardRatio;

// Passer l'ordre d'achat


OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, StopLoss, TakeProfit, "Buy
Order", TradeMagicNumber, 0, 0);

// Augmenter le compteur de trades


currentTrades++;
lastTradeTime = TimeCurrent(); // Mettre à jour le temps du dernier trade
}

void PlaceSellOrder()
{
// Calculer le volume
double lots = AccountEquity()*RiskPercentage/100;

// Calculer le Stop Loss


double StopLoss = Bid + (Ask - Bid) * RiskRewardRatio;
// Calculer le Take Profit
double TakeProfit = Bid - (Ask - Bid) * RiskRewardRatio;

// Passer l'ordre de vente


OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, StopLoss, TakeProfit, "Sell
Order", TradeMagicNumber, 0, 0);

// Augmenter le compteur de trades


currentTrades++;
lastTradeTime = TimeCurrent(); // Mettre à jour le temps du dernier trade
}

// --- Fonction pour réinitialiser le compteur de trades ---


void ResetTradeCounter()
{
currentTrades = 0;
lastTradeTime = TimeCurrent();
}

// --- Fonction pour gérer les trades par jour ---


void ManageTradesPerDay()
{
if (TimeCurrent() > lastTradeTime + 86400) // 86400 secondes dans un jour
ResetTradeCounter();
}

// --- Fonction pour gérer les trades ouverts ---


void CheckOpenTrades()
{
for(int i = OrdersTotal()-1; i >= 0; i--) {
if(OrderMagicNumber() == TradeMagicNumber && OrderSymbol() == Symbol() &&
OrderType() == OP_BUY) {
if (Low[0] < OrderStopLoss()) {
// Fermer la position si le Stop Loss est atteint
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, 0);
}
} else if(OrderMagicNumber() == TradeMagicNumber && OrderSymbol() == Symbol()
&& OrderType() == OP_SELL) {
if (High[0] > OrderStopLoss()) {
// Fermer la position si le Stop Loss est atteint
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, 0);
}
}
}
}
`//+------------------------------------------------------------------+
//| TwoMovingAverageRSIBot.mq5 |
//| Copyright 2024, Your Name |
//| (Your Website) |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, Your Name"
#property link "(Your Website)"
#property version "1.00"
#property strict

`mql5
// --- Inputs ---
extern int FastMA_Period = 1; // Période de la première moyenne mobile (rapide)
extern int FastMA_Method = MODE_EMA; // Méthode de la première moyenne mobile
(exponentielle)
extern int SlowMA_Period = 50; // Période de la deuxième moyenne mobile (lente)
extern int SlowMA_Method = MODE_EMA; // Méthode de la deuxième moyenne mobile
(exponentielle)
extern int RSIPeriod = 1; // Période du RSI
extern int RSIOversold = 15; // Niveau de survente du RSI
extern int RSIOverbought = 85; // Niveau de surachat du RSI
extern double RiskPercentage = 5; // Pourcentage de risque par transaction
extern double RiskRewardRatio = 5.0; // Ratio risque-récompense (1:5)
extern int MaxTradesPerDay = 10; // Nombre maximum de trades par jour
extern int TradeCooldown = 5; // Temps de pause entre les trades (en secondes)

Vous aimerez peut-être aussi