Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Triple Trend Scalper - Stratégie simple

  • thebud49

    bonjour furynick,
    Je suis aussi intéressé par l'exe et la Dll ,je t'envoi un MP
  • furynick — en réponse à wimz01 dans son message #78199

    wimz01, le 14/06/2013 dit :
    Concernant l'heure de prise de position, j'ai remarqué une récurrence (en tout cas sur l'eur/usd), on à souvent à l'ouverture 9h et 14h une correction de la tendance, ce serait donc peut-être mieux de prendre position à 9h30 et 14h30 @fury : ça fais plaisir que tu vienne faire un tour sur le thread pour nous donner tes conseil concernant l'ea, tu pense que ça améliorerai la rapidité de l'ea ?


    La rapidité je pense pas ... enfin, pas significativement en tous cas. C'est plus pour que le code soit plus lisible, plus autonome et plus simple.

    D'ailleurs, pour préciser les heures vous pouvez utiliser directement des variables de type string avec la fonction StrToTime (http://docs.mql4.com/convert/StrToTime) au lieu de préciser heure et minute à chaque fois. Ça simplifiera l'interface utilisateur.

    Par ex. :
    Code
    if (TimeGMT(TimeCurrent()) > StrToTime(heure_close1) order_close(MAGICA1); if (TimeGMT(TimeCurrent()) > StrToTime(heure_close2)) order_close(MAGICA2);

    Un autre détail, si je comprends bien l'utilité du code suivant à savoir attendre l'ouverture d'une nouvelle barre, certaines positions risquent de ne pas s'ouvrir si la bougie s'ouvre d'office avec un volume supérieur.
    Code
    if(Volume[0] != 1) return(0) ;

    Il vaut mieux se baser sur l'heure :
    Code
    datetime timeRef; init () { timeRef=Time[0]; } start () { if (timeRef == Time[0]) return(0); timeRef=Time[0]; ... }

    PS : un autre détail, dans les sélection d'ordre il faudrait ajouter le filtrage sur le symbole pour pouvoir utiliser plusieurs EA sur des paires différentes sans effet de bord.
    Par ex :
    Code
    if ((OrderMagicNumber() == MAGICA1 || OrderMagicNumber() == MAGICA2) && OrderSymbol() == Symbol() )
    Modifié le 2013-06-14 09:10:48 par furynick
  • furynick — en réponse à thebud49 dans son message #78201

    thebud49, le 14/06/2013 dit :
    bonjour furynick, Je suis aussi intéressé par l'exe et la Dll ,je t'envoi un MP


    Je mettrai un zip sur dl.free.fr pour faire simple, ça aidera tout le monde :)
  • wimz01 — en réponse à furynick dans son message #78209

    Code
    datetime timeRef; init () { timeRef=Time[0]; } start () { if (timeRef == Time[0]) return(0); timeRef=Time[0]; ... }

    Cette partie est à copié directement, non j'imagine que les .... indique "ect"
    Modifié le 2013-06-14 09:10:00 par wimz01
  • furynick — en réponse à wimz01 dans son message #78212

    Oui c'est à intégrer dans le code bien sûr, en détail ça veut dire :
    - ajouter la variable globale timeRef de type datetime
    - ajouter l'initialisation de la variable timeRef dans la fonction init de l'EA
    - remplacer le if(Volume[0] != 1) return(0); par le code relatif au timeRef
    Modifié le 2013-06-14 09:13:30 par furynick
  • wimz01

    ok je regarderai si j y arrive tout a l'heure merci. actuellement j ai 4 version de l ea qui prennent position a la meme heure, le fait que je fasse la modification ne va pas me reduire a 1 seul trade possible a la meme heure ?
    Modifié le 2013-06-14 09:26:58 par wimz01
  • furynick

    J'aurais plutôt tendance à dire : "au contraire" :)
  • furynick (invité)

    L'EA et la DLL MyFxBook
    http://dl.free.fr/qTqrpoddQ

    (dsl, pas le courage de me logger)
  • Thebud (invité)

    merci pour le fichier
  • wimz01 — en réponse à furynick dans son message #78218

    et ben j'ai envie de dire nickel et merci
  • furynick

    ben vas-y, cèdes à tes envies, elles sont louables :D
  • wimz01

    est-ce que ça le fais comme ça ?

    j'ai testé ça marche

    Code
    //+------------------------------------------------------------------+ //| xSuperDonchian.mq4 | //| JJFlash | //| http://www.forexagone.com | //+------------------------------------------------------------------+ #define MAGICA1 1234 #define MAGICA2 1123 #property copyright "JJFlash" #property link "http://www.forexagone.fr" datetime timeRef; extern string text1 = "Si vous ne voulez pas mettre tout votre capital (capital_total = false), donnez le montant que vous voulez investire. Sinon mettez -true-." ; extern bool capital_total = true ; extern double capital_investi = 1000 ; extern string text2 = "Paramètres money management et indicateurs techniques." ; extern double takeprofit_pips = 15 ; extern double risk = 5. ; // Risque par trades extern int SuperTrend_period_1 = 10 ; // Periode de xSuperTrend extern double SuperTrend_multiplicator_1 = 1.7 ; // Multiplicateur de xSuperTrend extern int SuperTrend_period_2 = 10 ; // Periode de xSuperTrend extern double SuperTrend_multiplicator_2 = 3 ; // Multiplicateur de xSuperTrend extern int SuperTrend_period_3 = 10 ; // Periode de xSuperTrend extern double SuperTrend_multiplicator_3 = 3 ; // Multiplicateur de xSuperTrend extern int Donchian_period = 48 ; // Periode de Donchian extern string text4 = " Définition du stoploss au choix : " ; extern string text5 = "1 - Stoploss fixe (remplire stop_fixe)" ; extern string text6 = "2 - Stop fixe avec Donchian " ; extern string text7 = "3 - Stop suiveur avec Donchian" ; extern int choix_du_stop = 2 ; extern double stop_fixe = 50 ; extern string text8 = " Horaires ouverture de positions \n" ; extern bool first_trade = true ; extern int heure_open1 = 07 ; // Heure du premier trade (heure de la plateforme !) extern int minut_open1 = 00 ; extern bool second_trade = true ; extern int heure_open2 = 12 ; // Heure du deuxième trade (heure de la plateforme !) extern int minut_open2 = 00 ; extern string text9 = " Clôture automatiques des positions ?" ; extern bool cloture_automatique = false ; // Choisir la cloture automatique des trades extern string text10 = " Horaires clôture de positions " ; extern int heure_close1 = 12 ; // Heure du premier trade (heure de la plateforme !) extern int minut_close1 = 00 ; extern int heure_close2 = 17 ; // Heure du deuxième trade (heure de la plateforme !) extern int minut_close2 = 00 ; double gadSuperTrend ; double gadSuperTrend_1 ; int value1, value2, value3 ; int ticket ; bool verif_choix = true ; // Coefficient pour le yen double coeff(string symbol) { if (StringFind(symbol,"JPY") >=0) { return(0.01) ; } else { return(0.0001) ; } } int check_open_trade(double period, double multi, int timefr) { int iNewBars, iCountedBars, i; double dAtrx,dUpperLevelx, dLowerLevelx; // Get unprocessed ticks iNewBars = Bars ; for(i=iNewBars; i>=0; i--) { // Calc SuperTrend dAtrx = iATR(NULL, timefr, period, i) ; dUpperLevelx = (High[i]+Low[i])/2 + multi*dAtrx ; dLowerLevelx = (High[i]+Low[i])/2 - multi*dAtrx ; // Set supertrend levels if ( iClose(NULL, timefr, i) > gadSuperTrend_1 && iClose(NULL, timefr, i+1) <= gadSuperTrend_1 ) gadSuperTrend = dLowerLevelx ; else if ( iClose(NULL, timefr, i) < gadSuperTrend_1 && iClose(NULL, timefr, i+1) >= gadSuperTrend_1 ) gadSuperTrend = dUpperLevelx ; else if (gadSuperTrend_1<dLowerLevelx) gadSuperTrend = dLowerLevelx ; else if (gadSuperTrend_1>dUpperLevelx) gadSuperTrend = dUpperLevelx ; else gadSuperTrend = gadSuperTrend_1; double test ; if ( iClose(NULL, timefr, i) > gadSuperTrend || ( iClose(NULL, timefr, i) == gadSuperTrend && iClose(NULL, timefr, i+1) > gadSuperTrend_1 ) ) test = 1 ; if ( iClose(NULL, timefr, i) < gadSuperTrend || ( iClose(NULL, timefr, i) == gadSuperTrend && iClose(NULL, timefr, i+1) < gadSuperTrend_1 ) ) test = 2 ; gadSuperTrend_1 = gadSuperTrend ; } return(test) ; } double Stop(int whattrade) { double stop ; if (choix_du_stop == 3 || choix_du_stop == 2) { if ( whattrade == 1 ) stop = iLow(Symbol(), PERIOD_M30, iLowest(Symbol(),Period(),MODE_LOW,Donchian_period,1)) ; if ( whattrade == 2 ) stop = iHigh(Symbol(), PERIOD_M30, iHighest(Symbol(),Period(),MODE_HIGH,Donchian_period,1)) ; } if (choix_du_stop == 1) { RefreshRates() ; if ( whattrade == 1 ) stop = Ask - stop_fixe*coeff(Symbol()) ; if ( whattrade == 2 ) stop = Bid + stop_fixe*coeff(Symbol()) ; } return(stop) ; } double optim_lot(int whattrade) { double stop = Stop(whattrade) ; double point ; if (whattrade == 1) point = Ask ; if (whattrade == 2) point = Bid ; stop = MathAbs(stop - point) ; double lot ; if (capital_total == false) lot = capital_investi*risk*0.01*0.00001/(stop) ; if (capital_total == true) lot = AccountBalance()*risk*0.01*0.00001/(stop) ; return(lot) ; } int long(int MAGICA) { double lot = optim_lot(1) ; double stop = Stop(1) ; double take = takeprofit_pips*coeff(Symbol()) ; RefreshRates() ; ticket = OrderSend(Symbol(), OP_BUY, lot, Ask, 3, stop, Ask+take, 0, MAGICA, 0, Blue) ; return(0) ; } int short(int MAGICA) { double lot = optim_lot(2) ; double stop = Stop(2) ; double take = takeprofit_pips*coeff(Symbol()) ; RefreshRates() ; ticket = OrderSend(Symbol(), OP_SELL, lot, Bid, 3, stop, Bid-take, 0, MAGICA, 0, Red) ; return(0) ; } int order_close(int MAGICA) { for( int i = 0 ; i <= OrdersTotal() ; i++ ) { if ( OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true ) { if ( OrderMagicNumber() == MAGICA ) { double price = OrderOpenPrice() ; ticket = OrderTicket() ; double lot = OrderLots() ; RefreshRates() ; if ( OrderType() == OP_BUY ) OrderClose(ticket, lot, Bid, 3, Red) ; if ( OrderType() == OP_SELL ) OrderClose(ticket, lot, Ask, 3, Red) ; } } } return(0) ; } int Modify() { for (int i = 0 ; i<OrdersTotal() ; i++ ) { if ( OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true ) { if ( OrderMagicNumber() == MAGICA1 || OrderMagicNumber() == MAGICA2 ) { double price = OrderOpenPrice() ; ticket = OrderTicket() ; double stop = OrderStopLoss() ; double take = OrderTakeProfit() ; double new_stop ; RefreshRates() ; if ( OrderType() == OP_BUY ) { new_stop = Stop(1) ; if (new_stop > stop) OrderModify(ticket, price, new_stop, take, 0, Purple) ; } if ( OrderType() == OP_SELL ) { new_stop = Stop(2) ; if (new_stop < stop) OrderModify(ticket, price, new_stop, take, 0, Purple) ; } } } } return(0) ; } int start() { //---- if (timeRef == Time[0]) return(0); timeRef=Time[0]; // Ouverture des trades if ( first_trade == 1 && TimeHour(TimeCurrent()) == heure_open1 && TimeMinute(TimeCurrent()) == minut_open1 && verif_choix == true ) { value1 = check_open_trade(SuperTrend_period_1, SuperTrend_multiplicator_1, PERIOD_M30) ; value2 = check_open_trade(SuperTrend_period_2, SuperTrend_multiplicator_2, PERIOD_M30) ; value3 = check_open_trade(SuperTrend_period_3, SuperTrend_multiplicator_3, PERIOD_H4) ; if (value1 == 1 && value2 == 1 && value3 == 1) long(MAGICA1) ; if (value1 == 2 && value2 == 2 && value3 == 2) short(MAGICA1) ; } if ( second_trade == 1 && TimeHour(TimeCurrent()) == heure_open2 && TimeMinute(TimeCurrent()) == minut_open2 && verif_choix == true ) { value1 = check_open_trade(SuperTrend_period_1, SuperTrend_multiplicator_1, PERIOD_M30) ; value2 = check_open_trade(SuperTrend_period_2, SuperTrend_multiplicator_2, PERIOD_M30) ; value3 = check_open_trade(SuperTrend_period_3, SuperTrend_multiplicator_3, PERIOD_H4) ; if (value1 == 1 && value2 == 1 && value3 == 1) long(MAGICA2) ; if (value1 == 2 && value2 == 2 && value3 == 2) short(MAGICA2) ; } if (cloture_automatique == true) { // Fermeture des trades if ( TimeHour(TimeCurrent()) == heure_close1 && TimeMinute(TimeCurrent()) == minut_close1 ) order_close(1234) ; if ( TimeHour(TimeCurrent()) == heure_close2 && TimeMinute(TimeCurrent()) == minut_close2 ) order_close(1123) ; } if (choix_du_stop == 3) Modify() ; //---- return(0); } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- timeRef=Time[0]; if (choix_du_stop != 1 && choix_du_stop != 2 && choix_du_stop != 3) { MessageBox("Choix du stoploss erroné. Veuillez vérifier ce paramètre.", 0, 1) ; verif_choix = false ; } if (capital_investi > AccountBalance() && capital_total == false) { MessageBox("Capital investi erroné. Veuillez vérifier ce paramètre.", 0, 1) ; verif_choix = false ; } //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); }
  • furynick

    C'est tout bon :)
  • wimz01 — en réponse à furynick dans son message #78236

    Ok merci beaucoup, effectivement la prise de position est beaucoup plus rapide.
  • wimz01

    je viens de voire que les fichiers sont dispo sur le site de myfxbook sans télécharger l’exécutable, quel C..
    wimz01 a joint une image
    triple-trend-scalper-strategie-simple-7595
  • wimz01

    ça y'est je peux de nouveau faire des analyse par magic number, voici le nouveau lien du compte http://www.myfxbook.com/fr/members/wiwilamenace/xst-forward-test/609305
  • wimz01

    Je comprends pas aujourd'hui les eas ne fonctionnent pas correctement, je n'ai eu que 2 positions d'ouverte à 14h30 pour les autres ça m'a marqué "cannot login [no connection]"
  • gribouille74

    moi nickel avec la nouvelle version il a pris achat a 14h00 pour le moment vert lol
  • wimz01

    oui il fonctionne bien, mais j'ai des souci pour faire tourner plusieurs eas sur la même plateforme
  • wimz01

    C'est énervant les robots n'arrêtent pas de me faire des ratés, ce matin à 9h les 5 robots qui prennent positions que sur les 2 xst en M30 ont bien fonctionné, mais pas les 6 robots que j'ai mis à 9h30 et qui prennent position avec les 2xst m30 et celui en h4, j'ai retesté à 10h et à 10h30 toujours rien.

    J'ai l'impression que c'est depuis que j'ai fais ta modif fury, t'en pense quoi ?