Dans le testeur, il y a une erreur :
2010.04.28 06:27:44 Core 1 Erreur de création de processus [2]
Dans le testeur, il y a une erreur :
2010.04.28 06:27:44 Core 1 Erreur de création de processus [2]
Veuillez mettre à jour vers la dernière version, puis vérifiez la présence du fichier metatester.exe à la racine du répertoire du programme.
Merci, cela fonctionne.
L'optimiseur et la visualisation sont absents.
L'optimiseur et la visualisation sont absents.
L'optimiseur est là - il suffit d'augmenter la hauteur de la fenêtre du testeur.
La visualisation sera disponible plus tard.
Voir aussi,
M/Mme tsaktuo, j'ai étudié votre code K_eSimpleMA et il m'a été très utile pour comprendre la structure d'un EA, ainsi que des concepts tels que la façon de travailler avec les croisements SMA.
J'apprécie vraiment que vous ayez partagé cet article et je vous remercie beaucoup.
D'un autre côté, j'ai quelques questions, toutes deux liées à la fonctionSymbolInfoTick :
Ce que dit le manuel de MQL5 à propos deSymbolInfoTick(Symbol(),tick) est qu'il renvoie les prix actuels d' un symbole spécifié dans une variable de type MqlTick et il dit aussi que la fonction renvoie true si elle réussit, sinon elle renvoie false.
D'après ce qui précède, je comprends que le message ("Failed to get Symbol info !") est imprimé si aucun tick n'est reçu. Est-ce correct ? Si ce n'est pas le cas, pourriez-vous me dire de quoi il s'agit ?
L'autre question est : Que se passe-t-il si le message est imprimé à chaque tick ?
Encore une fois, merci.
Il y a :
trReq.sl=tick.ask-_Point*sl; // Niveau de Stop Loss de l'ordre
trReq.tp=tick.ask+_Point*tp; // Niveau de prise de profit de l'ordre
nécessaire :
trReq.sl=tick.bid-_Point*sl; // Niveau de Stop Loss de l'ordre
trReq.tp=tick.bid+_Point*tp; // Niveau de prise de profit de l'ordre
et modifier en conséquence l'ordre de vente.
L'achat est effectué au cours vendeur, mais l'ordre est clôturé au cours acheteur.
Si vous souhaitez limiter les profits et les pertes, par exemple, à 20 points, il faut compter exactement 20 points à partir du cours acheteur (cours de clôture) pour l'achat et du cours vendeur (cours de clôture) pour la vente.
Pouvez-vous me dire comment ajouter à ce code pour qu'il négocie sur la tendance MACD sans stops ?
Long : MACD est en croissance MA rapide croisé MA lent de haut en bas
Croy Long : MACD croissant rapidement MA croisé MA lent de bas en haut
Short : MACD décroissant rapide croise l'axe lent de haut en bas
Short : MACD fast MA décroissant croise le slow MA de bas en haut
J'ai essayé comme ceci :
//+------------------------------------------------------------------+
//|MACD&DEMA.mq5 |
//|Copyright 2010, Groupe AM2. |
//| http ://www.am2_group.net
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, AM2 Group."
#property link "http://www.am2_group.net"
#property version "1.00"
//--- paramètres d'entrée
input int Periods=2; // Moyenne mobile de la période 1
input int Shift=38; // Moyenne mobile de la période 2
input int SL=30; // Stop Loss
input int TP=100; // Prise de bénéfice
input int MAGIC=3072010; // Conseiller sur le nombre magique
MqlTradeRequest trReq;
MqlTradeResult trRez;
int ma1Handle;
int ma2Handle;
int macdHandle; // Poignée de l'indicateur MACD
double ma1Val[];
double ma2Val[];
double macdVal[]; // tableau dynamique pour le stockage des valeurs numériques MACD pour les barres quotidiennes
int sl;
int tp;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'expert|
//+------------------------------------------------------------------+
int OnInit()
{
//Définir les valeurs par défaut pour toutes les nouvelles demandes d'ordre
trReq.action=TRADE_ACTION_DEAL;
trReq.magic=MAGIC;
trReq.symbol=Symbol(); // Symbole commercial
trReq.volume=0.1; // Volume demandé pour une transaction en lots
trReq.deviation=1; // Écart maximal possible par rapport au prix demandé
trReq.type_filling=ORDER_FILLING_AON; // Type d'exécution de l'ordre
trReq.type_time=ORDER_TIME_GTC; // Temps d'exécution de l'ordre
trReq.comment="MA Sample";
//end
/Créer une poignée pour 2 indicateurs MA
ma1Handle=iMA(Symbol(),PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
ma2Handle=iMA(Symbol(),PERIOD_CURRENT,Periods+Shift,0,MODE_EMA,PRICE_CLOSE);
//---Obtenir la poignée de l'indicateur MACD
macdHandle=iMACD(NULL,PERIOD_D1,15,26,1,PRICE_CLOSE);
//end
//les paramètres d'entrée sont en lecture seule
tp=0;
sl=0;
//end
//Supplément pour un compte avec 5 décimales
if(_Digits==5)
{
sl*=10;
tp*=10;
}
//end
return(0);
}
//+------------------------------------------------------------------+
//| Fonction de désinitialisation de l'expert|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Fonction de tic-tac expert|
//+------------------------------------------------------------------+
void OnTick()
{
MqlTick tick; //variable pour l'information sur le tic-tac
if(!SymbolInfoTick(Symbol(),tick))
{
Print("Failed to get Symbol info!");
return;
}
/Copier les dernières valeurs de l'indicateur MA dans un tampon
int copied=CopyBuffer(ma1Handle,0,0,4,ma1Val);
if(copied>0)
copied=CopyBuffer(ma2Handle,0,0,4,ma2Val);
copied=CopyBuffer(macdHandle,0,0,4,macdVal);
if(copied>0)
{
//Si MAPeriod > MAPeriod + Shift -> BUY
if(ma1Val[1]>ma2Val[1] && macdVal[1]>macdVal[2])
{
trReq.price=tick.bid; // SymbolInfoDouble(NULL,SYMBOL_BID) ;
trReq.sl=tick.bid-_Point*sl; // Niveau de Stop Loss de l'ordre
trReq.tp=tick.bid+_Point*tp; // Niveau du Take Profit de l'ordre
trReq.type=ORDER_TYPE_BUY; // Type d'ordre
OrderSend(trReq,trRez);
}
//Si MAPeriod < MAPeriod + Shift -> SELL
else if(ma1Val[1]<ma2Val[1] && macdVal[1]<macdVal[2])
{
trReq.price=tick.ask;
trReq.sl=tick.ask+_Point*sl; // Niveau de Stop Loss de l'ordre
trReq.tp=tick.ask-_Point*tp; // Niveau du Take Profit de l'ordre
trReq.type=ORDER_TYPE_SELL; // Type d'ordre
OrderSend(trReq,trRez);
}
}
}
//+------------------------------------------------------------------+
Bonjour Outkast,
Je suis novice en matière d'EA, je viens d'importer l'EA simple de Mr. tsaktuo, car je ne comprends pas vraiment le code, je le vois fonctionner sur mon graphique, mais suis-je censé régler certaines valeurs MA, je ne sais pas, j'ai besoin d'aide, d'un cours ou d'un livre ?
J'ai été heureux de trouver votre exemple de code car il a résolu mon problème de mise en mémoire tampon du MA et de son apparition sur un graphique. Merci de l'avoir mis en ligne.
La seule question que j'ai est de savoir comment il prend la décision de fermer l'ordre ouvert ?
Je vous remercie.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation

Simple MA Expert Advisor:
Quelque chose pour ceux qui veulent essayer un nouveau testeur de stratégie et qui n'ont pas d'EA.
Author: Karlis Balcers