Составление инструкций по группировке в количественной стратегии торговли

Автор:Доброта, Создано: 2019-07-10 09:55:13, Обновлено: 2019-07-16 15:37:32

Почему нужно сгруппировать инструкции

Требования стратегических разработчиков

Разные рынки требуют различных показателей. Могу ли я установить разные разницу стоп-лосса в зависимости от условий открытия?

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

Следующий код является простой традиционной стратегией неотличимости условий хранения:

MA5^^MA(C,5);
MA10^^MA(C,10);
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K..SMA(RSV,3,1);
D..SMA(K,3,1);
CROSS(MA5,MA10)||CROSS(K,D),BK;
C>HV(H,10)||C<BKPRICE-5*MINPRICE,SP;
AUTOFILTER;

Но это совсем не так.

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

Например:

Первая группа - многослойная.

MA5^^MA(C,5);
MA10^^MA(C,10);
CROSS(MA5,MA10),BK;
CROSS(MA10,MA5),SP;

Вторая группа - многослойная.

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K..SMA(RSV,3,1);
D..SMA(K,3,1); 
CROSS(K,D),BK; 
C>HV(H,10)||C<BKPRICE-5*MINPRICE,SP;

Как различить условия различных групп в одной модели? Давайте их реализуем.

Способы написания инструкций по разделению

Во-первых, модели подразделяются на фильтрующие и нефильтрующие:

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

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

Модель фильтрации

//A组指令
A组的开多条件,BK('A');
A组的开空条件,SK('A');
A组的平多条件,SP('A');
A组的平空条件,BP('A');
//B组指令
B组的开多条件,BPK('B');
B组的开空条件,SPK('B');
B组的平多条件,SP('B');
B组的平空条件,BP('B');
AUTOFILTER;//过滤函数

Примечание: группировка фильтрующей модели требует присоединения к группе после указания на транзакцию и объединения с цитатой; например, BK (A).

Нефильтрованные модели

//A组指令
A组的开多条件1,BK('A',2);
A组的开空条件1,SK('A',2);
A组的加多条件2,BK('A',1);
A组的加空条件2,SK('A',1);
A组的平多条件,SP('A',GROUPBKVOL('A'));
A组的平空条件,BP('A',GROUPSKVOL('A'));
//B组指令
B组的加多条件,BK('B',1);
B组的加空条件,SK('B',1);
B组的平多条件1,SP('B',GROUPBKVOL('B'));
B组的平空条件1,BP('B',GROUPSKVOL('B'));

Примечание: группировки нефильтрованных моделей требуют добавления группировок и чисел после инструкции к сделке, группы должны быть объединены в цитаты. Например, BK ((A, 2)

Операционный механизм разделения инструкций

Модель фильтрации: сначала групповой фильтр, затем сигнальный фильтр

  • Групповой фильтр означает: если предыдущий сигнал K-линии является сигналом открытия позиций от группы A (BK SK BPK SPK), то текущий сигнал K может быть только сигналом открытия позиций от группы A. Если предыдущий сигнал K-линии является сигналом закрытия позиций от группы A (BP SP), то текущий сигнал K может быть сигналом открытия позиций от любой группы (BK SK BPK SPK).

  • Негруппированные позиции могут быть открыты только при негруппированных позициях.

Сигнальная фильтрация означает: фильтрация открытого сигнала

Приоритеты:

  • Первая K-линия должна быть BK, а текущая K-линия должна быть SPK или SP (SPK имеет приоритет над SP, а затем аналогично)
  • Первая K-линия должна быть SK, а последняя K-линия должна быть BPK или BP.
  • Первая линия K - это BP, а последняя линия K должна быть BK или SK.
  • Первая K-линия должна быть SP, а последняя должна быть BK или SK.
  • Первая линия K - это BPK, а текущая линия K должна быть SPK или SP.
  • Выше K-линия SPK, а теперь K-линия должна быть BPK или BP.

Нефильтрованные модели:

  • Если предыдущий сигнал был выпущен в группе А, то следующий сигнал должен быть выпущен в группе А.
  • Если предыдущий сигнал является позиционным сигналом группы А и группа А позиционирует 0, следующий сигнал может быть позиционным сигналом для любой группы.
  • Если группа А имеет позиции больше 0, то это должен быть сигнал открытия или сигнал закрытия группы А. Примечание: негруппированные условия залога могут быть использованы только для открытия негруппированных условий залога.

Анализ случаев разделения инструкций

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

Модель фильтрации

Традиционный подход: использование 20-цикличных и 60-цикличных гиполинейных форков в качестве критерия определения тренда.

  • Сделать больше над 20-циклической средней, чем над 60-циклической средней.
  • В процессе многотенденции, если максимальная цена составляет 10 к-линий и является высокой для солнечных линий, тренд становится большим. При тирании, с большим стоп-лосс-тиранием, или при возникновении однолинейной мертвой форки тирании. Делайте пустоту и наоборот.
  • В процессе многотенденции, если показатель KDJ является золотой винткой и является лунной линией, длина волны больше. При равновесии, длина волны меньше, чем длина волны.

Код:

MA20^^MA(C,20);
MA60^^MA(C,60);
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
HH:=HV(H,10);
LL:=LV(L,10);
MA20>MA60&&H>HH&&C>O,BK('A');
MA20<MA60&&L<LL&&C<O,SK('A');
L<LV(L,5)||CROSSDOWN(MA20,MA60)||C<BKPRICE-5*MINPRICE,SP('A');
H>HV(H,5)||CROSSUP(MA20,MA60)||C>SKPRICE+5*MINPRICE,BP('A');//只平A组开仓
MA20>MA60&&CROSSUP(K,D)&&C>O,BK('B');
MA20<MA60&&CROSSDOWN(K,D)&&C<O,SK('B');
C>BKPRICE+5*MINPRICE||C<BKPRICE-2*MINPRICE||C<REF(L,BARSBK),SP('B');
C<SKPRICE-5*MINPRICE||C>SKPRICE+2*MINPRICE||C>REF(H,BARSSK),BP('B');//只平B组开仓
//不同的开仓条件开仓,用不同的平仓条件,有针对性的平仓。达到不同行情试用不同策略的目的。
AUTOFILTER;

Нефильтрованные модели

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

  • Перед первым открытием многопозиции и отсутствием тирании 5 циклов и 60 циклов. Перед первым открытием многопозиции и отсутствием тирании 5 циклов и 60 циклов.
  • При 5 циклах тренда больше 60 циклов, максимальная цена создает новый высокий 10 к линии, а затем второй дополнительный позиции. При 5 циклах тренда менее 60 циклов, минимальная цена создает новый низкий 10 к линии, а затем второй пустой позиции.
  • Для первого увеличения позиций, чтобы создать новую низкую или меньшую остановку потерь с точки равновесия; равновесие и обратное.
  • Для второго присоединения позиции, с 5 циклов и 60 циклов равнолинейные мертвые вилки выравнивать; плоскости и обратно.

Код:

MA5^^MA(C,5);
MA10^^MA(C,10);
MA20:=MA(C,20);
MA60^^MA(C,60);
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
HH:=HV(H,10);
LL:=LV(L,10);
CROSSUP(MA5,MA10)&&BKVOL=0&&C>=O,BK('A',2);
CROSSDOWN(MA5,MA10)&&SKVOL=0&&C<=O,SK('A',2);
CROSSUP(MA5,MA60)&&ISLASTBK&&BKVOL=2,BK('A',1);
CROSSDOWN(MA5,MA60)&&ISLASTSK&&SKVOL=2,SK('A',1);
MA5>MA60&&H>HH&&ISLASTSP&&REF(GROUPBKVOL('A'),BARSSP+1)>0,BK('B',1);
MA5<MA60&&L<LL&&ISLASTBP&&REF(GROUPSKVOL('A'),BARSBP+1)>0,SK('B',1);
L<LV(L,5)||C<REF(L,BARSBK)&&(C<BKPRICE-2*MINPRICE),SP('A',GROUPBKVOL('A'));
H>HV(H,5)||C>REF(H,BARSSK)&&(C>SKPRICE+2*MINPRICE),BP('A',GROUPSKVOL('A'));
C>BKPRICE+10*MINPRICE||CROSSDOWN(MA5,MA60),SP('B',BKVOL);
C<SKPRICE-10*MINPRICE||CROSS(MA5,MA60),BP('B',SKVOL);

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


Больше