Tout un chacun ici souhaite gagner des sommes plus ou moins importantes grâce au Forex mais tout le monde se heurte aux difficultés du métier.
Nous avons tous recherché la méthode la plus miraculeuse possible pour ouvrir une position au meilleur moment et remporter le maximum de gain ... beaucoup se sont cassés les dents et y ont perdu des plumes.
Les plus fortunés agissant dans ce domaine ont réussi des coups de force et empoché des plus-values monstrueuses, je pense notamment à Georges Soros qui a créé la légende. Malheureusement ce type de stratégie (si on peu appeler ça comme ça) n'est plus applicable aujourd'hui car les volumes en jeu son colossaux.
Mais que représente réellement ce colossal en question ?
Je me pose cette question et ait bêtement fait un petit calcul qui, bien que les chiffres ne soient pas des plus fiables, pourrait amener à une conclusion intéressante.
Les échanges de devises représenterait quotidiennement un volume de 3500 milliards de $
La paire EURUSD représenterai à elle seule 50% des transactions soit 1750 milliards de $
Chaque minute il s’échangerait donc environ 1,2 milliards de $ soit dans les 12000 lots, bien sûr cette valeur n'est qu'une moyenne et il y a fort à parier que ce volume est moindre en début et en fin de journée occidentale et bien au delà au beau milieu de la journée (à vue de nez entre l'ouverture de Wall Street et la fermeture de la City).
La question que l'on peut se poser est la suivante :
Que se passerait-il si un certain nombre de traders lançaient au même moment des ordres d'achat pour un volume sensiblement supérieur à cette moyenne, disons 50000 lots ? Il faudrait trouver 20 ou 30000 personnes capables de poser un ordre chacun d'environ 2 lots.
J'imagine que le cours monterait mais ce que j'ignore c'est de combien.
D'un autre côté, tous les traders rêvent de prédire le cours, et en fait il existe un moyen extrêmement simple de le faire et cette méthode est utilisée tous les jours par tout le monde.
Pourquoi croyez-vous qu'il y ait tant de monde sur la route le matin entre 8h et 10h ... et comment se fait-il que les mêmes personnes se retrouvent toutes au même endroit entre 17h et 19h ??
Elles respectent juste un horaire : celui d'aller au boulot !
Imaginons maintenant que chacun de ces automobilistes avant de partir pose un ordre sur EURUSD avec un trailing stop de 10 pips et un TP de 30 pips (le ratio de 3 ravira certaines personnes ;)), imaginons que chaque ordre fasse 0,1 lot sur un compte de 1000EUR et tant qu'on y est, imaginons que les mêmes personnes ouvrent un autre ordre du même volume le soir en rentrant ?
Et si on pousse plus loin le raisonnement : pourquoi ne pas créer un robot qui se contente de faire ces deux opérations extrêmement simple à des horaires précises (par ex. à 7h GMT et 22h GMT), robot qui serait distribué très largement sur Internet et qui gèrerait un money management tout aussi simple (2% de risque par trade par ex.).
L'idée est, comme vous l'aurez compris de fixer un RdV à tous les traders de la planète pour que chacun d'entre eux trade dans le même sens au même moment au même endroit. Il ne reste plus qu'à relayer cette idée sur tous les forums et réseaux sociaux, espérer créer un Buzz et surtout, convaincre le plus grand nombre.
Voici un petit EA simple pour concrétiser ces deux trades quotidiens et leur gestion, il lance deux trades le matin et deux autres le soir :
Et le pire dans tout ça ... c'est que ce robot complètement stupide est très largement bénéfique si on en croit le backtest (certes pourri) que je viens de faire :
Nous avons tous recherché la méthode la plus miraculeuse possible pour ouvrir une position au meilleur moment et remporter le maximum de gain ... beaucoup se sont cassés les dents et y ont perdu des plumes.
Les plus fortunés agissant dans ce domaine ont réussi des coups de force et empoché des plus-values monstrueuses, je pense notamment à Georges Soros qui a créé la légende. Malheureusement ce type de stratégie (si on peu appeler ça comme ça) n'est plus applicable aujourd'hui car les volumes en jeu son colossaux.
Mais que représente réellement ce colossal en question ?
Je me pose cette question et ait bêtement fait un petit calcul qui, bien que les chiffres ne soient pas des plus fiables, pourrait amener à une conclusion intéressante.
Les échanges de devises représenterait quotidiennement un volume de 3500 milliards de $
La paire EURUSD représenterai à elle seule 50% des transactions soit 1750 milliards de $
Chaque minute il s’échangerait donc environ 1,2 milliards de $ soit dans les 12000 lots, bien sûr cette valeur n'est qu'une moyenne et il y a fort à parier que ce volume est moindre en début et en fin de journée occidentale et bien au delà au beau milieu de la journée (à vue de nez entre l'ouverture de Wall Street et la fermeture de la City).
La question que l'on peut se poser est la suivante :
Que se passerait-il si un certain nombre de traders lançaient au même moment des ordres d'achat pour un volume sensiblement supérieur à cette moyenne, disons 50000 lots ? Il faudrait trouver 20 ou 30000 personnes capables de poser un ordre chacun d'environ 2 lots.
J'imagine que le cours monterait mais ce que j'ignore c'est de combien.
D'un autre côté, tous les traders rêvent de prédire le cours, et en fait il existe un moyen extrêmement simple de le faire et cette méthode est utilisée tous les jours par tout le monde.
Pourquoi croyez-vous qu'il y ait tant de monde sur la route le matin entre 8h et 10h ... et comment se fait-il que les mêmes personnes se retrouvent toutes au même endroit entre 17h et 19h ??
Elles respectent juste un horaire : celui d'aller au boulot !
Imaginons maintenant que chacun de ces automobilistes avant de partir pose un ordre sur EURUSD avec un trailing stop de 10 pips et un TP de 30 pips (le ratio de 3 ravira certaines personnes ;)), imaginons que chaque ordre fasse 0,1 lot sur un compte de 1000EUR et tant qu'on y est, imaginons que les mêmes personnes ouvrent un autre ordre du même volume le soir en rentrant ?
Et si on pousse plus loin le raisonnement : pourquoi ne pas créer un robot qui se contente de faire ces deux opérations extrêmement simple à des horaires précises (par ex. à 7h GMT et 22h GMT), robot qui serait distribué très largement sur Internet et qui gèrerait un money management tout aussi simple (2% de risque par trade par ex.).
L'idée est, comme vous l'aurez compris de fixer un RdV à tous les traders de la planète pour que chacun d'entre eux trade dans le même sens au même moment au même endroit. Il ne reste plus qu'à relayer cette idée sur tous les forums et réseaux sociaux, espérer créer un Buzz et surtout, convaincre le plus grand nombre.
Voici un petit EA simple pour concrétiser ces deux trades quotidiens et leur gestion, il lance deux trades le matin et deux autres le soir :
Code
//+------------------------------------------------------------------+
//| RendezVous.mq4 |
//| Copyright 2012, Nicolas Tuffier |
//| http://www.furyweb.fr/forex/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Nicolas Tuffier"
#property link "http://www.furyweb.fr/forex/"
#import "kernel32.dll"
int GetTimeZoneInformation(int& TZInfoArray[]);
#import
#define MAGIC 170107
#define TIME_ZONE_ID_UNKNOWN 0
#define TIME_ZONE_ID_STANDARD 1
#define TIME_ZONE_ID_DAYLIGHT 2
//--- input parameters
extern double risk=2.0;
double SL;
double TP;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
//----
double pip2point = Point * MathPow(10, Digits % 2);
SL = 10 * pip2point;
TP = 30 * pip2point;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
//----
int order, // order position
ordersCount = OrdersTotal(); // orders count
bool isOpened[2]; // order status for buy & sell
datetime gmt = TimeGMT(); // current GMT time
double ma = iMA(Symbol(), 60, 18, 0, MODE_EMA, PRICE_CLOSE, 0);
double lotSize = LotSize(SL);
Comment(TimeToStr(gmt));
//---- trade status & SL management
isOpened[OP_BUY] = false;
isOpened[OP_SELL] = false;
for (order = 0; order < ordersCount; order++)
if (OrderSelect(order, SELECT_BY_POS))
if (OrderMagicNumber() == MAGIC) {
isOpened[OrderType()] = true;
if (OrderType() == OP_BUY && OrderStopLoss() < NormalizeDouble(Bid - SL, Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - SL, Digits), OrderTakeProfit(), 0);
if (OrderType() == OP_SELL && OrderStopLoss() > NormalizeDouble(Ask + SL, Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + SL, Digits), OrderTakeProfit(), 0);
}
//---- trade opening
if ((TimeHour(gmt) == 7 || TimeHour(gmt) == 22) && TimeMinute(gmt) == 0) {
if (Low[0] > ma && !isOpened[OP_BUY])
OrderSend(Symbol(), OP_BUY, lotSize, Ask, 0, Ask - SL, Ask + TP, "", MAGIC);
if (High[0] < ma && !isOpened[OP_SELL])
OrderSend(Symbol(), OP_SELL, lotSize, Bid, 0, Bid + SL, Bid - TP, "", MAGIC);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
//----
//----
return(0);
}
// Lot size calulation according to SL
double LotSize(double slInPoint) {
double minLot = MarketInfo(Symbol(), MODE_MINLOT); // minimal trade size
double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP); // minimal lot step
double tickValue = MarketInfo(Symbol(), MODE_TICKVALUE); // tick value for 1 lot in account currency
double tickSize = MarketInfo(Symbol(), MODE_TICKSIZE);
double maxLossFor1Lot = tickValue * slInPoint / tickSize;
double maxLossForAccount = risk * AccountEquity() / 100;
double result = MathMax(minLot, MathRound(maxLossForAccount / maxLossFor1Lot / lotStep) * lotStep);
/* Comment("size : ", result, "\n",
"minLot : ", minLot, "\n",
"lotStep : ", lotStep, "\n",
"tickValue : ", DoubleToStr(tickValue, Digits), "\n",
"tickSize : ", DoubleToStr(tickSize, Digits), "\n"); //*/
return(result);
}
// Local timezone in hours, adjusting for daylight saving
double TimeZoneLocal() {
int TZInfoArray[43];
switch(GetTimeZoneInformation(TZInfoArray)) {
case TIME_ZONE_ID_UNKNOWN:
Print("Error obtaining PC timezone from GetTimeZoneInformation in kernel32.dll. Returning 0");
return(0);
case TIME_ZONE_ID_STANDARD:
return(TZInfoArray[0]/(-60.0));
case TIME_ZONE_ID_DAYLIGHT:
return((TZInfoArray[0]+TZInfoArray[42])/(-60.0));
default:
Print("Unkown return value from GetTimeZoneInformation in kernel32.dll. Returning 0");
return(0);
}
}
// Server timezone in hours
double TimeZoneServer() {
int ServerToLocalDiffMinutes = (TimeCurrent()-TimeLocal())/60;
// round to nearest 30 minutes to allow for inaccurate PC clock
int nHalfHourDiff = MathRound(ServerToLocalDiffMinutes/30.0);
ServerToLocalDiffMinutes = nHalfHourDiff*30;
return(TimeZoneLocal() + ServerToLocalDiffMinutes/60.0);
}
// Uses local PC time, local PC timezone, and server time to calculate GMT time at arrival of last tick
datetime TimeGMT() {
// two ways of calculating
// 1. From PC time, which may not be accurate
// 2. From server time. Most accurate except when server is down on weekend
datetime dtGmtFromLocal = TimeLocal() - TimeZoneLocal()*3600;
datetime dtGmtFromServer = TimeCurrent() - TimeZoneServer()*3600;
// return local-derived value if server value is out by more than 5 minutes, eg during weekend
if (dtGmtFromLocal > dtGmtFromServer + 300) {
return(dtGmtFromLocal);
} else {
return(dtGmtFromServer);
}
}
//+------------------------------------------------------------------+
Et le pire dans tout ça ... c'est que ce robot complètement stupide est très largement bénéfique si on en croit le backtest (certes pourri) que je viens de faire :
Code
Symbole EURUSD (Euro vs US Dollar)
Periode 4 Heures (H4) 2012.02.08 08:00 - 2012.10.08 16:00 (2012.01.17 - 2012.10.31)
Modele Chaque tick (la méthode la plus précise, basée sur tous les moindres relevés disponibles)
Parametres risk=2;
Bars en test 1176 Ticks modelés 10613248 Qualité du modelage 37.14%
Erreurs des graphiques désaccordés 50
Dépot initial 10000.00
Profit total net 71464.22 Profit brut 215574.06 Perte brute -144109.84
Facteur de profit 1.50 Rémunération espérée 218.55
Chute absolue 877.47 Chute maximal (%) 29042.30 (39.17%) Enfoncement relatif 39.17% (29042.30)
Total des Trades 327 Positions SHORT (vente) gagnées % 152 (41.45%) Positions LONG (achat) gagnées % 175 (40.00%)
Profits des Trades (% du total) 133 (40.67%) Pertes des Trades (% du total) 194 (59.33%)
Le plus large gains par Trade 4924.45 pertes par Trade -1526.81
Average (moyenne) gains par Trade 1620.86 pertes par Trade -742.83
Maximum gains consecutifs (profit en $) 5 (18077.75) pertes consecutives (perte en $) 13 (-13685.75)
Maximal Gains consecutifs (coups gagnants) 18077.75 (5) Pertes consecutives (coups perdants) -13685.75 (13)
Average (moyenne) gains consecutifs 2 Pertes consecutives 2