[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 71

 
r772ra , artmedia70

Спасибо, всё заработало!
 
artmedia70:

Дам наводку:

NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point  --- разница смежных баров. Если условие не выполняется -> Return(False); (Возвращаем ложь)

После прохождения всего цикла возвращаем истину

Можно сделать иначе:

При истинности условия NormalizeDouble(Low[i]-Low[i+1],Digits)<=3*Point увеличиваем счётчик смежных баров (изначально равный нулю) на 1,

при ложности данного условия возвращаем значение счётчика смежных баров.

Чем большее число вернёт функция, тем большую силу имеет сетап. При возврате ноля - сетапа нет.



 По-моему тут не нужно нормализовывать цену, ведь нам нужно сравнить всего навсего с целым числом. Тут лучше воспользоваться функцией MathAbs(double value), чтоб если одна из цен выше другой, знак было на выходе всегда положительный.

 

 Ещё такой момент. Выходит, что цикл то нам не нужен вовсе!

 Проще взять функцию, и и завести там счётчик. Проверяем постоянно 2 соседних бара на экстремумы, если одинаковы.. то счётчик повысился на 1 (изначально будет равен 0 разумеется). Дальше, на следующем новом баре проводим аналогичную проверку. Если экстремумы одинаковы, то счётчику добавим еденичку и т.д. Тут цикл не нужен по ходу, так?

Ведь мы не знаем сколько у нас баров будет с одинаковым значением экстремума, и тем самым, смысла нет задавать параметр шифта в историю.

 
Notter:

Много говорится о высокочастотной торговле. Мол HFT всех побеждает. В чём его такое принципмальное приимущество перед нами? То, что короткий пинг - это само по себе хорошо - это понятно, но для сделки ведь требуется время больше чем миллисекунда :) Какое новое качество появляется у HFT и чем принципиально отличаются алгоритмы?

Спасибо. 


Вы на "Запорожце" а "эти" - на "Феррари". Сможете обогнать?(Дело не в алгоритмах)
 
YOUNGA:

Вы на "Запорожце" а "эти" - на "Феррари". Сможете обогнать?(Дело не в алгоритмах)
Запорожец надо доделать немного. Тогда не только Ферари можно "сделать".
 
YOUNGA:

Вы на "Запорожце" а "эти" - на "Феррари". Сможете обогнать?(Дело не в алгоритмах)

Всё же есть принципиальное различие.

 

Хотя бы взять риск/доходность. Если HFT режит прибыль по пунктам, то стопы он явно не ставит, и закрытие позы у него по другим критериям. Вот их то и хотелось бы понять. Возможно, что любой тик против позы и выход :)  Но , тогда откуда там прибыль?

 
Опять за помощью.


Как определить с какой стороны пересекает цены SMA?
 
hoz:


 По-моему тут не нужно нормализовывать цену, ведь нам нужно сравнить всего навсего с целым числом. Тут лучше воспользоваться функцией MathAbs(double value), чтоб если одна из цен выше другой, знак было на выходе всегда положительный.

 

 Ещё такой момент. Выходит, что цикл то нам не нужен вовсе!

 Проще взять функцию, и и завести там счётчик. Проверяем постоянно 2 соседних бара на экстремумы, если одинаковы.. то счётчик повысился на 1 (изначально будет равен 0 разумеется). Дальше, на следующем новом баре проводим аналогичную проверку. Если экстремумы одинаковы, то счётчику добавим еденичку и т.д. Тут цикл не нужен по ходу, так?

Ведь мы не знаем сколько у нас баров будет с одинаковым значением экстремума, и тем самым, смысла нет задавать параметр шифта в историю.

MathAbs() там естественно нужен - я писал навскидку, сидя за рулём - много не напишешься, тем более, что давал наводку на мысль. Нормализую цены, так как сравнение действительных чисел требует нормализации, а сравниваем мы не с целым числом (ведь 3*Point - это int*double - преобразование int в double). Я бы всё же сделал функцию, чтобы она сравнивала бары на каждом тике - привык сразу думать для реала. Если эксперт на реале по каким-либо причинам отключится, то переменная, хранящая значение счётчика, при перезапуске эксперта обнулится - это не есть гут... это потеря данных. При потиковом же поиске (а лучше побарном для оптимизации скорости) перезапуск советника в данном случае не так страшен - он вновь всё пересчитает. Посему лучше сделать отдельную функцию, которая на каждом новом баре сравнивает заданное количество смежных баров на равенство (ну как там у вас) и возвращает количество одинаковых по заданному критерию подряд идущих баров, начиная от первого и вглубь истории на то количество баров, которое было передано в функцию (штук десять - за глаза...).

В общем ... как-то так ...

 
md4RM:
Опять за помощью.


Как определить с какой стороны пересекает цены SMA?

Если (

iMA(Symbol(), Period(), 1, 0, MODE_SMA, PRICE_CLOSE, 2) <= SMA(бла, бла, бла, 2)

и

iMA(Symbol(), Period(), 1, 0, MODE_SMA, PRICE_CLOSE, 1) > SMA(бла, бла, бла, 1)

) то

{цена пересекла вашу SMA снизу-вверх на первом баре}

 

Спасибо, ошибку нашел.

 

День добрый! Помогите пожалуйста. Я скачал индикатор VininI_HMA и попытался вставить его в шаблон советника, но советник сделки не открывает. Компиляция прошла нормально.

Условия для SELL (сигж1==EMPTY_VALUE)&& (сигж2!=EMPTY_VALUE)&& (сигк1!=EMPTY_VALUE)&& (сигк2!=EMPTY_VALUE)

Условия для Buy (сигж1==EMPTY_VALUE)&& (сигж2!=EMPTY_VALUE)&& (сигз1!=EMPTY_VALUE)&& (сигз2!=EMPTY_VALUE) 

 

double сигж1 = iCustom(NULL,0,"VininI_HMA_sound&Alert",period,method,price,sdvig,0,1);
double сигж2 = iCustom(NULL,0,"VininI_HMA_sound&Alert",period,method,price,sdvig,0,2);
double сигз1 = iCustom(NULL,0,"VininI_HMA_sound&Alert",period,method,price,sdvig,1,1);
double сигз2 = iCustom(NULL,0,"VininI_HMA_sound&Alert",period,method,price,sdvig,1,2);
double сигк1 = iCustom(NULL,0,"VininI_HMA_sound&Alert",period,method,price,sdvig,2,1);
double сигк2 = iCustom(NULL,0,"VininI_HMA_sound&Alert",period,method,price,sdvig,2,2);

Подскажите пожалуйста, в чем я ошибся ? 

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