Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1051

 
secret:

Спасибо за ответ, я смотрел и документацию, и ваш пример, но все равно не нашел, как получить параметр, аналогичный OrderClosePrice() в МТ4.

Если ENUM_DEAL_ENTRY == DEAL_ENTRY_OUT && ENUM_DEAL_TYPE == DEAL_TYPE_SELL --- значит закрыта позиция BUY и следовательно DEAL_PRICE и есть цена закрытия.

 
secret:

Спасибо за ответ, я смотрел и документацию, и ваш пример, но все равно не нашел, как получить параметр, аналогичный OrderClosePrice() в МТ4.

Прямой аналогии нет. Позиция состоит из сделок. Хотите точные данные именно по позиции - сначала необходимо из торговой истории собрать позицию обратно. 

Поэтому Вам лучше работать с понятием "сделка". 


Вообще реализация очень сильно зависит от ответа на вопрос: "Зачем?". То есть сначала точно опишите что хотите и для чего.

 
secret:

Как получить цену закрытия ордера (сделки, позиции - хоть чего-нибудь)?

Гуглил по форуму, не нашел.

https://www.mql5.com/ru/forum/162461

Как определить последнюю цену закрытия ордера (MQL5)?
Как определить последнюю цену закрытия ордера (MQL5)?
  • 2016.12.05
  • www.mql5.com
Подскажите как определить последнюю цену закрытия ордера (MQL5)? В MQL4 было просто OrderClosePrice...
 
Igor Makanu:

как вариант откройте https://www.mql5.com/ru/code/16006

и посмотрите реализацию у @fxsaber

Выдрать реализацию оттуда нереально, поскольку в ней сильна зависимость от всех других частей библиотеки.

 

Друзья, прошу подсказать как решить простую на первый взгляд задачу. Кусок кода:

double stavkariska;

//ставка риска по инструментам

if(StringCompare(_Symbol,"VTBR")==0||StringCompare(_Symbol,"LKOH")==0)

   {double stavkariska=0.3;}

else double stavkariska=1;

  int lot=int (depozit/(d*stoimkontr)*stavkariska); 

Предупреждение компилятора:

declaration of 'stavkariska' hides local declaration at line 25 скрипт.mq5 32 12

possible use of uninitialized variable 'stavkariska' скрипт.mq5 33 39

Как правильно решить задачу, чтобы компилировалось без предупреждений?


Компиляция - Разработка программ - MetaTrader 5
Компиляция - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
 
TrueSam:

Друзья, прошу подсказать как решить простую на первый взгляд задачу. Кусок кода:

Предупреждение компилятора:

declaration of 'stavkariska' hides local declaration at line 25 скрипт.mq5 32 12

possible use of uninitialized variable 'stavkariska' скрипт.mq5 33 39

Как правильно решить задачу, чтобы компилировалось без предупреждений?


Воспользоваться переводчиком:

декларация 'stavkariska' скрывает локальную декларацию в строке 25 скрипт.mq5 32 12

возможно использование неинициализированной переменной 'stavkariska' скрипт.mq5 33 39


То есть внимательнее объявляйте переменные - не допускайте объявление одинаковых переменных в одной зоне видимости. 

При объявлении переменной приучитесь сразу её инициализировать.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);
 
Vladimir Karputov:

Воспользоваться переводчиком:


То есть внимательнее объявляйте переменные - не допускайте объявление одинаковых переменных в одной зоне видимости. 

При объявлении переменной приучитесь сразу её инициализировать.

Дело в том, что объявляя другую переменную в операторе If else, получаю необходимость ее декларировать снова, иначе ошибка "'stavkariska1' - undeclared identifier. Замкнутый круг для новичка. Возможно есть другие способы реализовать выбор?
 
TrueSam:
Дело в том, что объявляя другую переменную в операторе If else, получаю необходимость ее декларировать снова, иначе ошибка "'stavkariska1' - undeclared identifier. Замкнутый круг для новичка. Возможно есть другие способы реализовать выбор?

Барабашка тоже допустил в спешке ошибочку.

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);

Выделенное лишнее. Без повторного объявления должно работать как надо.

 
Alexey Viktorov:

Барабашка тоже допустил в спешке ошибочку.

Выделенное лишнее. Без повторного объявления должно работать как надо.

Спасибо за внимательность. Каюсь, набирал прямо в браузере используя копипаст.

 
Alexey Viktorov:

Барабашка тоже допустил в спешке ошибочку.

Выделенное лишнее. Без повторного объявления должно работать как надо.

Большое спасибо! Грааль заработал :) 
Причина обращения: