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

Insérer une coupure automatique de postion dans mon robot

  • popofpopof

    bonjour,

    je souhaite insére dans mon robot une coupure de l'ensemble des positions ouverte a entre deux heure que j'aurai parametré.

    j'ai fait un code qui fonctionne seul ( en robot autonnomme) mais quand je l'ajoute dans mon robot il ne marche pas pouvez vous m'aide?
    voila le code qui marche


    //--- input parameters
    extern string note2 ="heure interdit de trading";
    extern int HeureDebutinterdi = 7;
    extern int MinuteDebutinterdi = 10;
    extern int HeureFininterdi = 23;
    extern int MinuteFininterdi =59;
    int OpenOrders = 0, cnt = 0;

    int start()
    {

    { {
    if(TimeHour(CurTime()) < HeureDebutinterdi)
    return(0);
    //----
    if(TimeMinute(CurTime()) < MinuteDebutinterdi)
    return(0);
    //----
    if(TimeHour(CurTime()) > HeureFininterdi)
    return(0);
    //----
    if(TimeMinute(CurTime()) > MinuteFininterdi )
    return(0);
    }



    int total = OrdersTotal();
    for(int i=total-1;i>=0;i--)
    {
    OrderSelect(i, SELECT_BY_POS);
    int type = OrderType();

    bool result = false;

    switch(type)
    {
    //Close opened long positions
    case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
    break;

    //Close opened short positions
    case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );

    }

    if(result == false)
    {
    Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
    Sleep(3000);
    }
    }
    }
    return(0);
    }
  • JJFlash

    Salut, ça veut dire quoi "il ne marche pas" ? C'est tout ton expert advisor qui plante ou c'est simplement qu'il ne coupe pas les positions dans ta plage horaire que tu définis ?
  • stani

    Tu ne peut pas insérer une autre fonction start() dans un Ea déjà existant. Donne lui un autre nom, et appelle la quand tu en a besoin, a chaque tick a première vue.
  • JJFlash

    Oui c'est sûr que si tu a copié collé tel quel le bout de programme que tu nous montres, ça va pas du tout fonctionner ^^
  • popofpopof

    stani comment je peux lui donné un nom et l'appel ensuite dans le stat ? ( pas besoin a chaque tick
  • JJFlash

    Au lieu de l'appeler start tu l'appelles par le nom de ton choix. Ensuite tu ne le mets pas dans la fonction start mais à l'extérieur.
  • stani

    tu renomme "int start()" en ce que tu veux, par exemple "int mafonction()", tu colle ton code a la fin de ton EA, et tu écris dans celui-ci a l'endroit ou tu veux contrôler l'heure: mafonction();
    Ainsi ton EA appellera ton code et l’exécutera. Après je n'ai pas regarder si il fonctionne, c'est un autre problème.
  • popofpopof

    ok merci pour l info je teste