expert advisor - verschiedene Fragen - Seite 19

 

#OrderType() string - Offen

Untenstehender Code gibt mir ' 1 ' für Sell OrderType, aber ich muss OrderType sting einer von ihnen ' Sell, Buy usw. ', ich will nicht numerisch zu erhalten.
Ich brauche einen nützlichen Kommentar, bitte, danke.

IntegerToString( OrderType() );
 

Verwenden Sie einen Schaltbefehl.

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

case OP_BUY:

break;
}
 
Marco vd Heijden:

Verwenden Sie einen Schaltbefehl.

Danke für den Kommentar, ich werde es bald ausprobieren.
 

Sie können auch die #define-Richtlinie verwenden, wenn Sie die Dinge noch weiter vereinfachen wollen:

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

if(OrderType()==sell)
 
honest_knave:

Sie können auch die Richtlinie #define verwenden, wenn Sie die Dinge noch weiter vereinfachen wollen:

Ich benutze bereits #define, die es für pip und Punkt-Codes von Mr. William kopiert wird.
Nach Ihrem Kommentar habe ich ein wenig darüber recherchiert, ich denke, ich kann es in meinen Skripten verwenden.

Vielen Dank für Ihren nützlichen Kommentar.

 
Marco vd Heijden:

Verwenden Sie einen Schaltbefehl.

Vielen Dank Mann.

Ich bin zum ersten Mal versuchen, Switch Operator für meine EA's.
So möchte ich sagen, ich war ein bisschen mehr über diese gelernt, aber ich habe keine Erfahrung für diesen Operator.

Bevor ich es in meinem Test EA's versuchen muss ich nur fragen, Sie meinen, ich könnte wie unten Code verwenden, bitte? (meine Test-EA's haben bereits 500 Zeilen - und ich werde für OrderType() Konvertierung in String verwirrt)

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

Vielen Dank im Voraus.

// --- zweite mal bearbeitet

Vielleicht meine Sorge nicht klar.
Ich verbrachte bereits eine Menge Zeit für dieses Problem, das ich wirklich spielen diesen Operator, aber nicht Ergebnis.

Untenstehenden Code gibt mir numerisch.

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

// EURAUD,M30: OrderType: 0

Aber ich versuche, das folgende Ergebnis zu erhalten.

// EURAUD,M30: OrderType: Buy

Ich brauche nur einen nützlichen Kommentar.
Können Sie mir helfen (/ mir einen Rat geben), bitte?

 

ID

Wert

Beschreibung

OP_BUY

0

Kaufvorgang

OP_SELL

1

Verkaufsvorgang


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

oder

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

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

Vielen Dank @Marco.

Endlich habe ich es verstanden, aber ich habe erwartet, dass ich eine der " Konvertierungsfunktionen " schreiben würde... meine falsche Erwartung hat mich verwirrt.
Zur Zeit verwende ich 3 " HLine " Objekte, jetzt habe ich das für beide Fälle ( 0 und 1 ) kopiert. Bis jetzt funktioniert es gut.
Auch " Order Properties " haben 6 Werte, also würde ich gerne die gleichen ( z.B. Objekt, Farbe, Stil, Breite und so weiter... ) Druckfunktionen auf 0, 2, 4 anwenden .

F: Kann ich die folgende Methode verwenden?

( Druckfunktion nur als Beispiel )

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

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

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

Vielen Dank im Voraus!

 

Nein, denn die Werte sind:

ID

Wert

Beschreibung

OP_BUY

0

Kaufvorgang

OP_SELL

1

Verkaufsvorgang

OP_BUYLIMIT

2

Limitierter Kaufauftrag in der Schwebe

OP_SELLLIMIT

3

Verkaufslimit schwebende Order

OP_BUYSTOP

4

Kaufstopp schwebende Order

OP_SELLSTOP

5

Verkaufsstopp für schwebende Aufträge


Fall 2 und Fall 4 sind also nicht gleich OP_BUY

Es handelt sich um OP_BUYLIMIT und OP_BUYSTOP, also um zwei verschiedene Dinge.

Es sei denn, das ist es, was Sie meinen, aber es wäre klarer zu sagen

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:

Nein, denn die Werte sind:
Fall 2 und Fall 4 sind also nicht gleich OP_BUY

#OrderType() string - Geschlossen

Nach Ihrem letzten Kommentar habe ich das Gefühl, dass ich die Fälle 0, 2 und 4 nicht kombinieren kann.
Vielen Dank @Marco vd Heijden für Ihre Zeit und Ihre Hilfe.