Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 803

[Удален]  
понял, спасибо.
 

Как известно, в MQL нет возможности изменить размер 2 и 3 измерений многомерного массива. Интересно с чем связано данное ограничение.

Ну да ладно. А если надо определить в советнике количество столбцов массива через внешнюю переменную? Опять невозможно. Или есть выход?

 
Люди, подскажите, хочу вывести линию кросскурса на график. Для этого надо умножить Close[0] на Close нужного мне инструмента. Как его обозначить?
 
kon12:
Люди, подскажите, хочу вывести линию кросскурса на график. Для этого надо умножить Close[0] на Close нужного мне инструмента. Как его обозначить?
Ищите iClose в справочнике.
[Удален]  

почти методом тыка вывел вот-такую формулу , которая работает когда валюта котировки равна валюте депозита.

takeprofit = (profit+ (MarketInfo(symbol,MODE_LOTSIZE)*lot*ask))/lot1*MarketInfo(symbol,MODE_LOTSIZE)*0.0000000001;

подскажите пожалуйста какими переменными нужно правильно заменить вот это - 0.0000000001. оно то работает но это же не выход, лучше сделать красиво

 

Доброе время суток.

   Хочу узнать максимум и минимум, которые достигали бары с начала суток на M15. Предлагаю обсудить оптимальный алгоритм (не код, а алгоритм).

1. 3 часа х 4 (в одном часе 4 15-минутрых бара). 3x4=12.

2. советник может быть запущен в любое время, значит надо встроить проверку, прошло ли 3 часа?

3. Всего баров в истории с начала суток до момента запуска советника - текущее время в часах *4 + целая часть от минут/4. Пусть всего баров будет X.

4. Мы должны циклом пробежаться от X бара до  (X-12)-бара включительно, постепенно вычисляя максимум и минимум, но при этом надо проверять, относится ли бар к началу суток?

(тут https://book.mql4.com/ru/functions/datetime есть рисунок 143, который объясняет, что число баров может быть меньше).


  Что тут можно усовершенствовать или оптимизировать. Может я что-то не учел?

    

Ozero.

 


 
Ozero:

Доброе время суток.

   Хочу узнать максимум и минимум, которые достигали бары с начала суток на M15. Предлагаю обсудить оптимальный алгоритм (не код, а алгоритм).

1. 3 часа х 4 (в одном часе 4 15-минутрых бара). 3x4=12.

2. советник может быть запущен в любое время, значит надо встроить проверку, прошло ли 3 часа?

3. Всего баров в истории с начала суток до момента запуска советника - текущее время в часах *4 + целая часть от минут/4. Пусть всего баров будет X.

4. Мы должны циклом пробежаться от X бара до  (X-12)-бара включительно, постепенно вычисляя максимум и минимум, но при этом надо проверять, относится ли бар к началу суток?

(тут https://book.mql4.com/ru/functions/datetime есть рисунок 143, который объясняет, что число баров может быть меньше).


  Что тут можно усовершенствовать или оптимизировать. Может я что-то не учел?

    

Ozero.

 


Для определения макс. и мин. баров служат Highest() и Lowest(). См. Доку!
 
pycha:

почти методом тыка вывел вот-такую формулу , которая работает когда валюта котировки равна валюте депозита.

takeprofit = (profit+ (MarketInfo(symbol,MODE_LOTSIZE)*lot*ask))/lot1*MarketInfo(symbol,MODE_LOTSIZE)*0.0000000001;

подскажите пожалуйста какими переменными нужно правильно заменить вот это - 0.0000000001. оно то работает но это же не выход, лучше сделать красиво

Метод "тыка" годится, может, для мобильников, а тут надо изучать, понимать, выстраивая свою логику, свою систему. Если надо умножить на одну десятимиллиардную часть, достаточно 2 раза разделить на Point(). Решайте, что лучше, иметь знания или всегда быть в поисках подсказок!
 
borilunad:
Для определения макс. и мин. баров служат Highest() и Lowest(). См. Доку!

Спасибо за ответ.

Судя по ссылке https://docs.mql4.com/ru/obsolete Highest() и Lowest() устаревшие функции. Им на смену пришли

iHighest() и iLowest().


Есть примеры https://docs.mql4.com/ru/series/ihighest и https://docs.mql4.com/ru/series/ilowest

В первом примере не учитывается принадлежность бара к новым суткам, а во втором примере код с ошибкой (написано: int val_index=iLowest(NULL,0,MODE_LOW,10,10);

наверное надо было написать int val_index=iLowest(NULL,0,MODE_LOW,19,10);)

Т.о. алгоритм сводится к отсеиванию вчерашних баров из отрезка [X, X-12], а далее поиск через iHighest() и iLowest()?


Ozero.

 
Ozero:

Спасибо за ответ.

Судя по ссылке https://docs.mql4.com/ru/obsolete Highest() и Lowest() устаревшие функции. Им на смену пришли

iHighest() и iLowest().


Есть примеры https://docs.mql4.com/ru/series/ihighest и https://docs.mql4.com/ru/series/ilowest

В первом примере не учитывается принадлежность бара к новым суткам, а во втором примере код с ошибкой (написано: int val_index=iLowest(NULL,0,MODE_LOW,10,10);

наверное надо было написать int val_index=iLowest(NULL,0,MODE_LOW,19,10);)

Т.о. алгоритм сводится к отсеиванию вчерашних баров из отрезка [X, X-12], а далее поиск через iHighest() и iLowest()?


Ozero.

Простите, они указывают на текущий ТФ, с "i" используем с любого ТФ! Всегда так было, я только подсказал способ нахождения бара.