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

Script pour close All position dans le cas ou une condition est vérifiée

  • Benj22341

    Bonjour,
    Je viens vers vous car je n'ai pas réussi à avoir de retour auprès de la communauté mql5.com

    Voilà ou j'en suis :

    J'ai le script suivant qui me permet de close toute les positions quand je le mets sur un graphique. Mais j'aimerai pouvoir faire en sorte que j'applique ce script au graphique, mais il ne s'exécute que lorsque le flottant (Drawdown) de cette paire dépasse un certain seuil.

    Exemple : J'ai x trades sur EURUSD, j'applique mon script et lorsque le flottant atteindra une valeur comme -500, le script se déclanche et close tout les trades.

    Si en plus ce script peut désactiver l'autotrading de cette paire ce serait génial.

    Voila si qqun d'entre vous est capable de m'aider sur tout ça je suis preneur ;)


    sinput int RTOTAL = 4; // Число повторов при неудачных сделках
    sinput int SLEEPTIME = 1; // Время паузы между повторами в секундах
    sinput int Deviation_ = 10; // Отклонение цены
    sinput bool exAllSymbols = false; // false - только текущий, true - все символы


    #define _CS(A) ((!IsStopped()) && (A))

    bool CloseAllPositions( const bool AllSymbols = true, const int Slippage = 0 )
    {
    bool Res = true;

    for (int i = OrdersTotal() - 1; _CS(i >= 0); i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL) &&
    (AllSymbols ? true : (OrderSymbol() == Symbol())))
    Res &= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage);

    return(Res);
    }


    void OnStart()
    {
    for (int i = 0; _CS((i < RTOTAL) && (!CloseAllPositions(exAllSymbols, Deviation_))); i++)
    Sleep(SLEEPTIME * 1000);
    }
  • Mikiburger

    Bonjour,

    Je vois que ta demande était déjà qu'il y a 3 jours, j'espère que tu as trouvé la solution.
    Je ne suis pas devant mon mt4, je ne sais donc pas essayer avant de te répondre mais j'essayerais une commande du genre:

    if (AccountProfit()<-500) CloseAllPositions(exAllSymbols, Deviation_)
  • Tr4d3r

    Bonjour,

    Logiquement, un script ne se lance qu'une fois, donc là, il te faut faire un EA qui va se mettre en boucle et regarder à chaque moment les conditions voulus, et une fois la condition détectée, fermer toutes les positions puis arrêter le trading auto.

    Si tu trades déjà en EA comme j'ai l'impression, faut rajouter du code à ton EA actuel.

    Après, j'en sais pas plus sur quel code mettre.