GOLOS
RU
EN
UA
investigator
3 года назад

Манипуляция сигналами в индикаторах | Чаша плотника


Как и обещал, расскажу на уровне кода нехитрый способ, коим завлекают доверчивых новичков (да и старичков, чего грех таить) в свои сети супер-пупер-прибыльных стратегий адепты-лохотронщики.


Я уже выкладывал скрин витрины, где создатели приложений для торговли продают свои творения. Есть в этой многотысячной куче вполне достойные экземпляры, однако - не Граали. И когда пишу "Достойные", то подразумеваю оригинальную логику (алгоритм) применённый в конкретном изделии. Но основная часть заточена исключительно для продажи. Подчеркну: не для прибыли покупателю в применении этого приложения, а для продажи покупателю. Как говорится: Sold and forgot(продано и забыто).

Для понимания откуда берутся красивые картинки, демонстрируемые потенциальным кроликам, рассмотрим простой пример. Пересечение двух МА. (Ох, Машки, куда от них денешься?)

Хороший сигнал входа на покупку. Рассмотрим только ту часть кода, которая задействована в этом сигнале.

Цикл поочерёдного просмотра всех баров графика начиная с самого старого и по тот, который ещё формируется (с индексом "0"):

while(i>=0)

Переменная с условием пересечения МА отвечающая покупке: на предыдущем баре (i+1) быстрая МА (Fast_MA) была ниже медленной (Slow_MA) и на текущем баре (i) стала выше:

ConditionsBUY = Fast_MA[i+1] < Slow_MA[i+1] && Fast_MA[i] > Slow_MA[i];

Если условие на покупку встречается в чарте, то рисуем стрелку (OpenUp) "покупать" на баре с индексом i и на уровне самой низкой цены этого бара (Low):

if (ConditionsBUY) OpenUp[i] = Low[i];

На первый взгляд, цикл присутствующий в расчетах, нужен лишь для последовательности просмотра баров. Однако, указанная в нём переменная (с конченым индексом, по какой бар смотреть) является определяющей для сигнала: на каком баре рисовать.

Визуально это выглядит так:

Внимание! Бар с индексом "0" ещё не имеет цены закрытия (Close), а также цен High и Low. Единственное значение цены у бара с индексом "0" - цена открытия бара (Open). Это значит, что самое раннее утверждение о пересечении МА (рассчитанных не по ценам открытия) истинно на баре с индексом "1". Соответственно, если в цикле конченый индекс "0":

while(i>=0)

то индикатор должен рассчитываться только(!) по ценам открытия, либо конченый индекс должен быть "1":

while(i>=1)

Тогда картинка с сигналом будет выглядеть так:

Другой важный момент: а на какую цену устанавливать сигнал? В приведенном примере он установлен на самую низкую цену бара (Low):

OpenUp[i] = Low[i];

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

OpenUp[i] = Open[i];

Сравним картинку, которую выдают за действительную, и картинку фактическую:

Как вы поняли, лёгким движением руки, без всякого глубокого знания языка программирования, любой код превращается в Чашу плотника.

Берегите себя!

* * *

  • Коллаж в заглавии от меня


@investigator 

0
4.996 GOLOS
На Golos с January 2017
Комментарии (1)
Сортировать по:
Сначала старые