[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 162

 

Chers Messieurs, je suis un nouveau venu !

J'ai commencé à écrire ma toute première EA...... et je n'arrive pas à la terminer.

Pour l'instant, je la teste dans le testeur de stratégie.

C'est très simple.

A l'ouverture de la bougie de 10 heures, je place un ordre en attente à une distance de 60 pips du prix d'ouverture de cette bougie de 10 heures.

J'ai eu un certain succès avec elle.

Mais je dois supprimer l'ordre en attente, s'il n'a pas été transformé dans une heure à partir du moment où il a été placé.

en un ordre de marché.

Voici mon code.

int start()
{
double Price=Ask+60*Point ;
double SL=Price-30*Point ;
double TP=Price + 15*Point ;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600) ;

}

Ce code se compile avec succès ; le testeur ne montre aucune erreur.

Mais le paramètre d'expiration ne fonctionne pas, c'est-à-dire que les ordres en attente qui ne sont pas convertis en ordres de marché dans l'heure qui suit ne sont pas supprimés.

J'ai changé la valeur 3600 en 3600000.... mais rien ne se passe.

Je vous serais très reconnaissant si vous pouviez me dire quelle est mon erreur.

 
solnce600:
le paramètre d'expiration ne fonctionne pas

Il est fort probable que le courtier ne le prenne pas en charge. Pour être sûr, vous pouvez faire comme ça :

int i,ot = OrdersTotal();

for(i=ot-1;i>=0;i--)
{
   if(!OrderSelect()) continue;
   if(OrderMagicNumber()!=123) continue;
   
   if(OrderType()==OP_BUYSTOP && TimeCurrent()-OrderOpenTime()>3600)
   {
      OrderDelete(OrderTicket());
   }
}
 
solnce600:

Chers Messieurs, je suis un nouveau venu !

J'ai commencé à écrire ma toute première EA...... et je n'arrive pas à la terminer.

Pour l'instant, je la teste dans le testeur de stratégie.

C'est très simple.

A l'ouverture de la bougie de 10 heures, je place un ordre en attente à une distance de 60 pips du prix d'ouverture de cette bougie de 10 heures.

J'ai eu un certain succès avec elle.

Mais je dois supprimer l'ordre en attente, s'il n'a pas été transformé dans une heure à partir du moment où il a été placé.

en un ordre de marché.

Voici mon code.

int start()
{
double Price=Ask+60*Point ;
double SL=Prix-30*Point ;
double TP=Prix + 15*Point ;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600) ;

}

Ce code se compile et se teste avec succès.

Mais le paramètre d'expiration ne fonctionne pas, c'est-à-dire que les ordres en attente qui ne sont pas convertis en ordres de marché dans l'heure qui suit ne sont pas supprimés.

J'ai changé la valeur 3600 en 3600000.... mais rien ne se passe.

Je vous serais très reconnaissant si vous pouviez me dire quelle est mon erreur.

Qu'est-ce qui vous empêche de faire en sorte que la condition de suppression soit la même à l'heure et à la minute ? Le DC peut ne pas honorer votre échéance.
 
borilunad:
Et qu'est-ce qui vous empêche de faire une condition de suppression à la même heure et à la même minute ? La société de courtage peut ne pas respecter votre date d'échéance.


alsu:

Il est fort probable que le courtier ne le prenne pas en charge. Pour être sûr, vous pouvez le faire :



J'ai un terminal Alpari, sur mon compte de démonstration, j'ai réglé manuellement le pendule et mis le délai d'expiration - 1 heure. Tout allait bien.

J'ai lu que si le courtier ne prend pas en charge ce paramètre, il y aurait une erreur.... mais il n'y a pas d'erreur.

Les tests sont en cours ... mais l'ordre n'est pas supprimé.

 
borilunad:
Et qu'est-ce qui vous empêche de faire la condition de supprimer par la même heure et la même minute ? Le DC peut ne pas répondre à votre échéance.

Et à l'heure et à la minute ?

Merci.

 
solnce600:

Et pourquoi pas à l'heure et à la minute ?

Merci.



Qu'est-ce qui doit être substitué au paramètre d'expiration ?

 
solnce600:

Et par une heure et une minute, comment ça se fait ?

Merci.

C'est la même chose que lorsque vous l'avez ouvert, mais une heure plus tard, à 11 heures. C'est ce que vous avez ! Ce n'est pas comme ça que je le fais, mais ça ne change rien à l'affaire.
 
borilunad:
Comme vous l'avez ouvert, mais une heure plus tard, à 11 heures. Je le fais différemment, mais ça ne change rien à l'affaire.

Désolé d'être stupide, mais je n'ai pas compris si je dois changer quelque chose dans ce paramètre ou non.

Si c'est le cas, j'apprécierais que vous insériez le paramètre d'expiration dans mon code comme il se doit, et que vous colliez la ligne entière dans le texte de votre réponse.

Merci.

 
solnce600:

Désolé d'être stupide, mais je n'ai pas compris si je dois changer quelque chose dans ce paramètre ou pas.

Si c'est le cas, j'apprécierais que vous insériez le paramètre d'expiration dans mon code comme il se doit, et que vous colliez la ligne entière dans le texte de votre réponse.

Merci.



Je peux suggérer la variante suivante :

si(Hour()==11 && OrdersTotal()>0)

{

si(OrderSelect(0,SELECT_BY_POS)==true)

{

si(OrderType()==OP_BUYSTOP)

{

OrderDelete(OrderTicket()) ;

}

}

}

Et vous n'utilisez pas le paramètre d'expiration. L'inconvénient est que, lors de la négociation, l'ordinateur doit être en marche, l'internet connecté et le terminal allumé pour que la position soit clôturée.

 
beginner666999:


Je peux vous suggérer l'option suivante :

si(Hour()==11 && OrdersTotal()>0)

{

si(OrderSelect(0,SELECT_BY_POS)==true)

{

si(OrderType()==OP_BUYSTOP)

{

OrderDelete(OrderTicket()) ;

}

}

}

Et vous n'utilisez pas le paramètre d'expiration. L'inconvénient est que, lors de la négociation, l'ordinateur doit être en marche, l'internet connecté et le terminal allumé pour que la position soit clôturée.

Que pensez-vous si au moment de l'annulation de l'ordre en suspens, le prix est proche de celui-ci, c'est-à-dire que l'ordre en suspens sera dans la zone de gel.

Sera-t-il supprimé dans ce cas en utilisant OrderDelete ?

Sera-t-il supprimé dans ce cas en utilisant le paramètre d'expiration ?