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

 
Crosswert:


Ха-ха... А вот и наврал...

Проблема оказалась в функции открытия ордеров OpenOrders(). Совсем забыл убрать контроль открытия ордеров на пробое свечи (баре):

if (Volume[0] > 1) return;

Поэтому на каком ТФ советник тестировался - на таких минутах он ордера открывал...

Протупил вообще, по тяжелой...

Спасибо...

Бывает))) Рад был помочь)))
 
Crosswert:


if (Volume[0] > 1) return;


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

 
Crosswert:


Ха-ха... А вот и наврал...

Проблема оказалась в функции открытия ордеров OpenOrders(). Совсем забыл убрать контроль открытия ордеров на пробое свечи (баре):

if (Volume[0] > 1) return;

Поэтому на каком ТФ советник тестировался - на таких минутах он ордера открывал...

Протупил вообще, по тяжелой...

Спасибо...

Лучше так (https://www.mql5.com/ru/forum/138609/page482):
bool CheckOpenM15() // Функция возвращает истину при появлении нового бара на М15 (Использовать только в советние)
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
paladin80:
Лучше так (https://www.mql5.com/ru/forum/138609/page482):

А лучше передавать в функцию наименование нужного ТФ
 
artmedia70:
А лучше передавать в функцию наименование нужного ТФ

Ну это я как пример кинул.
 
paladin80:
Лучше так (https://www.mql5.com/ru/forum/138609/page482):


Вы знаете, с / PrevTime / я как-то пытался что-то сделать, но так ничего и не получилось. Я так полагаю, что не смог вставить этот код в нужное место.

С / if (Volume[0] > 1) return; / все получилось гораздо проще. Здесь, как я полагаю, все работает на выбранном ТФ. На демо - не знаю, но в реале, при открытии ордеров ошибок, "косяков", и прочих нюансов не заметил.

Но и контроль открытия ордеров на новом баре как-бы давно не использую. Получилось собрать функцию контроля открытых позиций. Вместе с открытием ордеров по заданному времени - контроль баров как таковой не нужен.

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

 

Подскажите пожалуйста, как получить ценовое значение уровней Фибоначчи?

Согласно условию, после пересечения ценой указанного уровня Фибоначчи открывается сделка на покупку или продажу.

Объект Фибоначчи рисуется советником с помощью функции Кима: https://www.mql5.com/ru/forum/107476/page107#606564

Рисуется все ровно, без проблем. Но далее, как узнать ценовое значение указанного уровня?

Вот эта функция вроде бы не подходит:

OBJPROP_FIRSTLEVEL+n 210+n int Получает/устанавливает значения уровня объекта Fibonacci с индексом n. Индекс n может быть от 0 до (количество уровней -1), но не более 31


Возможно ли это? Или придется отдельно рассчитывать цены для каждого уровня отталкиваясь от OBJPROP_PRICE1 и OBJPROP_PRICE2 ???

ерунда какая то. Полночи мозги пудрил себе.. Конечно ночь пожалуй не самое лучшее время для поиска решений.

Помогите плиз, добрые люди!

 
Lazarechek:

Подскажите пожалуйста, как получить ценовое значение уровней Фибоначчи?

Согласно условию, после пересечения ценой указанного уровня Фибоначчи открывается сделка на покупку или продажу.

Объект Фибоначчи рисуется советником с помощью функции Кима: https://www.mql5.com/ru/forum/107476/page107#606564

Рисуется все ровно, без проблем. Но далее, как узнать ценовое значение указанного уровня?

Вот эта функция вроде бы не подходит:

OBJPROP_FIRSTLEVEL+n 210+n int Получает/устанавливает значения уровня объекта Fibonacci с индексом n. Индекс n может быть от 0 до (количество уровней -1), но не более 31


Возможно ли это? Или придется отдельно рассчитывать цены для каждого уровня отталкиваясь от OBJPROP_PRICE1 и OBJPROP_PRICE2 ???

ерунда какая то. Полночи мозги пудрил себе.. Конечно ночь пожалуй не самое лучшее время для поиска решений.

Помогите плиз, добрые люди!

Подобный вопрос уже был:

Хочу получить цену на фибо-уровне 23,6%
double flevel236 = ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,1); Вот это - дает 0.236, т.е. не цену, а уровень.
Подскажите, как можно получить цену уровня. Спасибо!

И был дан на него и ответ:

Всего две арифметические операции. Умножение (0.236 умножить на разницу между ценами нулевого и первого уровней), а потом сложение (результат умножения прибавить к цене нулевого уровня).

 
Написал индюк, запустил, всё зависло и надпись - ожидайте обновления (бесконечных циклов нет). Перезапускаю мт результат тотже. Понятно что я могу перед запуском удалить эти индикаторы и потом их вставить, но каждый раз так решать проблему не вариант. Может быть есть какой то ключ для запуска из командной строки чтобы загрузиться в дефолтный интерфейс ?
 
artmedia70:

Подобный вопрос уже был:

Хочу получить цену на фибо-уровне 23,6%
double flevel236 = ObjectGetDouble(0,"Fibo",OBJPROP_LEVELVALUE,1); Вот это - дает 0.236, т.е. не цену, а уровень.
Подскажите, как можно получить цену уровня. Спасибо!

И был дан на него и ответ:

Всего две арифметические операции. Умножение (0.236 умножить на разницу между ценами нулевого и первого уровней), а потом сложение (результат умножения прибавить к цене нулевого уровня).




Спасибо добрый людь!) Так и думал в принципе)


"0.236 умножить на разницу между ценами нулевого и первого уровней" - только наверно будет правильней сказать - "между ценами нулевого и последнего уровней".

Причина обращения: