Mon compte
Déjà membre ? S'identifier
Non inscrit ? S'inscrire
 
+ Répondre à la discussion
Page 1 sur 4 1 2 3 ... DernièreDernière
Affichage des résultats 1 à 10 sur 37
  1. #1
    Membre Star abrikabrac est très intéressant
    Date d'inscription
    March 2009
    Messages
    396
    Pouvoir de réputation
    9

    Qelqu'un pourait-il m'expliquer ce code pour EA? Qelqu'un pourait-il m'expliquer ce code pour EA?

    J'ai dégotté un EA qui a de bons résultats(voir la courbe jointe).
    Il tourne en H1 et prend une position par heure.


    Mais je ne comprends pas son fonctionnement et ne sais pas sur quel critères , il entre en position.

    Voici le code:

    extern string LotPerAccount = "100eur_lot=0.01 - 1000eur_lot=0.1 - 10000eur_lot=1.0";
    extern double lot = 0.1;
    extern int TradeTime = 18;
    extern int TakeProfit_BUY = 36;
    extern int StopLoss_BUY = 123;
    extern int TakeProfit_SELL = 26;
    extern int StopLoss_SELL = 174;
    extern int MaxOpenTime_BUY = 167;
    extern int MaxOpenTime_SELL = 121;
    extern string LotSell = "LotSell=(lot/lot)*multiplier .......... allways=multiplier";
    extern double Multiplier_Lot_SELL = 0.01;
    extern string LotBuy = "LotBuy=lot*multiplier";
    extern double Multiplier_Lot_BUY = 1.5;
    int gi_152 = 1;
    double g_pips_156 = 9.0;
    double g_pips_164 = 10.5;
    int gi_172 = 7;
    int gi_176 = 2;
    int g_slippage_180 = 10;
    bool gi_184 = TRUE;
    int g_ticket_188;
    int g_ord_total_192;
    int g_pos_196;
    double g_bid_200;
    double gd_208;

    int OpenLong(double a_lots_0 = 0.1) {
    string l_comment_8 = "Forex_EAv1.7,long";
    int l_magic_16 = 0;
    g_ticket_188 = OrderSend(Symbol(), OP_BUY, a_lots_0, Ask, g_slippage_180, Ask - StopLoss_BUY * Point, Ask + TakeProfit_BUY * Point, l_comment_8, l_magic_16, 0, Green);
    if (g_ticket_188 > 0) {
    if (OrderSelect(g_ticket_188, SELECT_BY_TICKET, MODE_TRADES)) return (0);
    Print("OpenLong(),OrderSelect(): ", GetLastError());
    return (-1);
    }
    Print("Error opening Buy order : ", GetLastError());
    return (-1);
    }

    int OpenShort(double a_lots_0 = 0.1) {
    string l_slippage_8 = 10;
    string l_comment_12 = "Forex_EAv1.7,short";
    int l_magic_20 = 0;
    g_ticket_188 = OrderSend(Symbol(), OP_SELL, a_lots_0, Bid, l_slippage_8, Bid + StopLoss_SELL * Point, Bid - TakeProfit_SELL * Point, l_comment_12, l_magic_20, 0, Red);
    if (g_ticket_188 > 0) {
    if (OrderSelect(g_ticket_188, SELECT_BY_TICKET, MODE_TRADES)) return (0);
    Print("OpenShort(),OrderSelect(): ", GetLastError());
    return (-1);
    }
    Print("Error opening Sell order : ", GetLastError());
    return (-1);
    }

    int init() {
    return (0);
    }

    int deinit() {
    return (0);
    }

    int start() {
    if (TimeHour(TimeCurrent()) > TradeTime) gi_184 = TRUE;
    g_ord_total_192 = OrdersTotal();
    if (g_ord_total_192 < gi_152) {
    if (TimeHour(TimeCurrent()) == TradeTime && gi_184) {
    if (Open[gi_172] - Open[gi_176] > g_pips_164 * Point) {
    if (AccountFreeMarginCheck(Symbol(), OP_SELL, lot / lot * Multiplier_Lot_SELL) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) {
    Print("Not enough money");
    return (0);
    }
    OpenShort(lot / lot * Multiplier_Lot_SELL);
    gi_184 = FALSE;
    return (0);
    }
    if (Open[gi_176] - Open[gi_172] > g_pips_156 * Point) {
    if (AccountFreeMarginCheck(Symbol(), OP_BUY, lot * Multiplier_Lot_BUY) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) {
    Print("Not enough money");
    return (0);
    }
    OpenLong(lot * Multiplier_Lot_BUY);
    gi_184 = FALSE;
    return (0);
    }
    }
    }
    if (MaxOpenTime_BUY > 0) {
    for (g_pos_196 = 0; g_pos_196 < g_ord_total_192; g_pos_196++) {
    if (OrderSelect(g_pos_196, SELECT_BY_POS, MODE_TRADES)) {
    gd_208 = (TimeCurrent() - OrderOpenTime()) / 3600.0;
    if (NormalizeDouble(gd_208, 8) - MaxOpenTime_BUY >= 0.0) {
    RefreshRates();
    if (OrderType() == OP_BUY) g_bid_200 = Bid;
    if (OrderClose(OrderTicket(), OrderLots(), g_bid_200, 10, Yellow)) {
    Print("CloseLong(),OrderSelect():", OrderTicket());
    OrderPrint();
    } else Print("Error close Long order :", GetLastError());
    }
    } else Print("TimeOver", GetLastError());
    }
    }
    if (MaxOpenTime_SELL > 0) {
    for (g_pos_196 = 0; g_pos_196 < g_ord_total_192; g_pos_196++) {
    if (OrderSelect(g_pos_196, SELECT_BY_POS, MODE_TRADES)) {
    gd_208 = (TimeCurrent() - OrderOpenTime()) / 3600.0;
    if (NormalizeDouble(gd_208, 8) - MaxOpenTime_SELL >= 0.0) {
    RefreshRates();
    if (OrderType() == OP_SELL) g_bid_200 = Ask;
    if (OrderClose(OrderTicket(), OrderLots(), g_bid_200, 10, Yellow)) {
    Print("CloseShort(),OrderSelect():", OrderTicket());
    OrderPrint();
    } else Print("Error close Sell order :", GetLastError());
    }
    } else Print("TimeOver", GetLastError());
    }
    }
    return (0);
    }



    Il manque un "MAGIC number" pour pouvoir le faire tourner correctement. Et pour l'instant, il ne prends qu'une position à la fois.
    Quelqu'un a une idée de la façon dont-il fonctionne ? Parce que je ne sais pas si ses bons résultats sont dus à ses qualités intrasèques ou à mon opimisation. Merci d'avance.
    Année 2009: EURUSD et USDCHF avec prise de position chaque jour à 21 heures
    Images attachées
    Dernière modification par abrikabrac ; 30/12/2009 à 16h43.

  2. #2
    Membre Star vamm972 est actif et passionnant vamm972 est actif et passionnant Avatar de vamm972
    Date d'inscription
    November 2008
    Localisation
    quebec
    Messages
    1 429
    Pouvoir de réputation
    24

    tiens j'ai ajouté le magic number automatique par paire utilisées

    à vérifier si ca marche , car j'ai fais de la "copie" sur mes autres EA
    Dernière modification par vamm972 ; 04/04/2010 à 15h42.

  3. #3
    Membre Star abrikabrac est très intéressant
    Date d'inscription
    March 2009
    Messages
    396
    Pouvoir de réputation
    9

    Merci pour ta rapidité Vamm ! Je teste.

    As-tu une idée de son fonctionnement ?

  4. #4
    Membre Star vamm972 est actif et passionnant vamm972 est actif et passionnant Avatar de vamm972
    Date d'inscription
    November 2008
    Localisation
    quebec
    Messages
    1 429
    Pouvoir de réputation
    24

    Citation Envoyé par abrikabrac Voir le message
    Merci pour ta rapidité Vamm ! Je teste.

    As-tu une idée de son fonctionnement ?
    alors là pas du tout

  5. #5
    Membre Star taowill est sur la route de la réputation... Avatar de taowill
    Date d'inscription
    May 2008
    Messages
    430
    Pouvoir de réputation
    6

    quels sont tes réglages pour obtenir ces résultat?

  6. #6
    Membre Star taowill est sur la route de la réputation... Avatar de taowill
    Date d'inscription
    May 2008
    Messages
    430
    Pouvoir de réputation
    6

    Vamm peux tu ajouter la methode d'alembert pour la gestion de mise?
    ( à chaque perte on incrémente la taille du lot d'une mise initiale et a chaque gain on diminue d'une mise initiale).

  7. #7
    Membre Star abrikabrac est très intéressant
    Date d'inscription
    March 2009
    Messages
    396
    Pouvoir de réputation
    9

    Là, il est un peu tard. Demain, je posterai tous mes fichier .SET pour chaque heure de la journée et pour chaque parité. Y'a du potentiel.

    Merci encore pour le "magic" number Vamm. Ca semble marcher..Mais pour une raison inconnue, l'EA ne prends aucune position si une autre position est déjà en cours. Par exemple, si une position GBPUSD est ouverte avec un autre EA, celui ci, n'ouvre pas la position en EURUSD. Même chose si l'EA a déjà ouvert un trade à 16h en EURUSD, il n'ouvira rien à 17h. Je pensais que c'était du à l'absence de MN mais manifestement, le problème se pose toujours.

    En fait , j'ai optimisé pour chaque heure, sur les graphes postés plus haut, il n'y a qu'une heure: 21h. Le DD max tourne autour de 7-10%. Donc, je me dis que si l'EA tourne toute la journée(24 trades) ça peut cartonner. D'où, l'interet de pouvoir lui faire prendre plusieurs positions en simultanée.


    (C'est un EA que j'ai récupéré sur un forum américain, ,en ex4 et que j'ai fait décompiler pour avoir le code. L'EA a été posté par un type qui a un seul message si mal tourné que personne n'a répondu, du coup, je ne sais pas quelle est la srtatégie, il semble que les résultats soient vraiment positifs.)

  8. #8
    Membre Star vamm972 est actif et passionnant vamm972 est actif et passionnant Avatar de vamm972
    Date d'inscription
    November 2008
    Localisation
    quebec
    Messages
    1 429
    Pouvoir de réputation
    24

    Citation Envoyé par taowill Voir le message
    Vamm peux tu ajouter la methode d'alembert pour la gestion de mise?
    ( à chaque perte on incrémente la taille du lot d'une mise initiale et a chaque gain on diminue d'une mise initiale).
    incrémenter ne me pose pas de problème pour les trades en cours, l'inverse oui car il faut faire appel à l'historique et je maitrise mal , pour le moment

    abrikabrac

    ca doit venir de la structure même de l'EA , j'ai eu le même problème dans mon premier EA, fait avec le site Expert Advisor builder

  9. #9
    Membre Star taowill est sur la route de la réputation... Avatar de taowill
    Date d'inscription
    May 2008
    Messages
    430
    Pouvoir de réputation
    6

    Citation Envoyé par vamm972 Voir le message
    incrémenter ne me pose pas de problème pour les trades en cours, l'inverse oui car il faut faire appel à l'historique et je maitrise mal , pour le moment

    abrikabrac

    ca doit venir de la structure même de l'EA , j'ai eu le même problème dans mon premier EA, fait avec le site expert advisor builder
    ah ok, alors dans ce cas peut tu faire une version avec incrémentation. et retour au lot initiale des qu'il y a eu gain?

  10. #10
    Membre Star kk2val est sur la route de la réputation...
    Date d'inscription
    January 2008
    Messages
    249
    Pouvoir de réputation
    7

    fonctionnement fonctionnement

    Bonjour..

    Je me suis un peu penché sur le fonctionnement de la bestiole..

    en fait l'ea calcule la différence entre le Open de bar+2 ( gi_176) et bar+7 (gi_172) et compare cette différence à gi_pips 156 ..

    si à l'heure préréglée trade time la diff est sup au nbre de pips en ref >>>prise de pos long

    l'ea fait la mme chose pour short mais en inversant la diff bar+7 et bar+2 et compare à gi_pips 164..


    voilà pour les prises de position

    kk2val


    kk2val

Discussions similaires

  1. qelqu'un as t'il ce script
    Par gillou33 dans le forum Programmation
    Réponses: 1
    Dernier message: 07/08/2009, 22h33
  2. Cherche personnes pour m'expliquer le ba-ba
    Par natye34 dans le forum Novice sur le Forex
    Réponses: 4
    Dernier message: 03/03/2009, 19h03
  3. PB de code
    Par pingoo dans le forum Systèmes de Trading Auto
    Réponses: 2
    Dernier message: 03/02/2009, 21h46
  4. PB de code
    Par pingoo dans le forum Systèmes de Trading Auto
    Réponses: 0
    Dernier message: 26/01/2009, 11h16
  5. Bernanke : l'économie US pourait se contracter légèrement au 1er trimestre.
    Par Realtime Forex dans le forum Analyses Forex professionnelles
    Réponses: 0
    Dernier message: 02/04/2008, 16h00

Ajouter aux Favoris | Plan du site | Archives | Forex | Contact