[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 195

 

Veuillez m'aider avec deux scripts simples qui ouvrent

desordres d'achat et de venteen attente, avec des seuils de perte et de profit fixés à un moment donné.

Distance par rapport au prix actuel. J'en ai écrit un qui fonctionne, mais je l'ai accidentellement effacé.

Je l'ai accidentellement supprimé et maintenant je ne me souviens plus de ce que j'ai fait pour le faire fonctionner.

le seul espoir pour vous...

vendre :


int start()
{
OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid-20*Point,3,Bid+50*Point,Bid-50*Point) ;

return(0) ;
}


et acheter


int start()

{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid+50*Point,Bid-50*Point) ;

return(0) ;
}

Aidez-nous s'il vous plaît...

 
NickXXX:

Bonjour à tous !

Aujourd'hui, je m'exerce avec le temps) Par exemple, je dois faire en sorte qu'un indicateur fasse quelque chose à un moment donné.

Le code sera le suivant :

Maintenant, disons que nous voulons que notre condition fonctionne non seulement à 21h30, mais aussi à 22h00, 22h30, 23h00, et ainsi de suite...

Vous pouvez, bien sûr, faire ce qui suit :

Mais je pense que c'est quelque peu irrationnel, surtout s'il y a beaucoup de points de contrôle. Je pense que vous pouvez et plus simplement.

Question, comment le rendre plus facile (droit) ?)

Ici, tout dépend si les conditions temporelles se prêtent à une sorte de loi, s'il existe un modèle. Par exemple, dans votre cas, toutes les demi-heures : if(TimeCurrent()%1800==0) {tra-ta}. S'il n'y a pas de logique dans ces points de temps - votre option. Seulement je n'aime pas ça, c'est une égalité stricte, s'il n'y a pas de coche dans cette minute - EA manquera la condition....
 
Figar0:
Ici, tout dépend si les conditions de temps sont soumises à une loi, s'il y a un modèle ou non. Par exemple, dans votre cas, toutes les demi-heures : if (TimeCurrent()%1800==0) {tra-ta}. S'il n'y a pas de logique dans ces points de temps - votre option. Seulement je n'aime pas ça, c'est une égalité stricte, s'il n'y a pas de coche dans cette minute - EA manquera la condition....

C'est-à-dire qu'il faut vérifier le reste des travaux de la division. Mais il me semble que dans ce cas, il y aura toujours un reste...

Je suis tout à fait d'accord avec la stricte égalité, je n'y ai pas encore réfléchi. En principe, vous pourriez probablement faire quelque chose comme un intervalle, par exemple 16.00 - 16.03.

Mais le but était juste de faire une fois toutes les demi-heures pour faire des calculs et aller dormir. Pour que le système ne soit pas constamment accablé de calculs inutiles.

 
NickXXX:

C'est-à-dire qu'il faut vérifier le reste des travaux de la division. Mais il me semble que dans ce cas, il y aura toujours un reste...


Oui, vous avez raison, c'est mieux : if(TimeCurrent()%1800<60) {tra-ta}.
 
Figar0:

Eh bien oui, vous avez raison, c'est mieux comme ça : si (TimeCurrent()%1800<60) {tra-ta}.

< 0,6, ou quelque chose comme ça. Le reste de la division est toujours inférieur à un :)
 

Et s'il y a beaucoup de variables comme ça ?

double Time_Mes_1=21.30;
double Time_Mes_2=22.00;
double Time_Mes_3=22.30;
...

Est-ce que c'est dommage, ou est-ce que ça va marcher ?

Et une autre petite question, si disons que je fixe un intervalle (par exemple 16.00-16.03) pour qu'une condition soit exécutée. Comment faire en sorte qu'il ne l'exécute qu'une seule fois, malgré l'arrivée de nouveaux ticks ???

 

1. Il existe un type de données : datetime. Si vous voulez quelque chose d'exotique, vous pouvez utiliser int pour le temps, mais double est un cas extrême.

2. revenez 5 à 10 pages en arrière : il y est dit comment faire ce que vous voulez.

 

Bonjour.

Veuillez m'aider à corriger le code.

Les deux lignes ci-dessous sont glitchy.

Merci d'avance.

if((OrderMagicNumber()==MAGIC || OrderMagicNumber()==777))

if((OrderMagicNumber()==(MAGIC || 777))

Le programme lui-même :

int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int MAGIC;
  int i;
  for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 }
 
tara:
S'il vous plaît, ne répandez pas l'hérésie en public. Va t'éclater ailleurs, il y a de quoi faire...
 
tara:

1. Il existe un type de données : datetime. Si vous voulez quelque chose d'exotique, vous pouvez utiliser int pour le temps, mais double est un cas extrême.

Si vous voulez utiliser le temps, vous devez utiliser int et double. 2) Remontez 5-10 pages en arrière : il y est écrit comment faire ce que vous voulez.

1. Eh bien, ici, le double n'était utilisé que pour ajouter des minutes et des heures, afin de pouvoir marquer les points de contrôle comme HH.MM (par exemple 16. 23).

2. J'ai regardé les dernières pages, il y a bien sûr une question de date, mais pas exactement la même. Ils affichent simplement au format HH.MM l'heure de la dernière commande.