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
Тенденционные показатели
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;
Код на языке 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.
Сначала мы определили следующие параметры в библиотеке параметров на языке Ma на странице параметров и рецензий в интерфейсе написания кода для изобретателей для количественной политики:
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% случаев.
Таким образом, индикаторы колебания более важны, чем индикаторы тренда, и имеют большее влияние на результаты торговли, и в большинстве волатильных рынков индикаторы тренда практически не работают.
Характеристики индикаторов класса колебаний: изменение значения колебания имеет среднее значение, которое может быть разделено на верхнюю и нижнюю половины горизонтальных областей, которые, как правило, чувствительны к изменениям цен.
Определение тенденции наступает с помощью индикаторов категории тенденций, а определение тенденции заканчивается с помощью индикаторов категории колебаний.
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;
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;
Тенденционная модель: 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;
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 - на слабую тенденцию вниз.
Затем мы объединяем их, чтобы создать торговую систему, основанную на 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Отлично.