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

 
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:

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

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

Большое спасибо! Грааль заработал :) 
 
Igor Makanu:

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

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

или просто подключите указанную библиотеку и перенесите код советника из МТ4 в МТ5, в 99% случаев ничего подкручивать не придется, все будет работать как и в МТ4 

И пусть знаний не прибавится...
 
Artyom Trishkin:
И пусть знаний не прибавится...

знания? это не нужные знания для разработки ТС или для трейдера!

Вы же не пишите для себя драйвер для управления жестким диском --> API --> Ваша программа? Вы просто используете возможности платформы и языка программирования и не более - все в 2 клика (пару строк) получаете

то, что в MQL5 замудреная  скучнейшая реализация работы с ордерами это факт,

увы, эта тема просто не интересна - как открыть ордер , как узнать состояние ордера, как узнать цену и время закрытия ордера (про CTrade я в курсе, частично расковырял исходники) - это элементарнейшие действия которые должна выполнять торговая платформа в 2 клика и все это не должно вызывать вопросов

ЗЫ: не прошло и 5 лет? как были добавлены в MQL5 функции iTime(), IClose() .... это в догонку, торговая платформа, которая не умеет ни обращаться к истории инструмента ни выставлять ордера в 2 клика, в первый год вся кодобаза ломилась от "чудесных реализаций" как прочитать историю торгового инструмента в 2 клика.... ладно, заезженная тема