Анализ случаев написания и кросс-индикаторных моделей нескольких распространенных индикаторов на My языке

Автор:Доброта, Создано: 2019-07-08 10:01:48, Обновлено: 2019-07-16 15:38:53

My язык - это функционально интегрированный и функционально мощный язык количественного программирования, предназначенный для количественных новичков. Хотя он пользуется популярностью у многих новичков, он немного уступает другим языкам в функциональности. В отношении глубокой настройки некоторых сложных стратегий, благодаря тому, что уже настраиваемая библиотека функций очень сильна, в сочетании с прекрасной поддержкой API-интерфейсов для крупных бирж, вы не только сэкономите много времени на написании кода, но и сможете сосредоточить усилия на разработке основной стратегии логики, а также сверхнизкие издержки (цены до 3 юаней в день), которые не оставят вас без внимания.

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

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

Классификация и написание нескольких часто используемых показателей

  • Традиционные классические формы K-линии включают: трехногие вороны, крестоносные звезды, пересеченные головы и пересеченные ноги, один столб небесный, сеньорский палец, золотая иголка и т. Д.

  • По показателям, среди которых трендовые показатели также разделены на: MA (смешанная комбинация), BOLL, PUBU (линия падения), SAR (стоп-потоки) и т. д.

  • Категории колебаний: ATR (настоящий диапазон волн), KDJ (случайный показатель), MACD, WR (индикатор Уильяма) и т.д.

  • Показатели анализа объема хранения CJL (оборот) ∆DUALVOL (отношение многопропускной способности) ∆OBV (оборот энергии)

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

Большая солнечная линия: цена открытия - это минимальная цена, цена закрытия - это самая высокая цена, рост линии K больше 4%.

AA:=OPEN=LOW; 
BB:=CLOSE=HIGH; 
CC :=CLOSE/OPEN>1.04; 

Здесь логически сложные условия суждения: AA&&BB&&CC

Переходный переход: две линии K, которые означают, что рынок будет переходить, а текущая линия K имеет отклонение в открытии не менее 4%; если это тип перехода вверх, то линия K должна солнцезапасть, а максимальная и минимальная цены текущей линии K должны охватывать первую линию K.

A1:=REF(CLOSE,1); 
A2:=REF(OPEN,1); 
BB:C/O>1.04;
B1:=OPEN<A1; 
B2:=CLOSE>A2;

Логические условия здесь: BB&&B1&B2

Тенденционные показатели

  • Уравнительная пересечение: 5-дневная уравнительная пересекает 10-дневную уравнительную пересекает вверх ((золотой вилок); 5-дневная уравнительная пересекает 10-дневную уравнительную пересекает вниз ((мертвый вилок)
MA5:=MA(CLOSE,5); 
MA10:=MA(CLOSE,10);
金叉 CROSSUP(MA5,MA10);
死叉 CROSSDOWN(MA5,MA10);

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

Точно так же, для стратегической логики трёх средних линий, предположим, что средние 5 дней, средние 10 дней и средние 30 дней расположены в многочисленных рядах и продолжаются 3 дня, мы можем написать:

MA5:=MA(CLOSE,5); 
MA10:=MA(CLOSE,10); 
MA30:=MA(CLOSE,30); 
CC:=MA5>MA30 AND MA10>MA30;
  • BOLL-канал: BOLL состоит из трёх каналов: Bottom, Top и Mid. Когда канал становится шире и выше, цена находится выше траектории, приходит многоголовый тренд.

Код на языке My может быть написан так:

MID:MA(CLOSE,26);//求N个周期的收盘价均线,称为布林通道中轨
TMP2:=STD(CLOSE,26);//求M个周期内的收盘价的标准差
TOP:MID+2*TMP2;//布林通道上轨
BOTTOM:MID-2*TMP2;//布林通道下轨
AA:=TOP>REF(TOP,1)&&BOTTOM<REF(BOTTOM,1)&&MID>REF(MID,1);
BB:=C>TOP;

В результате, многие из этих тенденций оцениваются как: AA&&BB.

  • SAR (стоп-пост) индикатор: SAR вверх через 0, многоголовый тренд; SAR вниз через 0, пустой тренд.

Сначала мы определили следующие параметры в библиотеке параметров на языке Ma на странице параметров и рецензий в интерфейсе написания кода для изобретателей для количественной политики:

img img

N 1 100 4 Шаг 1 20 2 НАЦИЯ 1 10 2

STEP1:=STEP/100;
MVALUE1:=MVALUE/10;
SARLINE:SAR(N,STEP1,MVALUE1),CIRCLEDOT;
//N个周期的抛物转向,步长为STEP1,极限值为MVALUE1.
CROSS(SARLINE,0),BPK;//抛物转向值上穿0,做多。
CROSS(0,SARLINE),SPK;//抛物转向值下穿0,作空。
AUTOFILTER;

Показатели колебания класса

Любой, кто имеет опыт торговли, знает, что на любом рынке цены находятся в волатильном состоянии 80% времени, а цены движутся в тренде лишь в 20% случаев.

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

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

Определение тенденции наступает с помощью индикаторов категории тенденций, а определение тенденции заканчивается с помощью индикаторов категории колебаний.

  • KDJ состоит из трех линий K, D, J, которые варьируются от 0 до 100, J-линия ниже 20, переходят в зону перепродажи, J-линия выше 80, переходят в зону перекупки.
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
//收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。
K:SMA(RSV,M1,1);//RSV的移动平均值
D:SMA(K,M2,1);//K的移动平均值
J:3*K-2*D;
BACKGROUNDSTYLE(1);
CROSS(K,D),BPK;//KD金叉,做多。
CROSS(J,20),BP;//J值上穿20
CROSS(D,K),SPK;//KD死叉,做空。
CROSS(80,J),SP;// J值下穿80
AUTOFILTER;
  • Индекс MACD имеет в основном то же значение, что и двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной двойной д
DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);
//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA:EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
CROSS(DIFF,DEA),BPK;//DIFF上穿DEA,做多。
CROSS(DEA,DIFF),SPK;//DIFF下穿DEA,做空。
AUTOFILTER;

Примеры моделей с различными показателями

Почему мы должны пересекать показатели?

  • Первая причина: кросс-индикатор в модели - это торговая идея, которая сочетает в себе множество различных классификационных индикаторов.

  • Вторая причина: индикаторы трендового класса не работают в целом рынке, отдельно использование индикаторов колебания не может определить текущее состояние рынка, требуя совместного анализа нескольких индикаторов.

Обычные мысли

  • В результате, мы сможем получить более качественную информацию о том, что мы делаем.
  • Много условий - одно и то же решение.

Примеры шоковой модели

  • Индекс приливов
ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100

Измеряет колебания цен в течение определенного цикла: индекс последовательно колеблется в небольшом диапазоне.

Идеи торговли волатильной моделью: определение показателя прилива, KDJ, показывая точки входа и выхода

Эта модель может быть написана так:

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);//RSV的移动平均值
D:SMA(K,M2,1);//K的移动平均值
J:3*K-2*D;
CMIVAL:ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(LOW,30))*100,NODRAW;
BACKGROUNDSTYLE(1);
K>D&&EVERY(CMIVAL<20,2),BPK;//盘整行情,KD金叉,做多。
CROSS(J,10)||CROSS(K,D),BP;// J值上穿10超卖或者KD金叉,平仓
D>K&&EVERY(CMIVAL<20,2),SPK;//盘整行情,KD死叉,做空。
CROSS(90,J)||CROSS(D,K),SP;// J值下穿90超买或者KD死叉,平仓
AUTOFILTER;

img

Примеры моделей трендов

Тенденционная модель: EMA определяет тенденцию к росту или к падению; ADX отражает степень изменения тренда, сильный вход в тренд, слабый прогноз на тренд.

EMA оценивает тенденции в торговых системах:

UPPERMA:EMA(HIGH,30);//计算30根K线最高价的EMA
LOWERMA:EMA(LOW,30);//计算30根K线最低价的EMA
CROSSUP(C,UPPERMA),BPK;//收盘价上穿EMA,做多
CROSSDOWN(C,LOWERMA),SPK;//收盘价下穿EMA,做空
AUTOFILTER;

img

EMA может судить только о многотендентном и нетенденционном тренде, но не может судить о силе и слабости тренда, поэтому EMA неэффективен в рыночном раскладе, поэтому нам нужно искать показатель, который может отражать сильный и слабый тренд: индекс ADX.

Код выглядит так:

TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);
HD:=HIGH-REF(HIGH,1);//最高价与前一周期最高价做差
LD:=REF(LOW,1)-LOW;//前一周期最低价与最低价做差
DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);
//如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。
DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);
//如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。
PDI:=DMP*100/TR;
MDI:=DMM*100/TR;
ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);

ADX указывает на сильную тенденцию вверх, а ADX - на слабую тенденцию вниз.

img

Затем мы объединяем их, чтобы создать торговую систему, основанную на ADX и EMA.

Код выглядит так:

TR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),14);
HD:=HIGH-REF(HIGH,1);
LD:=REF(LOW,1)-LOW;
DMP:=SUM(IFELSE(HD>0 && HD>LD,HD,0),14);
DMM:=SUM(IFELSE(LD>0 && LD>HD,LD,0),14);
PDI:=DMP*100/TR;
MDI:=DMM*100/TR;
ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,6);
UPPERMA:=EMA(HIGH,30);
LOWERMA:=EMA(LOW,30);
CROSSUP(C,UPPERMA)&&EVERY(ADX>REF(ADX,1),2),BPK;
//当ADX连续两周期向上且当前价大于30根K线最高价的EMA满足买入条件
CROSSDOWN(C,LOWERMA)&&EVERY(ADX>REF(ADX,1),2),SPK;
//当ADX连续两周期向上且当前价下于30根K线最低价的EMA满足卖出条件
AUTOFILTER;

Однозначное определение по нескольким аналогичным показателям Увеличить шансы на победу с помощью точного анализа

Поиск нескольких трендовых показателей: Блиннский канал (BOLL), Дончжанский канал, УВД - это системы, основанные на адаптивном Блиннском канале и адаптивном Дончжанском канале.

Донч-Ан: изобретен американским физиком-фьючерсом Чадом Деннисом (Richard Dennis) и является предшественником закона бухты. Он состоит из максимальной и минимальной цены в определенном цикле (обычно 20, в некоторых случаях установленных как изменяемых), формирующих трассу вверх и вниз, когда цена проходит трассу вверх, прорыв на трассе является сигналом о возможной покупке; наоборот, прорыв на трассе является сигналом о возможной продаже.

Идея многоиндикаторной модели торговли:

  • Вчера цены были выше, чем в Блин-канал, и в этот день цикл цены был выше, чем в Дончжан-канал, и это было больше, чем в прошлый раз.

  • Вчера цены были ниже, чем в Блин-канал, и в этот день цикл цены был ниже, чем в Дончжан-канал.

  • При хранении многооборота цена меньше, чем при адаптации к средней линии выхода, дешевле многооборота

  • При наличии пустых линий цены выше, чем при адаптации к среднему уровню выхода, плоские пустые линии

Мы можем написать так:

//当日市场波动
TODAYVOLATILITY:=STD(CLOSE,30);
//昨日市场波动
YESTERDAYVOLATILITY:=REF(TODAYVOLATILITY,1);
//市场波动的变动率
DELTAVOLATILITY:(TODAYVOLATILITY-YESTERDAYVOLATILITY)/TODAYVOLATILITY;
//计算自适应参数
LOOKBACKDAYS1:=LOOP2(BARPOS=30,20,REF(LOOKBACKDAYS1,1)*(1+DELTAVOLATILITY));
LOOKBACKDAYS2:=ROUND(LOOKBACKDAYS1,0);
LOOKBACKDAYS3:=MIN(LOOKBACKDAYS2,60);//60自适应参数的上限
LOOKBACKDAYS:=MAX(LOOKBACKDAYS3,20);//20自适应参数的下限
//自适应布林通道中轨
MIDLINE:=MA(CLOSE,LOOKBACKDAYS);
BAND:=STD(CLOSE,LOOKBACKDAYS); 
//自适应布林通道上轨
UPBAND:=MIDLINE+2*BAND;
//自适应布林通道下轨
DNBAND:=MIDLINE-2*BAND; 
//自适应唐奇安通道上轨
BUYPOINT:=HHV(HIGH,LOOKBACKDAYS);
//自适应唐奇安通道下轨
SELLPOINT:=LLV(LOW,LOOKBACKDAYS);
//自适应出场均线
LIQPOINT:=MIDLINE;
//昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,开多单
REF(C,1)>REF(UPBAND,1)&&HIGH>=REF(BUYPOINT,1),BK;
//持有多单时,昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,平多单
REF(C,1)<REF(DNBAND,1)&&LOW<=REF(SELLPOINT,1),SP;
//持有多单时,价格小于自适应出场均线,平多单
BARSBK>=1&&LOW<=REF(LIQPOINT,1),SP;
//持有空单时,昨日价格大于布林通道上轨,并且当日价格大于唐奇安通道上轨,平空单
REF(C,1)>REF(UPBAND,1)&&H>=REF(BUYPOINT,1),BP;
//昨日价格小于布林通道下轨,并且当日价格小于唐奇安通道下轨,开空单
REF(CLOSE,1)<REF(DNBAND,1)&&LOW<=REF(SELLPOINT,1),SK;
//持有空单时,价格大于自适应出场均线,平空单
BARSSK>=1&&HIGH>=REF(LIQPOINT,1),BP;
AUTOFILTER;

В процессе написания следует отметить, что в языке My существуют различие между клавиатурой CROSSUP, клавиатурой CROSSDOWN и клавиатурой > клавиатурой, клавиатурой < клавиатурой. Также существует гибкое использование клавиатуры "AND &&", клавиатуры "OR" или клавиатуры "OR" и многоусловное соединение операторов, которые обращают внимание на вопросы приоритетности.

Выше приведены некоторые распространенные технические показатели и их совместное использование. Как видно, My язык является очень мощным языком сценариев, помимо дружественного для новичков опыта обучения, даже квалифицированный специалист может гибко использовать эти показатели и грамматику для создания мощной стратегии торговли. В сочетании с превосходной поддержкой API-интерфейсов для квантовой платформы изобретателя, квантовые разработчики, наконец, смогут по-настоящему сосредоточить свои усилия на исследовании и написании стратегии, а не на базовой архитектуре торговой системы, которая не имеет ничего общего с квантовой торговлей, особенно в последние годы ограничения на высокочастотную торговлю становятся все более строгими.


Больше

гипп9Марк

wwq4817Отлично.