Ответить
11.11.2013, 20:01
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,031 раз(а) / Репутация: 9031
  • Отправить сообщение для eevviill с помощью Skype™
В смысле? Фигурными скобками обточить? Счас попробую.
Так-то смысл в том, чтобы "полоса возврата" расширялась до размера всей свечи, т.е. изменение цены внутри свечи сову не интересует. Если цена такая на этой свече уже была, то ее повторно обрабатывать не надо.
На реале-то пофиг, а на тесте как-то надо ускорить процесс, вот я и выдумываю.
Там вот еще:
PHP код:
if(Volume[0] == 1) { Rhigh Bid spreadRlow Bid spread; } 
Я правильно понимаю, что в тесте все тики обрабатываются всегда, т.е. Volume[0] == 1 - это первый тик текущей свечи?
1) Я про саму логику.
2) Да это первый тик текущей свечи.
11.11.2013, 20:12
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,038
Поблагодарили 871 раз(а) / Репутация: 857
1) Я про саму логику.
2) Да это первый тик текущей свечи.
Ну логика такая, что раз Bid вылез за установленные рамки, то эти рамки надо расширить.
if(Rhigh < Bid) Rhigh = Bid + spread; - это Бид за верхней границей, поэтому поднимаем верхнюю границу еще выше Бида
if(Rlow > Bid) Rlow = Bid - spread; - это Бид ниже нижней границы, опускаем её
Т.е. пока там в следующий раз Бид дочапает до отодвинутой границы, тики должны пропускаться по return
Я почему и спрашиваю, что часто бывает по невнимательности че-то накосячу - ощущение, что не пропускает оно ничего.
11.11.2013, 20:59
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,031 раз(а) / Репутация: 9031
  • Отправить сообщение для eevviill с помощью Skype™
Ну логика такая, что раз Bid вылез за установленные рамки, то эти рамки надо расширить.
if(Rhigh < Bid) Rhigh = Bid + spread; - это Бид за верхней границей, поэтому поднимаем верхнюю границу еще выше Бида
if(Rlow > Bid) Rlow = Bid - spread; - это Бид ниже нижней границы, опускаем её
Т.е. пока там в следующий раз Бид дочапает до отодвинутой границы, тики должны пропускаться по return
Я почему и спрашиваю, что часто бывает по невнимательности че-то накосячу - ощущение, что не пропускает оно ничего.
Вроди всё правильно, попробуй алертом проверить.
ansol 
12.11.2013, 04:58
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Пытаюсь "обрезать" лишние тики при тестировании:
PHP код:
int start()
  {
// Для теста
         
if(IsTesting() || IsOptimization()) 
            {
             
int spread Point*MarketInfo(Symbol(), MODE_SPREAD)/2;
               if(
Volume[0] == 1) { Rhigh Bid spreadRlow Bid spread; }
                  if(
Bid >= Rlow && Bid <= Rhigh) return(0);
                     if(
Rhigh BidRhigh Bid spread;
                     if(
Rlow BidRlow Bid spread;
             }
...
код совы...
return(
0);

Rhigh и Rlow объявлены "до того как".
Т.е. болтание цены внутри уже пройденного диапазона не должно обрабатываться.
Например, спред в тесте ставим 10, тогда цена внутри ±5 тиков просто завершает обработку по return(0)
Эффекта не вижу, очень долго тестирует, может ошибка вкралась где-то у меня?
double spread=...
12.11.2013, 05:23
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,038
Поблагодарили 871 раз(а) / Репутация: 857
double spread=...
Твою мать... по привычке откликнулось эхо!
Конечно же! Так и знал, что где-то закосячил!
12.11.2013, 07:56
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,031 раз(а) / Репутация: 9031
  • Отправить сообщение для eevviill с помощью Skype™
double spread=...
Ха ха. Как всегда всё просто.
12.11.2013, 10:46
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,038
Поблагодарили 871 раз(а) / Репутация: 857
Ха ха. Как всегда всё просто.
Я вот никогда не считал, что "две головы лучше", просто с моей невнимательностью одному работать нельзя.
Я тут нарисовал классный советник, но почему-то он, падла, больше 30% в месяц не хочет зарабатывать, хотя ясно, что можно рубить капусту в больших количествах. Наверное, еще где-то у меня такие же глюки закрались, а я и не знаю
12.11.2013, 10:56
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
Я вот никогда не считал, что "две головы лучше", просто с моей невнимательностью одному работать нельзя.
Я тут нарисовал классный советник, но почему-то он, падла, больше 30% в месяц не хочет зарабатывать, хотя ясно, что можно рубить капусту в больших количествах. Наверное, еще где-то у меня такие же глюки закрались, а я и не знаю
Тормозит оптимизация ещё из-за наличия графических элементов или комментария, который выводится в левом верхнем углу.
Ну и просмотри что можно выполнять только по открытию бара.
12.11.2013, 11:00
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,038
Поблагодарили 871 раз(а) / Репутация: 857
Тормозит оптимизация ещё из-за наличия графических элементов или комментария, который выводится в левом верхнем углу.
Ну и просмотри что можно выполнять только по открытию бара.
Э-э-э! Как это? У меню тут до хрена чего выводится, но ведь в режиме оптимизации эти функции должны игнорироваться, не?!

Когда тестирование в режиме "visual" - тогда - да, все ясно. но тогда мне эти данные позволяют понять. что происходит.
Но когда оптимизация идет - ничего никуда не выводится же, хотя и есть много "Comment"
Или это тоже всё выкуривать надо из исходника?
12.11.2013, 11:32
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,715 раз(а) / Репутация: 3711
Э-э-э! Как это? У меню тут до хрена чего выводится, но ведь в режиме оптимизации эти функции должны игнорироваться, не?!

Когда тестирование в режиме "visual" - тогда - да, все ясно. но тогда мне эти данные позволяют понять. что происходит.
Но когда оптимизация идет - ничего никуда не выводится же, хотя и есть много "Comment"
Или это тоже всё выкуривать надо из исходника?
C абсолютной уверенностью сказать не могу, но и исключить Comment() из кода абсолютно не сложно.
А если порассуждать, так почему игнорируется? Вот если делать скрины на каждом новом баре, то ни индикаторы ни комментарии на скрине не видны. Стоит сделать паузу перед снимком 1 секунду на скрине всё присутствует. Значит выполняется. Наглядный пример на прикреплённом скрине. А уж графика точно выполняется и задерживает ещё больше чем при визуализации.
И можешь ещё почитать здесь _http://forum.roboforex.ru/showthread.php?t=6519 на мой взгляд полезно. Ну как минимум я взял МТ оттуда и заметил большую разницу в скорости.
12.11.2013, 11:35
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,038
Поблагодарили 871 раз(а) / Репутация: 857
Так... Ч0рто пабьери!..
Я а-то думаю, что у меня дурная сова х на у поделить не может по-быстрому?! Ну, ладно, счас будем чинить это безобразие, спасибо
13.11.2013, 14:42
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,846
Поблагодарили 9,499 раз(а) / Репутация: 9504
ВОПРОС
Просмотрев горячие клавиши по МТ4, не нашел как вызвать окно настроек индикатора. При этом, как я понимаю, когда наброшен индюк на график и вызывается окно настроек данного индюка, функция int start() прерывает свою работу до момента закрытия окна настроек? Если это так, то, что за функция, команда, запускается в этот момент? Есть необходимость полу-автоматически либо автоматически вызвать окно настроек индюка. Как это реализовать?
13.11.2013, 15:23
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
ВОПРОС
Просмотрев горячие клавиши по МТ4, не нашел как вызвать окно настроек индикатора. При этом, как я понимаю, когда наброшен индюк на график и вызывается окно настроек данного индюка, функция int start() прерывает свою работу до момента закрытия окна настроек? Если это так, то, что за функция, команда, запускается в этот момент? Есть необходимость полу-автоматически либо автоматически вызвать окно настроек индюка. Как это реализовать?
Простого способа нет. На графике может быть индикаторов больше, чем кнопок на клавиатуре, каждому персональный хоткей не выдашь.
Но если очень надо, я бы послал через WinAPI последовательность Ctrl/I ↓ ↓ Tab Tab Enter.
13.11.2013, 15:31
Регистрация: 13.03.2009 / Сообщений: 2,357
Поблагодарили 1,965 раз(а) / Репутация: 2042
ВОПРОС
Просмотрев горячие клавиши по МТ4, не нашел как вызвать окно настроек индикатора.
Как Вы себе это представляете. Вот у меня есть активное окно, я нажимаю горячие клавиши вызова свойств индикатора. Возникает вопрос, а какого, ведь в окне может быть много индикаторов.
При этом, как я понимаю, когда наброшен индюк на график и вызывается окно настроек данного индюка, функция int start() прерывает свою работу до момента закрытия окна настроек?
Это не так. Индикатор продолжает работать, функция start() выполняется с приходом тика даже когда открыто окно настроек индикатора.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
13.11.2013, 16:47
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,846
Поблагодарили 9,499 раз(а) / Репутация: 9504
Как Вы себе это представляете. Вот у меня есть активное окно, я нажимаю горячие клавиши вызова свойств индикатора. Возникает вопрос, а какого, ведь в окне может быть много индикаторов.
Для этого, как я понимаю, есть функции:

int WindowsTotal() - Возвращает количество окон индикаторов на графике, включая главное окно графика.

int WindowFind(string name) - Возвращает номер подокна графика, содержащего индикатор с указанным именем name, если он найден, иначе возвращается -1. WindowFind() возвращает -1, если пользовательский индикатор ищет сам себя в процессе инициализации init().

Это не так. Индикатор продолжает работать, функция start() выполняется с приходом тика даже когда открыто окно настроек индикатора.
Да, мое предположение было ошибочным, с работой данной функции разобрался - по приходу нового тика, если по предыдущему все отработано.

Дело в том, что есть один индюк, на истории показывает хорошо, а в работе - не то. Стоит только открыть и тут же закрыть окно настроек данного индюка - и картинка меняется, понятно - в лучшую сторону. Вот накинул на М1 дважды этот индюк, один периодически обновлял через открытие/закрытие его окна настроек, а второй не трогал. В итоге выяснилось, что значения на нулевом и первом барах у них одинаковые, а дальше в историю уже наростает существенная разница. Вообщем, свою идею отправляю в топку, грааля в этот раз не будет.
13.11.2013, 21:04
Регистрация: 13.03.2009 / Сообщений: 2,357
Поблагодарили 1,965 раз(а) / Репутация: 2042
Для этого, как я понимаю, есть функции:

int WindowsTotal() - Возвращает количество окон индикаторов на графике, включая главное окно графика.

int WindowFind(string name) - Возвращает номер подокна графика, содержащего индикатор с указанным именем name, если он найден, иначе возвращается -1. WindowFind() возвращает -1, если пользовательский индикатор ищет сам себя в процессе инициализации init().
Эти функции не указывают на индикатор. В любом подокне может быть много индюков.

Если индикатор перерисовывается нужно выделить файлы индикаторов и нажать shift + delete. И не стоит даже думать как ему помочь инициализироваться что бы он успешно перерисовался.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
13.11.2013, 22:17
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,846
Поблагодарили 9,499 раз(а) / Репутация: 9504
shift + delete так и сделал.
17.11.2013, 21:41
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,031 раз(а) / Репутация: 9031
  • Отправить сообщение для eevviill с помощью Skype™
PHP код:
OrderCloseBy() 
С помощью этой функции можно закрыть залокированные(или частично) позиции. При этом мы сэкономим на одном спреде. В истории сделок будет указано что один ордер закрылся с 0 лотов.
А в ручную где такую функцию найти?

Последний раз редактировалось eevviill; 17.11.2013 в 21:42. Причина: php
18.11.2013, 05:29
Аватар для ansol
ansol ansol вне форума Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,038
Поблагодарили 871 раз(а) / Репутация: 857
PHP код:
OrderCloseBy() 
С помощью этой функции можно закрыть залокированные(или частично) позиции. При этом мы сэкономим на одном спреде. В истории сделок будет указано что один ордер закрылся с 0 лотов.
А в ручную где такую функцию найти?
Это имееется в виду?
18.11.2013, 07:17
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,031 раз(а) / Репутация: 9031
  • Отправить сообщение для eevviill с помощью Skype™
Это имееется в виду?
Да. Спасибо!
Ответить

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 18:53. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO