советник - разные вопросы - страница 19

 

#OrderType() string - Open

Приведенный ниже код дает мне ' 1 ' для Sell OrderType, но мне нужно получить OrderType sting одного из них ' Sell, Buy и так далее ', я не хочу получить числовое значение.
Мне нужен полезный комментарий, пожалуйста, спасибо.

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, если хотите еще больше упростить ситуацию:

Я уже использую #define, который скопировал для pip и point кодов у г-на Уильяма.
Так что после вашего комментария я просто немного исследовал его, я думаю, что я могу использовать его в моих любых скриптах.

Спасибо за ваш полезный комментарий.

 
Marco vd Heijden:

Используйте команду switch.

Большое спасибо.

Я впервые пробую Switch Operator для своего советника.
Я хотел бы сказать, что я узнал немного больше об этом, но у меня нет опыта для этого оператора.

Прежде чем я попробую это в моем тестовом советнике, я просто хочу спросить, вы имеете в виду, что я могу использовать как ниже код, пожалуйста? (мой тестовый советник уже имеет 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;
    }
}

Заранее спасибо.

// --- второй раз редактировалось

Возможно, я не совсем ясно выразил свою мысль.
Я уже потратил много времени на этот вопрос, я действительно играю с этим оператором, но результата нет.

Приведенный ниже код дает мне число.

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

// EURAUD,M30: OrderType: 0

Но я пытаюсь получить следующий результат.

// EURAUD,M30: OrderType: Buy

Мне нужен полезный комментарий.
Вы можете помочь мне (/ дать мне совет), пожалуйста?

 

ID

Значение

Описание

OP_BUY

0

Операция покупки

ОП_ПРОДАЖА

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");
     }
 

Большое спасибо @Marco.

Наконец-то я понял, но я ожидал, что напишу код одной из " Функций преобразования"... мое неправильное ожидание сбило меня с толку.
В настоящее время я использую 3 объекта " HLine ", теперь я скопировал это для обоих случаев (0 и 1). Пока все работает хорошо.
Также " Свойства заказа " имеют 6 значений, поэтому я хотел бы применить ту же самую (например, объект, цвет, стиль, ширина и так далее...) функцию печати к 0, 2, 4.

Вопрос: Могу ли я использовать приведенный ниже метод?

( Функция печати просто для примера)

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

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

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

Заранее большое спасибо!

 

Нет, потому что значения такие:

ID

Значение

Описание

OP_BUY

0

Операция покупки

ОП_ПРОДАЖА

1

Операция продажи

OP_BUYLIMIT

2

Лимитный отложенный ордер на покупку

OP_SELLLIMIT

3

Отложенный ордер напродажу

OP_BUYSTOP

4

Отложенный ордер Buy stop

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.
Спасибо @Marco vd Heijden за ваше время и помощь.