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

 
Aleksandr Slavskii #:

Ну, и про не правильные биды аски в открытиях позиций, я написал в предыдущем сообщении.

Поправил условия открытия, а решилась проблема закрытия позиций. :)) Не понял, почему так. Но таки ваш совет решил проблему. Еще раз благодарю.

 
maxvoronin74 #:

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

SYMBOL_PRICE_VOLATILITY добавили в 2020 году. А формула не известна? Поисковик не показывает...

А что мешает вместо цены открытия сессии вставить спред? Его легко получить при помощи SymbolInfoInteger(_Symbol, SYMBOL_SPREAD) и умножить на SymbolInfoDouble(_Symbol, SYMBOL_POINT).

С уважением, Владимир.

 
MrBrooklin #:

А что мешает вместо цены открытия сессии вставить спред? Его легко получить при помощи SymbolInfoInteger(_Symbol, SYMBOL_SPREAD) и умножить на SymbolInfoDouble(_Symbol, SYMBOL_POINT).

С уважением, Владимир.

Спасибо за ответ. Возможно, я просто не понимаю, что должно тогда получиться. Коэфициент спреда? Спред и так есть. Текущее значение. Волатильность проблемная. Попробовал расписать код для получения волатильности, получилось очень растянуто. Так что не довел до конца. А если бы заработала функция для волатильности, о которой я спрашиваю, было бы на много проще.

Пока что не открывает позиции.

Файлы:
 
maxvoronin74 #:

Спасибо за ответ. Возможно, я просто не понимаю, что должно тогда получиться. Коэфициент спреда? Спред и так есть. Текущее значение. Волатильность проблемная. Попробовал расписать код для получения волатильности, получилось очень растянуто. Так что не довел до конца. А если бы заработала функция для волатильности, о которой я спрашиваю, было бы на много проще.

Пока что не открывает позиции.

Предположу, что этот советник при таких заданных условиях никогда не откроет позиции. Похоже, что переменная PerVolatiliti всегда равна нулю.

С уважением, Владимир.

 

И ещё. Честно говоря, не пойму то условие, при котором должна открыться позиция. Как можно вообще сравнивать спред и волатильность? )) Видимо чего-то ещё не знаю или не понимаю.

С уважением, Владимир.

 
MrBrooklin #:

Предположу, что этот советник при таких заданных условиях никогда не откроет позиции. Похоже, что переменная PerVolatiliti всегда равна нулю.

С уважением, Владимир.

Благодарю. Вы считаете, это баг, или я что-то неправильно сделал?
 
MrBrooklin #:

И ещё. Честно говоря, не пойму то условие, при котором должна открыться позиция. Как можно вообще сравнивать спред и волатильность? )) Видимо чего-то ещё не знаю или не понимаю.

С уважением, Владимир.

Спред часто бывает выше, чем волатильность на малых таймфреймах. В таких случаях открывать позиции с таким кодом, без индикаторов и стоплосса, не имеет смысла. Я перевел спред в проценты (((ask-bid)/ask)*100), чтобы спред и волатильность можно было сравнивать. И полагал, что SYMBOL_PRICE_VOLATILITY учитывает таймфрейм. Завтра буду разбираться с логами.
 
maxvoronin74 #:
Благодарю. Вы считаете, это баг, или я что-то неправильно сделал?

Не знаю, что это, но попробуйте сами на своём терминале получить значение волатильности SYMBOL_PRICE_VOLATILITY. Делается это очень просто. Создаёте новый советник и на каждом тике выводите на печать значение волатильности. Сделайте прогон этого советника, допустим, с начала этого года и по сегодняшнее число. Например, на моем терминале волатильность всегда равна нулю. А затем посмотрите, что задано в условиях советника Perevertysh20240508.mq5. Как оно может выполнится, если волатильность всегда равна нулю?

С уважением, Владимир.

P.S. Вот уже готовый вариант советника. Запускайте на своём терминале и смотрите во вкладке Журнал тестера - выведет хоть одно значение волатильности или нет. На 100% уверен, что ни одного значения волатильности больше нуля не получите.

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(SymbolInfoDouble(_Symbol,SYMBOL_PRICE_VOLATILITY) > 0)
      Print("Волатильность = ", SymbolInfoDouble(_Symbol,SYMBOL_PRICE_VOLATILITY));
  }
//+------------------------------------------------------------------+
 
MrBrooklin #:

Не знаю, что это, но попробуйте сами на своём терминале получить значение волатильности SYMBOL_PRICE_VOLATILITY. Делается это очень просто. Создаёте новый советник и на каждом тике выводите на печать значение волатильности. Сделайте прогон этого советника, допустим, с начала этого года и по сегодняшнее число. Например, на моем терминале волатильность всегда равна нулю. А затем посмотрите, что задано в условиях советника Perevertysh20240508.mq5. Как оно может выполнится, если волатильность всегда равна нулю?

С уважением, Владимир.

P.S. Вот уже готовый вариант советника. Запускайте на своём терминале и смотрите во вкладке Журнал тестера - выведет хоть одно значение волатильности или нет. На 100% уверен, что ни одного значения волатильности больше нуля не получите.

Благодарю. Тогда тем более надо увидеть формулу. Как ее найти в документации? Пока что это все, что я смог найти: https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants. И формулы тут нет. Может, какого-то параметра не хватает...

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger() , SymbolInfoDouble() и SymbolInfoString() . В качестве второго...
 
Уже 100500 сообщений про волатильность... Возьмите уже индикатор ATR, и будет вам счастье )