Вопросы от "чайника" - страница 205

 
Renat:

После смены языка в Метаедиторе, Вы перезагрузили его?

Будем проверять.

Всё работает нормально, загрузил mql5_russian.chm, поставил русский в MetaEditor-e, перезагрузил, справка выскакивает по-русски.
 

Для проверки позиции написал такой вот код:

CPositionInfo myposition;

if (myposition.Select(_Symbol))
{
   double Open_position=NormalizeDouble(myposition.PriceOpen(),_Digits);
   double SL_position  =NormalizeDouble(myposition.StopLoss(),_Digits);
   double TP_position  =NormalizeDouble(myposition.TakeProfit(),_Digits);
   Comment(" Open_position=",Open_position,"\n",
           " SL_position=",SL_position,"\n",
           " TP_position=",TP_position);
}

Но почему-то в комментарии значения появляются с 4 знаками после запятой. Вместо _Digits поставил 5 всё равно 4 знака, поставил 3 - 3 знака.

 
paladin800: почему-то в комментарии значения появляются с 4 знаками после запятой. Вместо _Digits поставил 5 всё равно 4 знака, поставил 3 - 3 знака.
А если просто вывести myposition.PriceOpen(), что выдаст?
 
paladin800:

Для проверки позиции написал такой вот код:

Но почему-то в комментарии значения появляются с 4 знаками после запятой. Вместо _Digits поставил 5 всё равно 4 знака, поставил 3 - 3 знака.

Вам видимо нужна функция DoubleToString(). 

 
paladin800:

Для проверки позиции написал такой вот код:

Но почему-то в комментарии значения появляются с 4 знаками после запятой. Вместо _Digits поставил 5 всё равно 4 знака, поставил 3 - 3 знака


Формат вывода дробных чисел в комментах такой. Приводите даблы к строковым типам и выводите их через комменты.
 
Как можно определить начальный баланс счета? Хочу задавать размер лота в зависимости от общего профита по счету. Так вот как этот начальный баланс правильнее определить?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: Как можно определить начальный баланс счета? Хочу задавать размер лота в зависимости от общего профита по счету. Так вот как этот начальный баланс правильнее определить?

 Пополнение депозита сопровождается записью

DEAL_ENTRY_STATE

Признак статусной записи

В этом направлении и смотреть дальше. 

 

Я что-то запутался в myposition.Type(). Сделал для проверки такую вещь:

CPositionInfo myposition;
// ---
string classtype="no position";
string functype="no position";

if (PositionSelect(_Symbol))
{  // --- section SELL
   if (myposition.Type()==POSITION_TYPE_SELL)
       classtype="SELL";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       functype="SELL";
   // --- section BUY
   if (myposition.Type()==POSITION_TYPE_BUY)
       classtype="BUY";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
       functype="BUY";
}
Comment ("classtype=",classtype,", functype=",functype);

При тестировании с визуализацией ресультат таков:
1) нет позиции:        classtype=no position, functype=no position  // как надо
2) есть позиция sell: classtype=BUY, functype=SELL // classtype ошибочно определил направление позиции
3) есть позиция buy: classtype=BUY, functype=BUY  // как надо

Пробовал вместо if (PositionSelect(_Symbol)) поставить if (myposition.Select(_Symbol)) результат тотже. Может myposition.Type() надо как-то иначе записать чтоб правильно определил направление sell?

 
paladin800:

Я что-то запутался в myposition.Type(). Сделал для проверки такую вещь:

При тестировании с визуализацией ресультат таков:
1) нет позиции:        classtype=no position, functype=no position  // как надо
2) есть позиция sell: classtype=BUY, functype=SELL // classtype ошибочно определил направление позиции
3) есть позиция buy: classtype=BUY, functype=BUY  // как надо

Пробовал вместо if (PositionSelect(_Symbol)) поставить if (myposition.Select(_Symbol)) результат тотже. Может myposition.Type() надо как-то иначе записать чтоб правильно определил направление sell?

Если приглядеться к классу CPositionInfo "с рентгеном", можно заметить что метод Type() не возвращает тип позиции (в отличии от метода PositionType()).

   CPositionInfo myposition;
// ---
   string classtype="no position";
   string functype="no position";

   if(PositionSelect(_Symbol))
     {  // --- section SELL
      if(myposition.PositionType()==POSITION_TYPE_SELL)
         classtype="SELL";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
         functype="SELL";
      // --- section BUY
      if(myposition.PositionType()==POSITION_TYPE_BUY)
         classtype="BUY";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         functype="BUY";
     }
   Print("classtype=",classtype,", functype=",functype);
  }
 
uncleVic:

Если приглядеться к классу CPositionInfo "с рентгеном", можно заметить что метод Type() не возвращает тип позиции (в отличии от метода PositionType()).

Премного благодарен. С вашей подсказкой заработало! Руководствовался статьёй Как использовать торговые классы Стандартной библиотеки при написании советника и там в разделе "1.6 Класс CPositionInfo" есть myposition.Type(), который возможно надо подправить.