Bonjour, je ne crois pas que le sujet corresponde aux critères mais je tente ^^
J'ai trouvé sur un forum américain un ea qui me semble très prometteur achetant ou vendant au croisement des moyennes mobiles expo mais a contre tendance bien que cette dernière donnée soit paramétrable false/true.
J'ai passé deux jours a lire le thread ...alors que mon anglais ressemble au berrichon d'un chinois enfin, victoire, j'ai réussi a l'installer !!!
Je vous file mes paramètres :
TP 160 TS : 20 SL : 70
SL : False ( si je met true alors ça ne marche pas ..pas d'ordre envoyé et erreur 130 dans le journal)
Short EMA : 10 long EMA : 80
immediate trade : true
reversarl : true
Lot : 1
MM : false
account micro : false
risk : 15 mais a l'origine c'était 10
show setting : true
Mon problème est le SL que je ne peux utiliser car il bug ...
J'ai commencé le test en réel après des back-test très prometteurs dimanche 11 novembre (paix aux guerriers européens) et j'ai gagné depuis l'ouverture dimanche soir : 29e, 78e, 11e, 159e et 200e et j'ai actuellement deux ordres en cours 41e et 47e avec u capital virtuel de départ de 4800e.
J'ai découvert le site américain samedi après midi en cherchant un EA moyenne mobile sur le net , prenez un graphique en H1 ou D1 sur usd/cad , posez deux EMA 10 et 80 et regardez le potentiel de pips ....absolument monstrueux et ça sans se prendre la tête
Je pense que les EMA sont ce qu'il y a de mieux car simple et très utiliser (d'après ce que j'ai pu lire ici et là)
je pose le code du robot ici car je ne sais pas comment le partager ...
Il vous suffit de faire F4 sur mt4 et de créer u nouveau expert et de coller ce code, redémarrer mt4 et lancer le robot
J'ai trouvé sur un forum américain un ea qui me semble très prometteur achetant ou vendant au croisement des moyennes mobiles expo mais a contre tendance bien que cette dernière donnée soit paramétrable false/true.
J'ai passé deux jours a lire le thread ...alors que mon anglais ressemble au berrichon d'un chinois enfin, victoire, j'ai réussi a l'installer !!!
Je vous file mes paramètres :
TP 160 TS : 20 SL : 70
SL : False ( si je met true alors ça ne marche pas ..pas d'ordre envoyé et erreur 130 dans le journal)
Short EMA : 10 long EMA : 80
immediate trade : true
reversarl : true
Lot : 1
MM : false
account micro : false
risk : 15 mais a l'origine c'était 10
show setting : true
Mon problème est le SL que je ne peux utiliser car il bug ...
J'ai commencé le test en réel après des back-test très prometteurs dimanche 11 novembre (paix aux guerriers européens) et j'ai gagné depuis l'ouverture dimanche soir : 29e, 78e, 11e, 159e et 200e et j'ai actuellement deux ordres en cours 41e et 47e avec u capital virtuel de départ de 4800e.
J'ai découvert le site américain samedi après midi en cherchant un EA moyenne mobile sur le net , prenez un graphique en H1 ou D1 sur usd/cad , posez deux EMA 10 et 80 et regardez le potentiel de pips ....absolument monstrueux et ça sans se prendre la tête
Je pense que les EMA sont ce qu'il y a de mieux car simple et très utiliser (d'après ce que j'ai pu lire ici et là)
je pose le code du robot ici car je ne sais pas comment le partager ...
Code
//+------------------------------------------------------------------+
//| EMA_CROSS_2.mq4 |
//| Coders Guru |
//| http://www.forex-tsd.com |
//+------------------------------------------------------------------+
#property copyright "Coders Guru"
#property link "http://www.forex-tsd.com"
#define MAGICMA 20060301
//---- Trades limits
extern double TakeProfit=160;
extern double TrailingStop=20;
extern double StopLoss=70;
extern bool UseStopLoss = false;
//---- EMAs paris
extern int ShortEma = 10;
extern int LongEma = 80;
//---- Crossing options
extern bool immediate_trade = true; //Open trades immediately or wait for cross.
extern bool reversal = true; //Use the originally reversal crossing method or not
//---- Money Management
extern double Lots = 1;
extern bool MM = false; //Use Money Management or not
extern bool AccountIsMicro = false; //Use Micro-Account or not
extern int Risk = 15; //10%
extern bool Show_Settings = true;
//---- Global varaibles
static int TimeFrame = 0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if(Show_Settings) Print_Details();
else Comment("");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
TimeFrame=Period(); //Prevent counting the cross while the user changing the timeframe
//----
return(0);
}
bool isNewSumbol(string current_symbol)
{
//loop through all the opened order and compare the symbols
int total = OrdersTotal();
for(int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
string selected_symbol = OrderSymbol();
if (current_symbol == selected_symbol)
return (False);
}
return (True);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(TimeFrame!=Period())
{
TimeFrame=Period();
return (0);
}
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(immediate_trade==false)
{
if(last_direction == 0) //first use
{
last_direction = current_direction;
return(0);
}
}
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0); //not changed
}
}
//--- Bassed on Alex idea! More ideas are coming
double LotSize()
{
double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;
if(AccountIsMicro==false) //normal account
{
if (lotMM < 0.1) lotMM = Lots;
if (lotMM > 1.0) lotMM = MathCeil(lotMM);
if (lotMM > 100) lotMM = 100;
}
else //micro account
{
if (lotMM < 0.01) lotMM = Lots;
if (lotMM > 1.0) lotMM = MathCeil(lotMM);
if (lotMM > 100) lotMM = 100;
}
return (lotMM);
}
string BoolToStr ( bool value)
{
if(value) return ("True");
else return ("False");
}
void Print_Details()
{
string sComment = "";
string sp = "----------------------------------------\n";
string NL = "\n";
sComment = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + " | ";
sComment = sComment + "UseStopLoss=" + BoolToStr(UseStopLoss) + NL;
sComment = sComment + sp;
sComment = sComment + "immediate_trade=" + BoolToStr(immediate_trade) + " | ";
sComment = sComment + "reversal=" + BoolToStr(reversal) + NL;
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,0) + " | ";
sComment = sComment + "MM=" + BoolToStr(MM) + " | ";
sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;
sComment = sComment + sp;
Comment(sComment);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double SEma, LEma;
string comment = "";
if(reversal==true) comment = "EMA_CROSS_Counter-Trend";
if(reversal==false) comment = "EMA_CROSS_Trend-Following";
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
SEma = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);
LEma = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);
static int isCrossed = 0;
isCrossed = Crossed (LEma,SEma);
if(reversal==false)
{
if(isCrossed==1) isCrossed=2;
if(isCrossed==2) isCrossed=1;
}
if(MM==true) Lots = LotSize(); //Adjust the lot size
total = OrdersTotal();
if(total < 1 || isNewSumbol(Symbol()))
{
if(isCrossed == 1)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// check for trailing stop
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// check for trailing stop
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
Il vous suffit de faire F4 sur mt4 et de créer u nouveau expert et de coller ce code, redémarrer mt4 et lancer le robot
Modifié le 2012-11-12 16:58:19 par
AliX
: lien caché, pas content..