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

Quelle boucle utiliser pour détecter une position existante ?!

  • Tr4d3r

    Bonjour à tous !

    Depuis quelques jours je me suis de nouveau lancer dans le trading, j'avais arrêté à cause du stress que ça me procurait :D

    Maintenant, pour éviter ça, je voudrais coder un robot pas trop complexe pour m'aider à ne plus avoir les yeux constamment sur les graphiques.

    Je souhaiterais faire une espèce de martingale (pas taper !), donc ouvrir une position à X pips, ensuite à X pips + 25 etc...

    Sauf que si le cours repasse à X pips alors que la première position est encore ouverte, le robot va l'ouvrir à nouveau, et c'est PAS BON !

    Après des heures de recherches, j'ai à priori trouvé la boucle qu'il me faut, et ce serait ça :

    Code
    for (int i = 0; i < Total; i ++) { bool Select_1 = OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType() <= OP_SELL && OrderMagicNumber() == MagicNumber) { IsTrade = True; if(OrderType() == OP_BUY) {

    ou ça :

    Code
    for(i=0;i<total;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { int type=OrderType();

    En réalité, elle est codé de plusieurs manière et à chaque fois je me choppe des erreurs dans MT4, j'arrive pas à mettre en place ce morceau de code.

    Une âme charitable dans les environs pour aider un pauvre codeur du dimanche ?

    C'est bien cette boucle qui défini s'il existe déjà une position ouverte avec un MagicNumber ?!

    Je vous remercie par avance à tous et bonne soirée :)
  • stani

    Salut

    De ce que je comprend, ce qu'il te faut, ce n'est pas un robot mais un script, qui ne s’exécutera qu'une fois au lancement.
    Tu devrais trouver cela assez facilement sur le web.
  • jbaptiste

    Ca peut pas marcher en copiant collant du code comme ça.
    Il faut que tu comprennes ce que tu écris.
    Consulte la doc mql4 tout y est.
  • Tr4d3r

    Salut et merci pour vos réponses :)

    stani : le problème d'un script, c'est qu'il s'exécutera une seul fois, donc ça ne convient pas. Il faut vraiment un robot, qui puisse mettre une position par exemple à un cours de 1000, puis une autre à 1025, puis à 1050 etc... et que si le cours repasse à 1050, ou 1025 ou 1000 et qu'une position existe déjà, il n'en mette pas une nouvelle.

    jbaptiste : effectivement, ça ne peut pas marcher comme ça, c'est juste que j'ai copié que le bout de code sans rien d'autre. Mais je cherche à chaque fois les termes en MQL4 pour savoir à quoi ça correspond et tout n'est pas clair au premier abord. Dans les grandes lignes je comprends, mais il y a beaucoup de fonctions encore que je ne saisi pas, mais ça vient !

    Sinon, je pense que je vais demander à ce qu'un freelance me le code, parfois mieux vaut payer quelqu'un qui prendra 1h à coder (ou bien plus selon la complexité), que de chercher durant des dizaines et des dizaines d'heures. Une fois le robot codé je saurais rajouter certaines fonctions moi-même.

    Pour l'instant, je continue en manuel et c'est gonflant, je suis trop sujet au stress :D
  • lefeuvr3

    Il faudrait que tu mettes ton programme ici afin que nous puissions le modifier efficacement
    Bonne journée
    gerard
  • Tr4d3r

    Merci lefeuvr3.

    Mais du coup j'ai demandé à une personne de me faire une partie de mon robot, donc j'attends son retour.

    J'aime pas faire ça, je préfère toujours apprendre par moi même, mais maintenant avec des enfants, un travail, une nouvelle maison, j'ai plus vraiment le temps de passer des dizaines d'heures à chercher et encore chercher comme je le fait d'habitude.

    J'ai encore du temps, mais payer 50 - 100€ pour gagner beaucoup de temps, pourquoi pas !
  • Tr4d3r

    La semaine dernière j'ai pu avoir mon EA par la personne qui me l'a codé.

    Tout n'est pas parfait, car si je passe via un compte démo FXCM, ça ouvre des positions quand il faut, et parfois quand il faut pas. En passant en compte démo Activtrades, là c'est pas mal, ça ouvre quasi toujours au bon moment, mais il a du mal à savoir si une position n'est pas déjà ouverte, et parfois je me retrouve avec 4 ou 5 positions du même montant au même cours ! Mais bon, là c'est une version béta, il va tenter de m'arranger ça.

    Maintenant faut que je m'attaque au backtest pour savoir si je vais cramer mon compte en 1 semaine :)
  • lefeuvr3

    Par experience ,je ne fais pas de backtests en compte demo ou la nuit ou le weekend.
    Je fais mes backtests sur mon compte live et en semaine uniquement .
    Bonne journée
    gerard
  • Tr4d3r

    Tu vois vraiment une différence ? Je sais que le nombre de pips pour le spread peut être récupérer sur le compte MT4 au moment du backtest, donc sur ce point oui, ça peut faire la différence, mais on peut aussi le régler manuellement, donc quand le spread est haut comme la nuit ou les Week end, on peut toujours backtester en réglant ça manuellement.

    Après, je suis très loin d'être un spécialiste en la matière !
  • lefeuvr3

    Tu pourrais rajouter au programme

    Code
    if (!IsTradeContextBusy() && IsTradeAllowed())
    comme suit
    Code
    if (!IsTradeContextBusy() && IsTradeAllowed()) { result=OrderSend(Symbol(),OP_BUY
    et
    Code
    if (!IsTradeContextBusy() && IsTradeAllowed()) { result=OrderSend(Symbol(),OP_SELL

    Voici un programme avec la fonction en place pour exemple
    https://www.forexagone.com/forum/expert-advisors-robots/rengou-mtf-ordres-stops-23769#117429

    J'espère que cela t'aura été utile

    Bonne journée
    Gerard
    Modifié le 2020-02-28 11:31:42 par lefeuvr3 : correction fautes ortographe