conseiller expert - questions diverses - page 31

 
Max Enrik:


if
(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   Print(ticketnumber);

Imprimez votre numéro de billet - assurez-vous qu'il est correct.

-----

Max Enrik:

if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
     {
      if(StringFind(sparam,Button_1,0)>=0)
        {
         // ...
        }

      if(StringFind(sparam,Button_2,0)>=0)
        {
         //...
        }

      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(Symbol()!=OrderSymbol()) continue;

         update_1();
         update_2();
         update_3();
        }
     }
   else printf("OrderSelect failed for %i",ticketnumber); 

}

Vérifiez que l'OrderSelect fonctionne.

-----

MaxEnrik:
if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
     {
      if(StringFind(sparam,Button_1,0)>=0)
        {
         // ...
        }

      if(StringFind(sparam,Button_2,0)>=0)
        {
         //...
        }

      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(Symbol()!=OrderSymbol()) continue;

         update_1();
         update_2();
         update_3();

        }
     }
  }

Je ne comprends pas.

Vous savez que le programme passe en revue toutes les commandes portant le même symbole et exécute update_1() update_2() update_3() ? Pas seulement l'ordre que vous avez trouvé avec le numéro de ticket.

 
honest_knave:

Imprimez votre numéro de ticket - assurez-vous qu'il est correct.
-----
Vérifiez que l'OrderSelect fonctionne.
-----
Je ne comprends pas.
Vous savez qu'il passe en revue toutes les commandes portant le même symbole et exécute update_1() update_2() update_3() ? Pas seulement l'ordre que vous avez trouvé avec le numéro de ticket.

Merci pour votre commentaire rapide.
Après votre commentaire, j'ai vérifié une fois de plus. Tout semble correct.

#1 - Numéro de ticket - correct.
#2 - OrderSelect() fonctionne.
#3 - Oui, vous avez raison, mais si je ne l'utilise pas, les update_*()'s ne fonctionneront pas.

J'utilise cette méthode pour les Drags, cette méthode fonctionne bien. Mais cette méthode ne fonctionne pas bien pour CHARTEVENT_OBJECT_CLICK. (Elle fonctionne bien lorsque je passe un ordre unique, lorsque j'ouvre un ordre opposé, elle fonctionne. )

J'ai vraiment besoin d'aide, s'il vous plaît.

 
Montrez-moi une capture d'écran de ce que vous voulez qu'il se passe. Je ne comprends pas bien le problème.
 
honest_knave:
Montrez-moi une capture d'écran de ce que vous voulez qu'il se passe. Je ne comprends pas bien le problème.

Pendant que je faisais la capture d'écran j'ai trouvé la solution, juste wow ! ( j'ai déjà passé plus de 2 heures pour ça )
Donc, cela semble bon jusqu'à présent, si quelque chose va mal à ce sujet, je vais écrire un commentaire plus clair.

Merci pour votre temps.

( C'était vraiment magique. )

 
Max Enrik:

Pendant que je faisais la capture d'écran, j'ai trouvé la solution, juste wow ! ( J'ai déjà passé plus de 2 heures pour cela )
Donc, cela semble bon jusqu'à présent, si quelque chose va mal à ce sujet, je vais écrire un commentaire plus clair.

Merci pour votre temps.

( C'était vraiment magique. )

Je suis content que vous l'ayez réparé
 

#Calcul du profit en devise - Ouvrir

Je viens de commencer à chercher une solution pour savoir comment calculer le profit en devise. Par exemple, 100 pip = 0,89 USD en USDJPY.

Q : Comment puis-je convertir le profit de l'ordre en pips en profit de l'ordre en devise, s'il vous plaît ?

(J'ai peur de ne pas pouvoir trouver de solution avant la fermeture du marché).

Tout commentaire clair serait le bienvenu, s'il vous plaît.

Merci d'avance.

//--- 2ème fois édité

J'ai trouvé beaucoup de forums similaires, mais je ne peux pas trouver ce type de sujets.

 

Comment obtenir un bénéfice en pips ?

OrderProfit()

Valeur retournée :

La valeur du profit net (sans swaps ni commissions) pour l'ordre sélectionné.

Pour les ordres ouverts, il s'agit du profit actuel non réalisé.

Pour les ordres fermés, il s'agit du profit fixe.

 
Marco vd Heijden:

Comment obtenir un bénéfice en pips ?

OrderProfit()

Valeur retournée :

La valeur du profit net (sans swaps ni commissions) pour l'ordre sélectionné.

Pour les ordres ouverts, il s'agit du profit actuel non réalisé.

Pour les ordres fermés, il s'agit du profit fixe.

Merci pour votre commentaire.

Désolé Marco, je n'ai pas décrit mon problème plus clairement.
Je peux facilement obtenir la valeur Order Profit en Pips et en Devise - avec les codes ci-dessous.

DoubleToString( OrderProfit(), 2 )
DoubleToString( change_to_points( Bid - OrderOpenPrice() ), 0 );

Mais j'essaie de trouver une solution pour le Stop Loss et Take Profit en devise.

J'y travaille, et j'ai encore besoin d'aide, s'il vous plaît.

Merci d'avance.

 
Max Enrik: J'essaie de trouver une solution pour le Stop Loss et le Take Profit en devise.
Remplacez OrderStopLoss par l'un d'entre eux.
  • Vous placez le stop là où il doit être - là où la raison de la transaction n'est plus valable. Par exemple, si vous négociez un rebond de support, le stop passe sous le support.
  • Solde du compte * pourcentage/100 = RISQUE = Lots d'ordres * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Note OOP-OSL inclut le SPREAD, et DeltaPerLot est généralement autour de 10 $/pip mais il prend en compte les taux de change de la paire par rapport à la devise de votre compte).
  • N'utilisez PAS TickValue par lui-même - DeltaPerLot
  • Vous devez normaliser les lots correctement et vérifier les valeurs min et max.
  • Vous devez également vérifier FreeMargin pour éviter le stop out.
 
whroeder1:
Remplacez OrderStopLoss par l'un d'entre eux.
  • Vous placez le stop là où il doit être - là où la raison de la transaction n'est plus valable. Par exemple, si vous négociez un rebond de support, le stop passe sous le support.
  • Solde du compte * pourcentage/100 = RISQUE = Lots d'ordres * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Note OOP-OSL inclut le SPREAD, et DeltaPerLot est généralement autour de 10 $/pip mais il prend en compte les taux de change de la paire par rapport à la devise de votre compte).
  • N'utilisez PAS TickValue par lui-même - DeltaPerLot
  • Vous devez normaliser les lots correctement et vérifier le minimum et le maximum.
  • Vous devez également vérifier FreeMargin pour éviter le stop out.

Merci pour votre commentaire plus informatif.
Je l'étudie...

//--- 2ème édition

Peut-être que le manque de connaissance du code ne me permet pas de comprendre votre méthode de calcul.
Mais je pense que je suis proche de la solution. Et j'essaie le code ci-dessous que j'obtiens (pour l'ordre d'achat) Stop Loss en devise.
Ensuite, j'obtiens les résultats suivants ( je sais que j'ai réussi quelque chose... parce que je ne peux pas les impliquer... ) par ex : Profits : 7.67 USD - Pips : 1001 / pour USDCAD. Mais en réalité Profit : 7.69 USD. ( J'ai déjà vérifié ( Swap et Commission ) )

double  tickvalue               = MarketInfo( Symbol(), MODE_TICKVALUE ) / MarketInfo( Symbol(), MODE_TICKSIZE ),
        buy_stoploss_incurrency = OrderOpenPrice() - OrderStopLoss();
string  stoploss_incurrency     = DoubleToString( OrderLots() * buy_stoploss_incurrency * tickvalue + OrderCommission(), 2 );

Print( "stop loss in currency: ", stoploss_incurrency );

Donc, j'ai besoin de conseils, s'il vous plaît.

Merci d'avance.

//--- 3ème édition

S'il vous plaît codeur ou programmeur me dire si le code ci-dessus est correct ? Parce que maintenant je vois le Stop Loss correct en devise pour GBPCHF, mais pas correct pour USDCAD. Je ne comprends pas ce qui ne va pas ! ( note : USDCAD position ouverte, mais GBPCHF est Pending orders. )

Tout est OK pour le moment. Donc, merci beaucoup M. William.