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

Création d'un EA

  • JJFlash

    Ah ouai effectivement moi j'ai error 103
    C'est bizarre car en H1 sa arche très bien... Je vais regarder sa de plus près
  • thebud49

    Attend je crois que c'est a cause de mon historique , je vire l'histo et en download un new
    Modifié le 2012-12-07 21:06:42 par thebud49
  • thebud49

    C'etait bien l'histo par contre il ne prend que des longs, a mon avis c'est lié au calcul du pivot
    Modifié le 2012-12-07 21:27:39 par thebud49
  • thebud49 — en réponse à thebud49 dans son message #64587

    sa ne serait pas ce genre de formule la qu'il faut mettre


    yesterday_close=iClose(NULL,PERIOD_D1,cnt+1);
    today_open=iOpen(NULL,PERIOD_D1,cnt);
    yesterday_high=iHigh(NULL,PERIOD_D1,cnt+1);
    yesterday_low=iLow(NULL,PERIOD_D1,cnt+1);
    P = (yesterday_high + yesterday_low + yesterday_close + today_open) / 4;
  • JJFlash

    C'est bon j'ai trouvé le problème, j'ai mis des 0 au lieu de 1 ici :
    // Calcul du point pivot du jour
    double close_price = iClose(NULL, PERIOD_D1, 1) ;
    double low_price = iLow(NULL, PERIOD_D1, 1) ;
    double high_price = iHigh(NULL, PERIOD_D1, 1) ;
    double pivot = (close_price + low_price + high_price) / 3 ;

    ilgnes 19 à 23
  • JJFlash

    bon sa continue à prendre que des long, je cherche encore
  • JJFlash

    Excuse moi j'avais pas vu ton message où tu me montres comment t'aurai fait pour les points pivots. Je pense que la formule c'est bien celle que j'utilise, sur les forum et autre site on voit toujour que c'est la moyenne entre le plus haut de la veille, le plus bas de la veille, et le cours de fermeture de la veille. Si on y rajoute le cours d'ouverture d'aujourd'hui sa serai comme si on donné deux fois plus d'importance au cours de fermeture (en partant du principe que le cour de fermeture et d'ouverture sont quasiment les même).
    Tiens, deux petit lien sur lesquels je m'appuis :
    http://www.lobourse.com/debuter-en-bourse/les-techniques/les-points-pivots.php
    http://www.forexagone.com/videos/traders/dablackst4r/63-les-points-pivots
  • thebud49

    J'arrive pas a trouver d'ou vient le probleme...
  • JJFlash

    Pour ce week end et la semaine prochaine je pense que j'aurai pas trop le temps de revoir ton expert advisor, mais t'inquiète pas on y arrivera bien un moment ^^ courage :)
  • thebud49

    Merci d'avoir essayé:

    Je joint le code si une âme charitable passe dans le coin car il ne pas de sell.
    Vue que j'ai un broker 5 digit je suis obligé de rajouter un 0 au TP.
    Le paramètre Ratio ne sert a rien car le coef est implanté en dur dans le code

    Code
    //+------------------------------------------------------------------+ //| Point Pivot.mq4 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Jumping Jack Flash Corp" #property link "http://www.metaquotes.net" extern double ratio = 2 ; extern double takeprofit_pips = 400; extern double risk = 1 ; extern int hour_order = 8 ; extern int minute_order = 50 ; extern int magic_num = 0 ; extern int Slippage = 5; int start() { // Calcul du point pivot du jour double close_price = iClose(NULL, PERIOD_D1, 1) ; double low_price = iLow(NULL, PERIOD_D1, 1) ; double high_price = iHigh(NULL, PERIOD_D1, 1) ; double pivot = (close_price + low_price + high_price) / 3 ; // Condition sur le déclanchement de l'ordre int time_hour = TimeHour(TimeCurrent()) ; int time_minute = TimeMinute(TimeCurrent()) ; if (time_hour == hour_order) if (time_minute == minute_order) { if (OrdersTotal() == 0 ) { int ticket ; double current_price = iClose(NULL, PERIOD_H1, 0) ; double lot = ((AccountBalance() * risk * 0.01) / (0.5 * takeprofit_pips * 0.0001)) / 100000 ; double stoploss = iClose(NULL, PERIOD_H1, 1) - (0.5 * takeprofit_pips * 0.0001) ; double takeprofit = takeprofit_pips * 0.0001 + iClose(NULL, PERIOD_H1, 0) ; if (current_price > pivot) { ticket = OrderSend(Symbol(), OP_BUY, lot, Ask, NULL, stoploss, takeprofit, "order pivot", magic_num, 0, Green) ; return(0) ; } if (current_price < pivot) { ticket = OrderSend(Symbol(), OP_SELL, lot, Bid, NULL, stoploss, takeprofit, "order pivot", magic_num, 0, Red) ; return(0) ; } } } return(0); }
    Modifié le 2012-12-09 11:14:48 par AliX
  • BGen

    J'ai copié et collé le code dans un éditeur mais les sauts de ligne disparaissent et tout apparait sur une seule et même ligne. Essaye de fournir le ficher en pièce jointe en plus du code.

    Je remarque quand même dans le code que l'ordre d'achat et l'ordre de vente utilisent les mêmes valeurs de stoploss et takeprofit. Ces valeurs sont adaptées à l'achat mais pas à la vente. L'ordre de vente se retrouve avec un SL sous le cours et un TP au-dessus du cours. Du coup OrderSend() doit rejeter tous les ordres de vente.

    Donc au lieu d'avoir :
    Code
    double stoploss = iClose(NULL, PERIOD_H1, 1) - (0.5 * takeprofit_pips * 0.0001) ; double takeprofit = takeprofit_pips * 0.0001 + iClose(NULL, PERIOD_H1, 0) ; if (current_price > pivot) { ticket = OrderSend(Symbol(), OP_BUY, lot, Ask, NULL, stoploss, takeprofit, "order pivot", magic_num, 0, Green) ; return(0) ; } if (current_price < pivot) { ticket = OrderSend(Symbol(), OP_SELL, lot, Bid, NULL, stoploss, takeprofit, "order pivot", magic_num, 0, Red) ; return(0) ; }

    Il faudrait plutôt écrire quelque chose comme :
    Code
    if (current_price > pivot) { double stoploss = iClose(NULL, PERIOD_H1, 1) - (0.5 * takeprofit_pips * 0.0001) ; double takeprofit = takeprofit_pips * 0.0001 + iClose(NULL, PERIOD_H1, 0) ; ticket = OrderSend(Symbol(), OP_BUY, lot, Ask, NULL, stoploss, takeprofit, "order pivot", magic_num, 0, Green) ; if(ticket==-1) Print("Erreur à l\'achat"); return(0) ; } if (current_price < pivot) { stoploss = iClose(NULL, PERIOD_H1, 1) + (0.5 * takeprofit_pips * 0.0001) ; takeprofit = iClose(NULL, PERIOD_H1, 0) - takeprofit_pips * 0.0001 ; ticket = OrderSend(Symbol(), OP_SELL, lot, Bid, NULL, stoploss, takeprofit, "order pivot", magic_num, 0, Red) ; if(ticket==-1) Print("Erreur à la vente"); return(0) ; }
  • JJFlash

    Ah yes bien vu BGen !
  • JJFlash

    J'ai était mauvais sur ce coups là, j'avais programmé au début que pour les long pour que quand sa marche je fasse avec les short, mais j'avais oublié ce détaille de stoploss et takeprofit XD
    Merci BGen !
  • BGen

    T'as pas été mauvais, on en est tous au même point. Quand on a le nez dans le guidon, on voit plus les erreurs simples. La force du travail collaboratif, c'est que plus on est nombreux mieux on voit les bugs.
  • thebud49

    Merci Bgen et merci JJflash pour votre aide et votre temps
  • JJFlash

    De rien Bgen, je pense que je vais faire une vidéo pour présenter ton expert advisor si sa te dérange pas. Et je vais le mettre à télécharger pour tous.
  • JJFlash

    Genre c'est qui qui m'a foutu un -1 ? XD
  • BGen

    La poilade ! C'est peut-être thebud pour te remercier de ton aide :D

    Plus sérieusement j'espère que c'est pas moi qui ai fait ça par mégarde. Comment fait-on pour savoir si on a cliqué là-dessus ?
  • JJFlash

    Bah tout le petit caré de pouce est tout rouge, si tu rreclic dessus sa part
  • BGen

    Ah ben nan, c'pas moi. Ouf...