[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 336

 

Messieurs ! Bonsoir (le soir, le matin, l'après-midi) !

Pourriez-vous me donner une réponse à une question simple ?

Quelle fonction renvoie le prix d'ouverture d'un ordre, qui :

- fermé en dernier

- fermé sur un Stop Loss.

Merci pour votre aide.

 
solnce600:

Messieurs ! Bonsoir (le soir, le matin, l'après-midi) !

S'il vous plaît, dites-moi la réponse à une question simple.

Quelle fonction renvoie le prix d'ouverture de l'ordre, qui :

- fermé en dernier

- Fermé sur un Stop Loss.

Merci pour votre aide.



il n'y a pas de telle fonction - il y a un peu de code à écrire
 
artmedia70:

Les variables ne peuvent être utilisées que lors du test de la stratégie dans le testeur.

Dans le monde réel, chaque valeur nécessaire à l'exécution de la logique doit être calculée au bon moment, car les valeurs de ces variables sont très faciles à perdre, par exemple lors d'un redémarrage.



Artem, et il est possible de donner un exemple ? Après tout, il est même possible de remplacer une variable par une fonction. Et vous ne pouvez pas remplacer une fonction par une variable :)

 

Solnce600:


Messieurs ! Bonsoir (nuit, matin et après-midi) à tous !

S'il vous plaît, dites-moi la réponse à une question simple pour vous.

Quelle fonction renvoie le prix ouvert de l'ordre, qui :

- fermé en dernier

- Fermé sur un Stop Loss.

Merci pour votre aide.



Il y aune branche comme ça, il y a beaucoup de choses là-bas, des choses intéressantes.

Cette fonction renvoie le drapeau de fermeture de la dernière position de l'arrêt.

 
r772ra:


Il y a unetelle branche, il y a beaucoup de choses intéressantes là-bas.

Cette fonction renvoie un drapeau pour fermer la dernière position de l'arrêt.

Merci beaucoup pour le conseil.

C'est exactement la fonction que j'utilise.

Après la clôture d'un ordre stop, je dois coder l'ouverture d'ordres au prix du marché au cours de

du dernier ordre clôturé au stop.

J'ai essayé de mémoriser le prix d'ouverture du dernier ordre fermé au stop dans la variable
if (isCloseLastPosByStop()==True)                                            //если посл.орд.SELL  закрылся по стопу(стоп данного ордера SELL = 295 п.)

double PrStop = (Bid - 0.0295);                                              // от цены срабатывания СТОП-ЛОССА вычитаем 295 п. 
                                                                             // и запоминаем это значение,(т.е. цену открытия ордера)в переменной  PrStop         
if (Bid == PrStop )                                                          //если цена Bid будет равна значению PrStop
OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 );//открыть ордер.

Mais lorsque le prix est égal à la valeur de PrStop, l'ordre n'est pas passé.

J'ai également essayé de placer un ordre lorsque le prix est inférieur à la valeur de PrStop.

Mais il n'y a pas eu de nouvel ordre.

if (Bid < PrStop ) 

Je pense que la raison peut être que jusqu'à la fermeture de l'ordre suivant, il n'y a pas de STOP LOSS.

isCloseLastPosByStop () retournera Vrai à chaque tick et la variable PrStop obtiendra

À CHAQUE TIC, UNE NOUVELLE VALEUR.

J'ai examiné attentivement toutes les fonctions de Kim, mais leurs noms ne semblent pas convenir à la résolution de mon problème.

Je serais très reconnaissant à ceux qui me guideront dans la bonne direction.

 

S'il vous plaît, donnez-moi un indice ! Je commence tout juste à faire mes premiers pas en programmation.

Comment une fonction pourrait-elle fonctionner plus rapidement ? (La fonction est appelée 2 fois)

- s'il est appelé depuis la bibliothèque

- s'il est décrit en dehors de la fonction start() directement dans l'EA.

- si c'est dans la fonction start() elle-même

 

solnce600, Andrei, vous avez la dernière position fermée sur SL dans vos mains ! Et qui vous empêche de découvrir tout ce que vous voulez à son sujet, en modifiant un peu la fonction :

double GetOOPCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t; 
  double   ocp, osl, OOP;
  double p = 0;
  int    i, j=-1, k=OrdersHistoryTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
        if (op<0 || OrderType()==op) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
//            p = OrderProfit()+OrderCommission()+OrderSwap();
            OOP = OrderOpenPrice();
  } } } } }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    ocp=NormalizeDouble(OrderClosePrice(), 5);
    osl=NormalizeDouble(OrderStopLoss(), 5);
//    if (ocp==osl) return(p);
    if (ocp==osl) return(OOP);
  }
  return(0);
}
J'ai commenté les deux lignes qui me donnent le profit de clôture, et ajouté deux lignes pour obtenir le prix d'ouverture de cette position fermée. Je ne l'ai pas testé, mais cela devrait fonctionner puisque tout fonctionne lorsque je substitue ce dont j'ai besoin ! Regardez !
 
borilunad:

solnce600, Andrei, vous avez la dernière position fermée sur SL dans vos mains ! Et qui vous empêche de découvrir tout ce que vous voulez à son sujet en modifiant un peu la fonction :

J'ai commenté les deux lignes qui me donnent le profit de clôture et ajouté deux lignes pour obtenir le prix d'ouverture de cette position fermée. Je ne l'ai pas testé, mais cela devrait fonctionner puisque tout fonctionne quand je mets ce dont j'ai besoin ! Regardez !

Merci beaucoup pour votre aide rapide.

Je vous serais également très reconnaissant si vous pouviez me donner une idée sur......

Ma stratégie est très simple.

Si le prix se déplace vers le haut (300 pips) plus rapidement depuis l'ouverture (iOpen (Symbol (),0,0) qu'une distance plus petite(10 pips) dans la direction opposée

-Après le renversement du prix et le passage dans la direction opposée, ouvrez des ordres de marché au prix d'ouverture de chaque bougie ( iOpen (Symbol (),0,0) .

Pour mettre en œuvre cette idée, la première chose qui vient à l'esprit est la suivante

Au prix d'ouverture de chaque bougie, placez un ordre de marché avec un stop important et un petit profit.

Si l'ordre s'est fermé plus rapidement sur le stop que sur le profit, placez un ordre au marché au prix d'ouverture de l'ordre qui s'est fermé sur le stop.

Cette méthode vous permet de détecter les chandeliers à leur prix d'ouverture qui, par la suite, devraient être définis comme des ordres de marché......Mais pour ce faire, je dois placer le marché

desordres avec des stops importants et des petits profits à l'ouverture de chaque courant.

Et je n'ai pas besoin de placer des ordres à l'ouverture de chaque bougie dans le trading réel.

La première chose qui me vient à l'esprit est

- Nous devons ouvrir un ordre à l'ouverture de chaque chandelier sur un compte de démonstration qui aura un EA attaché à son graphique.

- Et je devrais ouvrir des ordres uniquement selon les conditions décrites ci-dessus sur un compte réel avec un autre EA attaché au graphique.

Mais il me semble que trader sur deux comptes et deux EA n'est pas non plus la variante la plus pratique et optimale. Je voudrais trader sur un seul compte et un seul EA.

QUESTION : Comment puis-je trouver les conditions d'ouverture de position décrites ci-dessus sans ouvrir des ordres au marché à l'ouverture de chaque bougie ?

Merci.

 
solnce600:

Merci beaucoup pour votre aide rapide.

Je vous serais également très reconnaissant si vous pouviez me donner une idée sur......

Ma stratégie est très simple

Si le prix a augmenté(baissé) de plus de distance(300 pips) que de moins de distance(10 pips) dans la direction opposée du début de la bougie (iOpen (Symbol (),0,0)

-puis après que le prix se retourne et va dans la direction opposée, ouvrez des ordres de marché au prix de la bougie ( iOpen (Symbol (),0,0) à l'ouverture de chaque bougie.

Pour mettre en œuvre cette idée, la première chose qui vient à l'esprit est la suivante

1. au cours d'ouverture de chaque bougie, placez un ordre au marché avec un stop important et un petit profit.

Si l'ordre est fermé plus rapidement au niveau du stop qu'au niveau du profit, placez un ordre au marché au prix d'ouverture de l'ordre qui a été fermé au niveau du stop.

Cette méthode vous permet de détecter les chandeliers à leur prix d'ouverture qui, par la suite, devraient être définis comme des ordres de marché......Mais pour ce faire, je dois placer le marché

desordres avec des stops importants et des petits profits à l'ouverture de chaque courant.

Et je n'ai pas besoin de placer des ordres à l'ouverture de chaque bougie dans le trading réel.

La première chose qui me vient à l'esprit est

- Nous devons ouvrir un ordre à l'ouverture de chaque bougie dans un compte de démonstration qui aura un EA attaché à son graphique.

- Et je devrais ouvrir des ordres uniquement selon les conditions décrites ci-dessus sur un compte réel avec un autre EA attaché au graphique.

Mais il me semble que trader sur deux comptes et deux EA n'est pas non plus la variante la plus pratique et optimale. Je voudrais trader sur un seul compte et un seul EA.

Q : Comment puis-je détecter les conditions d'ouverture de la position sans ouvrir l'ordre de marché à l'ouverture de chaque bougie ?

Merci.

Bien sûr, vous en avez fait tout un plat comme si vous l'aviez vu en vrai, ce dont je doute ! Je ne comprends pas bien votre idée, mais je vous suggère d'essayer, en traçant les chandeliers dans les conditions et, si ces conditions coïncident avec les vôtres, de placer les ordres en attente aux distances souhaitées de l'ouverture d'un chandelier zéro, tout en fixant les stops et les profits, en les modifiant immédiatement après le placement, en utilisant de la même façon une autre fonction de Kim pour déterminer les données du dernier ordre placé ! Examinez attentivement votre logique, expérimentez et allez-y ! Bonne chance !
 
borilunad:
Vérifiez le nom de l'indicateur, non pas dans le dossier, mais dans son code : "nom court", car l'EA le reconnaît, s'il est toujours installé sur le graphique approprié et le TF !

Merci beaucoup, c'était vraiment le problème. J'ai fait tous les indices sans le nom court, j'ai complètement raté ce point !

Raison: