エキスパートアドバイザー - 雑多な質問 - ページ 19

 

#OrderType() string - Open

下記のコードでは、Sell OrderTypeは「1」ですが、OrderTypeは「Sell, Buy so on」のいずれかを取得する必要があり、私は数字を取得したくありません。
私は有用なコメントを 必要とする、お願い、ありがとうございます。

IntegerToString( OrderType() );
 

switchコマンドを使用する。

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

case OP_BUY:

break;
}
 
Marco vd Heijden:

switchコマンドを使用する。

コメントありがとうございます、早速やってみます。
 

また、さらに簡略化したい場合は、#defineディレクティブを使用することもできます。

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

if(OrderType()==sell)
 
honest_knave:

さらに簡略化したい場合は、#defineディレクティブを使用することもできます。

私はすでに、William 氏からpipとpointのコード用にコピーした#defineを使用しています。
このコメントを見て、ちょっとだけ調べてみたのですが、私のスクリプトでも使えそうな気がしてきました。

有益な コメントをありがとうございました。

 
Marco vd Heijden:

switchコマンドを使用します。

どうもありがとうございます。

私はこのEAで初めてSwitch Operatorを試しました。
ということで、少しは勉強したつもりですが、このオペレータは未経験です。

私のテストEAでそれを試みる前に、私はちょうど尋ねる必要があります、あなたは私が以下のコードのように使用することができるという意味ですか、お願いします?( 私のテストEAはすでに500行あります - そして私はOrderType() を文字列に変換するために混乱するつもりです )

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

事前にありがとうございます。

// --- 2回目の編集

多分、私の懸念は明確ではないでしょう。
私はすでにこの問題のために多くの時間を費やし、実際にこのオペレータをプレイしていますが、結果は出ていません。

以下のコードは私に数値を与えます。

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

// EURAUD,M30: OrderType: 0

しかし、私は以下の結果を得るためにしようとします。

// EURAUD,M30: OrderType: Buy

ただ、私は有用なコメントが 必要です。
あなたは私を助けることができる(/私に助言を与える)、お願いしますか?

 

ID

説明

OP_BUY

0

買い操作

OP_SELL

1

売り動作


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

または

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

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

ありがとうございます。

ようやく理解できましたが、私はてっきり「変換関数」の一つを書くものだと思っていました...私の予想が外れていたようです。
この時、私は3つの「HLine」オブジェクトを使っていますが、それを両方のケース(0と1)についてコピーしました。今のところ、うまくいっています。
また、"Order Properties" には6つの値があるので、0, 2, 4に 同じPrint関数 (例えば、オブジェクト、色、スタイル、幅、など)を適用したいと思います。

Q: 以下のメソッドを使用することは可能ですか?

(印刷機能は あくまで例です)

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

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

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

ありがとうございます。

 

値なのでダメです。

ID

説明

OP_BUY

0

買い操作

OP_SELL

1

売り動作

OP_BUYLIMIT

2

買い指値注文

OP_SELLLIMIT

3

売り指 値注文

OP_BUYSTOP

4

買い逆指値注文

OP_SELLSTOP

5

売りの逆指値注文


つまりケース2とケース4はOP_BUYとイコールではないのです

OP_BUYLIMITとOP_BUYSTOPなので別物です。

このような意味でなければですが、こう言えば明確になります。

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:

値なのでダメです。
つまり、ケース2とケース4はOP_BUYと等しくありません

#OrderType() string - 終了しました。

あなたの最新のコメントの後、私はケースの0、2、4を組み合わせることができないと感じています。
この度はありがとうございました。