conseiller expert - questions diverses - page 19

 

#OrderType() string - Ouvrir

Le code ci-dessous me donne ' 1 ' pour le type d'ordre de vente, mais j'ai besoin d'obtenir le type d'ordre en indiquant l'un d'entre eux ' Vendre, Acheter et ainsi de suite ', je ne veux pas obtenir de valeur numérique.
J'ai besoin d'un commentaire utile, s'il vous plaît, merci.

IntegerToString( OrderType() );
 

Utilisez une commande de commutation.

switch (OrderType())
{
case OP_SELL:
  
break;

case OP_BUY:

break;
}
 
Marco vd Heijden:

Utilisez une commande de commutation.

Merci pour le commentaire, je vais l'essayer bientôt.
 

Vous pouvez également utiliser la directive #define si vous souhaitez simplifier encore plus les choses :

#define buy  OP_BUY
#define sell OP_SELL
if(OrderType()==buy)

if(OrderType()==sell)
 
honest_knave:

Vous pouvez également utiliser la directive #define si vous souhaitez simplifier encore plus les choses :

J'utilise déjà la directive #define qui a été copiée pour les codes pip et point par M. William.
Après votre commentaire, j'ai fait quelques recherches à ce sujet, je pense que je peux l'utiliser dans mes scripts.

Merci pour votre commentaire utile.

 
Marco vd Heijden:

Utilisez une commande de commutation.

Merci beaucoup.

C'est la première fois que j'essaie Switch Operator pour mon EA.
Je voudrais donc dire que j'ai appris un peu plus à ce sujet, mais je n'ai pas d'expérience pour cet opérateur.

Avant de l'essayer dans mon EA de test, j'ai juste besoin de demander, vous voulez dire que je pourrais utiliser le code ci-dessous, s'il vous plaît ? ( mes ea's de test ont déjà 500 lignes - et je vais confondre la conversion de OrderType() en string ).

for ( ... )
{
    switch ( OrderType() )
    {
        case    0  :    ObjectCreate( ... name + " Buy" ... );
                        ObjectSetInteger(chart_ID,name + " Buy",OBJPROP_COLOR,clr);
                        // ...
        break;
        case    1  :    ObjectCreate( ... name + " Sell" ... );
                        // ...
        break;
    }
}

Merci d'avance.

// --- deuxième édition

Peut-être que ma préoccupation n'est pas claire.
J'ai déjà passé beaucoup de temps pour cette question, je joue vraiment cet opérateur, mais pas de résultat.

Le code ci-dessous me donne numérique.

Print( "OrderType: ", IntegerToString( OrderType() ) );

// EURAUD,M30: OrderType: 0

Mais j'essaie d'obtenir le résultat ci-dessous.

// EURAUD,M30: OrderType: Buy

Juste j'ai besoin de commentaire utile.
Pouvez-vous m'aider (/ me donner des conseils), s'il vous plaît ?

 

ID

Valeur

Description

OP_BUY

0

Opération d'achat

OP_SELL

1

Opération de vente


    switch(OrderType())
     {
      case 0:
       Print( "OrderType: buy" );
      break;
      
      case 1:
       Print( "OrderType: sell" );
      break;
     }

ou

   if(OrderType()==0)
     {
      Print("OrderType: buy");
     }

   if(OrderType()==1)
     {
      Print("OrderType: sell");
     }
 

Merci beaucoup @Marco.

J'ai enfin compris, mais je m'attendais à écrire le code d'une des " Fonctions de conversion "... ma fausse attente m'a troublé.
En ce moment, j'utilise 3 objets " HLine ", maintenant j'ai copié cela pour les deux cas ( 0 et 1 ). Cela fonctionne bien jusqu'à présent.
De plus, les " Propriétés de l'ordre " ont 6 valeurs, donc je voudrais appliquer la même fonction d'impression (par exemple, objet, couleur, style, largeur, etc...) à 0, 2, 4.

Q : Puis-je utiliser la méthode suivante ?

( Fonction d'impression juste pour l'exemple)

switch ( OrderType() )
{
    case 0: Print( "OrderType: buy" );
            // ...
    break;

    case 2: Print( "OrderType: buy" );
            // ...
    break;

    case 4: Print( "OrderType: buy" );
            // ...
    break;
}

Merci beaucoup d'avance !

 

Non, car les valeurs sont :

ID

Valeur

Description

OP_BUY

0

Opération d'achat

OP_SELL

1

Opération de vente

OP_BUYLIMIT

2

Ordre d'achat limite en attente

OP_SELLLIMIT

3

Ordre devente limite en attente

OP_BUYSTOP

4

Ordre d'achat stop en attente

OP_SELLSTOP

5

Ordre de vente stop en attente


Donc le cas 2 et le cas 4 ne sont pas égaux à OP_BUY.

Il s'agit de OP_BUYLIMIT et OP_BUYSTOP, ce sont donc des choses différentes.

A moins que ce ne soit ce que vous voulez dire, mais il serait plus clair de dire

switch ( OrderType() )
{
    case 0: Print( "OrderType: buy" );
            // ...
    break;

    case 2: Print( "OrderType: buy Limit" );
            // ...
    break;

    case 4: Print( "OrderType: buy Stop" );
            // ...
    break;
}
 
Marco vd Heijden:

Non, car les valeurs sont :
Donc le cas 2 et le cas 4 ne sont pas égaux à OP_BUY

#OrderType() string - Fermé

Après votre dernier commentaire, je pense que je ne peux pas combiner les cas 0, 2 et 4.
Merci @Marco vd Heijden pour votre temps et votre aide.