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

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

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

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,027 раз(а) / Репутация: 9027
  • Отправить сообщение для eevviill с помощью Skype™
Сообщение от ansol Посмотреть сообщение
Ну логика такая, что раз Bid вылез за установленные рамки, то эти рамки надо расширить.
if(Rhigh < Bid) Rhigh = Bid + spread; - это Бид за верхней границей, поэтому поднимаем верхнюю границу еще выше Бида
if(Rlow > Bid) Rlow = Bid - spread; - это Бид ниже нижней границы, опускаем её
Т.е. пока там в следующий раз Бид дочапает до отодвинутой границы, тики должны пропускаться по return
Я почему и спрашиваю, что часто бывает по невнимательности че-то накосячу - ощущение, что не пропускает оно ничего.
Вроди всё правильно, попробуй алертом проверить.
eevviill вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ansol (11.11.2013)
12.11.2013, 04:58
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от ansol Посмотреть сообщение
Пытаюсь "обрезать" лишние тики при тестировании:
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=...
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
ansol (12.11.2013), eevviill (12.11.2013)
12.11.2013, 05:23
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

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

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

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

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

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

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

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Так... Ч0рто пабьери!..
Я а-то думаю, что у меня дурная сова х на у поделить не может по-быстрому?! Ну, ладно, счас будем чинить это безобразие, спасибо
ansol на форуме Ответить с цитированиемОтветить с цитированием  
13.11.2013, 14:42
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,758
Поблагодарили 9,108 раз(а) / Репутация: 9113
ВОПРОС
Просмотрев горячие клавиши по МТ4, не нашел как вызвать окно настроек индикатора. При этом, как я понимаю, когда наброшен индюк на график и вызывается окно настроек данного индюка, функция int start() прерывает свою работу до момента закрытия окна настроек? Если это так, то, что за функция, команда, запускается в этот момент? Есть необходимость полу-автоматически либо автоматически вызвать окно настроек индюка. Как это реализовать?
mobidik на форуме Ответить с цитированиемОтветить с цитированием  
13.11.2013, 15:23
Аватар для qqmber
qqmber Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
Сообщение от mobidik Посмотреть сообщение
ВОПРОС
Просмотрев горячие клавиши по МТ4, не нашел как вызвать окно настроек индикатора. При этом, как я понимаю, когда наброшен индюк на график и вызывается окно настроек данного индюка, функция int start() прерывает свою работу до момента закрытия окна настроек? Если это так, то, что за функция, команда, запускается в этот момент? Есть необходимость полу-автоматически либо автоматически вызвать окно настроек индюка. Как это реализовать?
Простого способа нет. На графике может быть индикаторов больше, чем кнопок на клавиатуре, каждому персональный хоткей не выдашь.
Но если очень надо, я бы послал через WinAPI последовательность Ctrl/I ↓ ↓ Tab Tab Enter.
qqmber вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (13.11.2013)
13.11.2013, 15:31
Регистрация: 13.03.2009 / Сообщений: 2,320
Поблагодарили 1,944 раз(а) / Репутация: 2019
Сообщение от mobidik Посмотреть сообщение
ВОПРОС
Просмотрев горячие клавиши по МТ4, не нашел как вызвать окно настроек индикатора.
Как Вы себе это представляете. Вот у меня есть активное окно, я нажимаю горячие клавиши вызова свойств индикатора. Возникает вопрос, а какого, ведь в окне может быть много индикаторов.
Сообщение от mobidik Посмотреть сообщение
При этом, как я понимаю, когда наброшен индюк на график и вызывается окно настроек данного индюка, функция int start() прерывает свою работу до момента закрытия окна настроек?
Это не так. Индикатор продолжает работать, функция start() выполняется с приходом тика даже когда открыто окно настроек индикатора.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (13.11.2013)
13.11.2013, 16:47
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,758
Поблагодарили 9,108 раз(а) / Репутация: 9113
Сообщение от Ugar Посмотреть сообщение
Как Вы себе это представляете. Вот у меня есть активное окно, я нажимаю горячие клавиши вызова свойств индикатора. Возникает вопрос, а какого, ведь в окне может быть много индикаторов.
Для этого, как я понимаю, есть функции:

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

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

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

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

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

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

Если индикатор перерисовывается нужно выделить файлы индикаторов и нажать shift + delete. И не стоит даже думать как ему помочь инициализироваться что бы он успешно перерисовался.

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

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

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

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от eevviill Посмотреть сообщение
PHP код:
OrderCloseBy() 
С помощью этой функции можно закрыть залокированные(или частично) позиции. При этом мы сэкономим на одном спреде. В истории сделок будет указано что один ордер закрылся с 0 лотов.
А в ручную где такую функцию найти?
Это имееется в виду?
Миниатюры:
Нажмите на изображение для увеличения
Название: eur.jpg
Просмотров: 13
Размер:	180.2 Кб
ID:	140475  
ansol на форуме Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (18.11.2013)
18.11.2013, 07:17
Аватар для eevviill
eevviill Заблокирован
За второе место в конкурсе 

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

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


Опции темы

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

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



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


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