Integrierte Handelsstrategien

In qteasy gibt es mehr als 70 integrierte Handelsstrategien, die Benutzer problemlos direkt nutzen können. Gleichzeitig bietet qteasy eine Reihe von Handelsstrategie-Kombinationsmechanismen, und Benutzer können mehrere einfache Handelsstrategien zu einer komplexeren Handelsstrategie kombinieren. Die Kombinationsmethode der Strategie kann flexibel eingestellt werden. Nach der Kombination mehrerer einfacher Handelsstrategien zu einer komplexen Strategie kann das Strategieoptimierungstool auch zur Suche nach den besten Parametern der gesamten komplexen Strategie verwendet werden.

In diesem Tutorial erfahren Sie, wie Sie integrierte Handelsstrategien verwenden, wie Sie Strategien kombinieren, wie Sie Kombinationsregeln festlegen, um komplexe Strategien zu erreichen, und wie Sie Strategien optimieren.

Integrierte Strategien

qt.get_built_in_strategy(id)

qt.built_in_list(stg_id=None)

Die Ausgabe der oben genannten drei Methoden ist die gleiche, alle listen alle integrierten Handelsstrategien mit einem Diktat auf, wobei der Schlüssel die ID der Handelsstrategie und der Wert das Handelsstrategieobjekt ist. Wenn stg_id angegeben ist, werden die detaillierten Informationen der angegebenen Handelsstrategie gedruckt. Zum Beispiel:

# 获取内置交易策略的清单
stg_list = qt.built_ins('dma')

Folgende Informationen werden gedruckt:

DMA择时策略

策略参数:
    s, int, 短均线周期
    l, int, 长均线周期
    d, int, DMA周期
信号类型:
    PS型:百分比买卖交易信号
信号规则:
    在下面情况下产生买入信号:
    1, DMA在AMA上方时,多头区间,即DMA线自下而上穿越AMA线后,输出为1
    2, DMA在AMA下方时,空头区间,即DMA线自上而下穿越AMA线后,输出为0
    3, DMA与股价发生背离时的交叉信号,可信度较高

策略属性缺省值:
默认参数:(12, 26, 9)
数据类型:close 收盘价,单数据输入
采样频率:天
窗口长度:270
参数范围:[(10, 250), (10, 250), (8, 250)]
策略不支持参考数据,不支持交易数据

Die integrierte Handelsstrategie kann direkt über die ID in qteasy abgerufen werden

Neben der Verwendung von qt.get_built_in_strategy() zum Abrufen der Handelsstrategie kann die integrierte Handelsstrategie-ID auch als Parameter beim Erstellen des Operator-Objekts übergeben werden, um die Handelsstrategie direkt zu erstellen.

# 获取内置交易策略的ID
strategy_ids = qt.built_ins().keys()
print(list(strategy_ids)[:10])
['crossline', 'macd', 'dma', 'trix', 'cdl', 'bband', 's-bband', 'sarext', 'ssma', 'sdema']
# 使用策略ID获取交易策略
stg = qt.get_built_in_strategy('trix')
# 显示策略的相关信息
stg.info()
Strategy_type:      RuleIterator
Strategy name:      TRIX
Description:        TRIX strategy, determine long/short position according to triple exponential weighted moving average prices
Strategy Parameter: (25, 125)

Strategy Properties     Property Value
---------------------------------------
Parameter count         2
Parameter types         ['int', 'int']
Parameter range         [(2, 50), (3, 150)]
Data frequency          d
Sample frequency        d
Window length           270
Data types              ['close']
# 通过策略ID直接生成Operator
op = qt.Operator(strategies='dma, macd')
# 通过op.get_stg或op[]获取交易策略
stg_dma = op.get_stg('dma')
stg_macd = op['macd']

# 查看两个交易策略的相关信息
stg_dma.info()
stg_macd.info()
Strategy_type:      RuleIterator
Strategy name:      DMA
Description:        Quick DMA strategy, determine long/short position according to differences of moving average prices with simple timing strategy
Strategy Parameter: (12, 26, 9)

Strategy Properties     Property Value
---------------------------------------
Parameter count         3
Parameter types         ['int', 'int', 'int']
Parameter range         [(10, 250), (10, 250), (10, 250)]
Data frequency          d
Sample frequency        d
Window length           270
Data types              ['close']

Strategy_type:      RuleIterator
Strategy name:      MACD
Description:        MACD strategy, determine long/short position according to differences of exponential weighted moving average prices
Strategy Parameter: (12, 26, 9)

Strategy Properties     Property Value
---------------------------------------
Parameter count         3
Parameter types         ['int', 'int', 'int']
Parameter range         [(10, 250), (10, 250), (10, 250)]
Data frequency          d
Sample frequency        d
Window length           270
Data types              ['close']

Die folgenden integrierten Handelsstrategien werden von qteasy unterstützt:

ID

Strategiename

Beschreibung

crossline

TimingCrossline

Crossline-Timing-Strategieklasse, die den Schnittpunkt der gleitenden Long- und Short-Durchschnitte verwendet, um den Long- und Short-Zustand zu bestimmen
1. Wenn der kurze gleitende Durchschnitt über dem langen gleitenden Durchschnitt liegt und der Abstand größer als l*m% ist, setzen Sie das Positionsziel auf 1
2. Wenn der kurze gleitende Durchschnitt unter dem langen gleitenden Durchschnitt liegt und der Abstand größer als l*m% ist, setzen Sie das Positionsziel auf -1
3. Wenn der Abstand zwischen den gleitenden Long- und Short-Durchschnitten nicht größer als l*m% ist, setzen Sie das Positionsziel auf 0

macd

TimingMACD

MACD-Timing-Strategieklasse, die die MACD-Strategie des gleitenden Durchschnitts verwendet, um den Zielpositionsprozentsatz zu generieren:
1. Wenn der MACD-Wert größer als 0 ist, setzen Sie das Positionsziel auf 1
2. Wenn der MACD-Wert kleiner als 0 ist, setzen Sie das Positionsziel auf 0

dma

TimingDMA

DMA-Timing-Strategie
1. Wenn DMA über AMA liegt, handelt es sich um ein langes Positionsintervall, d. h. wenn die DMA-Linie die AMA-Linie von unten nach oben kreuzt, beträgt die Ausgabe 1
2. Wenn DMA unter AMA liegt, handelt es sich um ein kurzes Positionsintervall, d. h. wenn die DMA-Linie die AMA-Linie von oben nach unten kreuzt, ist die Ausgabe 0

trix

TimingTRIX

TRIX-Timing-Strategie, die den dreifach geglätteten exponentiellen gleitenden Durchschnittspreis der Aktienpreise für die Long- und Short-Beurteilung verwendet:
Berechnen Sie den dreifach geglätteten exponentiellen gleitenden Durchschnittspreis TRIX des Preises und berechnen Sie dann den gleitenden Durchschnitt des M-Tages-TRIX:
1. Wenn TRIX über MATRIX liegt, setzen Sie das Positionsziel auf 1
2. Wenn TRIX unter MATRIX liegt, setzen Sie das Positionsziel auf -1

cdl

TimingCDL

CDL-Timing-Strategie: Finden Sie das Cdldoji-Muster, das den Anforderungen im K-Linien-Diagramm entspricht. Suchen Sie nach dem Cdldoji-Muster, das im historischen Datenfenster angezeigt wird (Übereinstimmungsgrad zwischen 0 und 100), addieren Sie es /100 und berechnen Sie die entsprechende Cdldoji-Übereinstimmungsmenge, indem Sie die Übereinstimmungsmenge als Handelssignal verwenden.

bband

TimingBBand

Die Bollinger-Band-Handelsstrategie bestimmt Long- und Short-Positionen auf der Grundlage der Beziehung zwischen den Aktienkursen und den oberen und unteren Bändern der Bollinger-Bänder. Handelssignale werden generiert, wenn der Preis die oberen und unteren Bänder überschreitet oder unterschreitet. Der Typ des gleitenden Durchschnitts der Bollinger-Bänder ist nicht wählbar<br

s-bband

SoftBBand

Die progressive Bollinger-Band-Handelsstrategie bestimmt Long- und Short-Positionen auf der Grundlage der Beziehung zwischen Aktienkursen und den oberen und unteren Bändern der Bollinger-Bänder. Das Handelssignal wird nicht auf einmal generiert, sondern für den Kauf und Verkauf schrittweise erhöht. Berechnen Sie BBAND ​​und prüfen Sie, ob der Preis das obere oder untere Band von BBAND ​​überschreitet:
1. Wenn der Preis über dem oberen Band liegt, wird jeden Tag ein Kaufhandelssignal mit einem Anteil von 10 % generiert
2. Wenn der Preis unter dem unteren Band liegt, wird täglich ein Verkaufssignal mit einem Anteil von 33 % generiert

sarext

TimingSAREXT

Bei der SAR-Strategie wird ein Kaufsignal ausgegeben, wenn der Indikator größer als 0 ist, und wenn der Indikator kleiner als 0 ist, wird ein Verkaufssignal ausgegeben.

ssma

SCRSSMA

Single Moving Average Crossover-Strategie – SMA Moving Average (einfacher Moving Average): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienpreises und des SMA Moving Average fest

sdema

SCRSDEMA

Single Moving Average Crossover-Strategie - DEMA Moving Average (doppelter exponentieller Glättungsdurchschnitt): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienpreises und des DEMA Moving Average fest

sema

SCRSEMA

Single Moving Average Crossover-Strategie – EMA Moving Average (Exponential Smoothing Moving Average): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienkurses und des EMA Moving Average fest

sht

SCRSHT

Single Moving Average Crossover-Strategie – HT (Hilbert-Transformation der momentanen Trendlinie): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienkurses und der HT-Linie fest

skama

SCRSKAMA

Single Moving Average Crossover-Strategie – KAMA Moving Average (Kaufman Adaptive Moving Average): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienkurses und des KAMA Moving Average fest

smama

SCRSMAMA

Single Moving Average Crossover-Strategie – MAMA Moving Average (MESA Adaptive Moving Average): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienpreises und des MAMA Moving Average fest

st3

SCRST3

Single Moving Average Crossover-Strategie - T3 Moving Average (dreifacher exponentieller Glättungs-Moving Average): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienpreises und des T3 Moving Average fest

stema

SCRSTEMA

Crossover-Strategie mit einfachem gleitendem Durchschnitt – gleitender TEMA-Durchschnitt (dreifacher exponentieller Glättungs-gleitender Durchschnitt): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienpreises und des gleitenden TEMA-Durchschnitts fest

strima

SCRSTRIMA

Single-Moving-Average-Crossover-Strategie – TRIMA-Moving-Average (dreifacher exponentieller Glättungs-Moving-Average): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienkurses und des TRIMA-Moving-Average fest

swma

SCRSWMA

Single Moving Average Crossover-Strategie – WMA Moving Average (gewichteter Moving Average): Legen Sie das Positionsverhältnis entsprechend der relativen Position des Aktienpreises und des WMA Moving Average fest

dsma

DCRSSMA

Crossover-Strategie mit doppeltem gleitenden Durchschnitt – gleitender SMA-Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den Berechnungsregeln für gleitende SMA-Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

ddema

DCRSDEMA

Double Moving Average Crossover-Strategie – SMA Moving Average (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den DEMA-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

dema

DCRSEMA

Double Moving Average Crossover-Strategie – SMA Moving Average (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den EMA-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

dkama

DCRSKAMA

Crossover-Strategie mit doppeltem gleitenden Durchschnitt – gleitender SMA-Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den KAMA-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

dmama

DCRSMAMA

Crossover-Strategie mit doppeltem gleitenden Durchschnitt – gleitender SMA-Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den MAMA-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

dt3

DCRST3

Crossover-Strategie mit doppeltem gleitenden Durchschnitt – gleitender SMA-Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den T3-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

dtema

DCRSTEMA

Crossover-Strategie mit doppeltem gleitenden Durchschnitt – gleitender SMA-Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den TEMA-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

dtrima

DCRSTRIMA

Crossover-Strategie mit doppeltem gleitenden Durchschnitt – gleitender SMA-Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den TRIMA-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

dwma

DCRSWMA

Crossover-Strategie mit doppeltem gleitenden Durchschnitt – gleitender SMA-Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie schnelle und langsame gleitende Durchschnitte basierend auf den WMA-Berechnungsregeln für gleitende Durchschnitte und legen Sie das Positionsverhältnis entsprechend der relativen Position der schnellen und langsamen gleitenden Durchschnitte fest

slsma

SLPSMA

Steigungshandelsstrategie – SMA-gleitender Durchschnitt (einfacher gleitender Durchschnitt):
Generieren Sie gleitende Durchschnitte basierend auf den SMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

sldema

SLPDEMA

Steigungshandelsstrategie – gleitender DEMA-Durchschnitt (gleitender Durchschnitt mit doppelter exponentieller Glättung):
Generieren Sie gleitende Durchschnitte basierend auf den DEMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

slema

SLPEMA

Steigungshandelsstrategie – gleitender EMA-Durchschnitt (exponentiell glättender gleitender Durchschnitt):
Generieren Sie gleitende Durchschnitte basierend auf den EMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

slht

SLPHT

Steigungshandelsstrategie – gleitender HT-Durchschnitt (Hilbert-Transformation – sofortige Trendlinie):
Generieren Sie gleitende Durchschnitte basierend auf den HT-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

slkama

SLPKAMA

Steigungshandelsstrategie – KAMA Moving Average (Kaufman adaptiver gleitender Durchschnitt):
Generieren Sie gleitende Durchschnitte basierend auf den KAMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

slmama

SLPMAMA

Steigungshandelsstrategie – MAMA Moving Average (MESA Adaptive Moving Average):
Generieren Sie gleitende Durchschnitte basierend auf den MAMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

slt3

SLPT3

Steigungshandelsstrategie – gleitender T3-Durchschnitt (gleitender Durchschnitt mit dreifacher exponentieller Glättung):
Generieren Sie gleitende Durchschnitte basierend auf den T3-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

sltema

SLPTEMA

Steigungshandelsstrategie – gleitender TEMA-Durchschnitt (dreifach exponentiell glättender gleitender Durchschnitt):
Generieren Sie gleitende Durchschnitte basierend auf den TEMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

sltrima

SLPTRIMA

Steigungshandelsstrategie – TRIMA Moving Average (dreifach exponentiell glättender gleitender Durchschnitt):
Generieren Sie gleitende Durchschnitte basierend auf den TRIMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

slwma

SLPWMA

Steigungshandelsstrategie – WMA Moving Average (gewichteter gleitender Durchschnitt):
Generieren Sie gleitende Durchschnitte basierend auf den WMA-Berechnungsregeln und legen Sie das Positionsverhältnisziel entsprechend der Steigung des gleitenden Durchschnitts fest

adx

ADX

Aktienauswahlstrategie für den ADX-Indikator (Average Directional Movement Index):
Bestimmen Sie anhand des ADX-Indikators die Stärke des aktuellen Trends und generieren Sie Handelssignale basierend auf der Trendstärke
1. Wenn ADX größer als 25 ist, wird der Trend als Aufwärtstrend beurteilt und das Positionsverhältnis auf 1
2 gesetzt. Wenn ADX zwischen 20 und 25 liegt, wird dies als neutraler Trend beurteilt und das Positionsverhältnis wird auf 0
3 gesetzt. Wenn ADX weniger als 20 beträgt, wird davon ausgegangen, dass der Trend abwärts geht, und das Positionsverhältnis wird auf -1 gesetzt

apo

APO

Aktienauswahlstrategie für den APO-Indikator (Absolute Price Oscillator):
Bestimmen Sie anhand des APO-Indikators die bullischen und bärischen Trends der aktuellen Aktienkursbewegung und generieren Sie Handelssignale basierend auf dem Trend
1. Wenn der APO größer als 0 ist, wird dies als Aufwärtstrend gewertet und das Positionsverhältnis auf 1
2 gesetzt. Wenn ADX kleiner als 0 ist, wird dies als Bärenmarkttrend beurteilt und das Positionsverhältnis auf -1 gesetzt

aroon

AROON

Strategie zur Aktienauswahl des AROON-Indikators:
Ausgabe von starkem Long/Short und schwachem Long/Short basierend auf der Stärke des AROON-Indikatortrends
1. Wenn UP über DOWN liegt, wird „Weak Long“ ausgegeben
2. Wenn UP unter DOWN liegt, wird ein schwacher Kurzschluss ausgegeben
3. Wenn UP größer als 70 und DOWN kleiner als 30 ist, wird Strong Long ausgegeben
4. Wenn UP weniger als 30 und DOWN mehr als 70 beträgt, wird ein starker Kurzschluss ausgegeben

aroonosc

AROONOSC

Strategie zur Aktienauswahl von AROON Oscillator:
Wenn AROONOSC größer als 0 ist, zeigt dies an, dass der Preistrend nach oben zeigt, und umgekehrt, dass der Trend nach unten zeigt. Wenn der absolute Wert größer als 50 ist, deutet dies auf einen starken Trend hin
1. Wenn AROONOSC größer als 0 ist, wird „Weak Long“ ausgegeben
2. Wenn AROONOSC kleiner als 0 ist, wird ein schwacher Kurzschluss ausgegeben
3. Wenn AROONOSC größer als 50 ist, wird Strong Long ausgegeben
4. Wenn AROONOSC weniger als -50 beträgt, wird ein starker Kurzschluss ausgegeben

cci

CCI

CCI-Aktienauswahlstrategie (Commodity Channel Index):
Der CCI Commodity Channel Index wird verwendet, um zu bestimmen, ob der aktuelle Aktienkurs im überverkauften oder überkauften Bereich liegt. Diese Strategie nutzt diesen Indikator zur Generierung von Anlagepositionszielen
1. Wenn CCI größer als 0 ist, wird „Weak Long“ ausgegeben
2. Wenn CCI kleiner als 0 ist, wird ein schwacher Kurzschluss ausgegeben
3. Wenn CCI größer als 50 ist, wird Strong Long ausgegeben
4. Wenn der CCI weniger als -50 beträgt, wird ein starker Short ausgegeben

cmo

CMO

CMO (Chande Momentum Oscillator) stock selection strategy:
CMO is a momentum indicator that fluctuates between -100 and 100. It is used to determine whether the current stock price is in the oversold or overbought range. Diese Strategie nutzt diesen Indikator zur Generierung von Anlagepositionszielen
1. Wenn CMO größer als 0 ist, wird „Weak Long“ ausgegeben
2. Wenn CMO kleiner als 0 ist, wird ein schwacher Kurzschluss ausgegeben
3. Wenn CMO größer als 50 ist, wird „Strong Long“ ausgegeben
4. Wenn der CMO weniger als -50 beträgt, wird ein starker Short ausgegeben

macdext

MACDEXT

MACDEXT (Extendec MACD) Aktienauswahlstrategie:
Diese Strategie verwendet den MACD-Indikator, um Positionsziele zu generieren, aber im Gegensatz zum Standard-MACD können bei MACDEXT die schnellen, langsamen und Signal-Moving-Average-Typen ausgewählt werden
1. Wenn hist>0 ist, wird long
2 ausgegeben. Wenn hist<0, wird kurz ausgegeben

mfi

MFI

MFI-Aktienauswahlstrategie (Money Flow Index):
Der MFI-Index wird verwendet, um zu bestimmen, ob sich der Aktienkurs in einem überkauften oder überverkauften Zustand befindet. Diese Strategie nutzt den MFI-Indikator, um Handelssignale zu generieren
1. Wenn MFI>20, generieren Sie kontinuierlich 10 % Kaufhandelssignale
2. Wenn MFI > 80, generieren Sie kontinuierlich 30 % Verkaufssignale und verkaufen Sie weiterhin die gehaltenen Aktien

di

DI

DI-Handelsstrategie (Directory Indicator):
Der DI-Indikator umfasst einen negativen Richtungsindikator und einen positiven Richtungsindikator, die die Stärke der Aufwärts- bzw. Abwärtspreistrends darstellen. Diese Strategie verwendet ±DI-Indikatoren, um Handelssignale zu generieren
1. Wenn +DI > -DI, ​​setzen Sie das Positionsziel auf 1
2. Wenn +DI < -DI, ​​setzen Sie das Positionsziel auf -1

dm

DM

DM-Handelsstrategie (Directional Movement):
Der DM-Indikator umfasst einen negativen Richtungsbewegungsindikator und einen positiven Richtungsbewegungsindikator, die die Aufwärts- bzw. Abwärtstrends des Preises darstellen. Diese Strategie verwendet ±DM-Indikatoren, um Handelssignale zu generieren
1. Wenn +DM > -DM, setzen Sie das Positionsziel auf 1
2. Wenn +DM < -DM, setzen Sie das Positionsziel auf -1
3. In anderen Fällen setzen Sie das Positionsziel auf 0

mom

MOM

MOM-Handelsstrategie (Momentum-Indikator):
Der MOM-Indikator kann verwendet werden, um die Stärke von Aufwärts- oder Abwärtstrends zu identifizieren. Wenn der aktuelle Preis höher ist als der Preis vor N Tagen, ist MOM positiv; andernfalls ist es negativ.
1. Wenn MOM > 0, setzen Sie das Positionsziel auf 1
2. Wenn MOM < 0 ist, setzen Sie das Positionsziel auf -1
3. In anderen Fällen setzen Sie das Positionsziel auf 0

ppo

PPO

PO-Handelsstrategie (Percentage Price Oscillator):
Der PPO-Indikator stellt die prozentuale Differenz zwischen schnellen und langsamen gleitenden Durchschnitten dar und wird zur Bestimmung des Preisänderungstrends verwendet. Der Berechnungszeitraum und die Art des gleitenden Durchschnitts der langen und kurzen gleitenden Durchschnitte sind beides Strategieparameter.
1. Wenn PPO > 0, setzen Sie das Positionsziel auf 1
2. Wenn PPO < 0 ist, setzen Sie das Positionsziel auf -1
3. In anderen Fällen setzen Sie das Positionsziel auf 0

rsi

RSI

Handelsstrategie RSI (Relative Strength Index):
Der RSI-Indikator misst das Ausmaß der jüngsten Preisänderungen, um festzustellen, ob sich die aktuelle Aktie in einem überverkauften oder überkauften Zustand befindet
1. Wenn RSI > ulim, setzen Sie das Positionsziel auf 1
2. Wenn RSI < llim ist, setzen Sie das Positionsziel auf -1
3. In anderen Fällen setzen Sie das Positionsziel auf 0

stoch

STOCH

Handelsstrategie STOCH (Stochastic Indicator):
Der STOCH-Indikator misst die Dynamik von Preisänderungen, und die Größe der Dynamik bestimmt den Preistrend und erzeugt proportionale Kauf- und Verkaufshandelssignale.
1. Wenn k > 80, wird ein allmähliches Verkaufssignal generiert, das in jedem Zyklus 30 % der gehaltenen Aktien verkauft
2. Wenn k < 20, wird ein allmähliches Kaufsignal generiert, das in jedem Zyklus 10 % des Gesamtinvestitionsbetrags kauft

stochf

STOCHF

Handelsstrategie STOCHF (Stochastic Fast Indicator):
Der STOCHF-Indikator misst die Dynamik von Preisänderungen. Ähnlich wie die STOCH-Strategie nutzt sie den schnellen stochastischen Indikator, um den Preistrend zu bestimmen und proportionale Kauf- und Verkaufshandelssignale zu generieren.
1. Wenn k > 80, wird ein allmähliches Verkaufssignal generiert, das in jedem Zyklus 30 % der gehaltenen Aktien verkauft
2. Wenn k < 20, wird ein allmähliches Kaufsignal generiert, das in jedem Zyklus 10 % des Gesamtinvestitionsbetrags kauft

stochrsi

STOCHRSI

Handelsstrategie STOCHRSI (Stochastic Relative Strength Index):
Der STOCHRSI-Indikator misst die Dynamik von Preisänderungen. Dieser Indikator schwankt zwischen 0 und 1, zeigt die relative Stärke des Preistrends an und generiert proportionale Kauf- und Verkaufshandelssignale
1. Wenn k > 0,8, wird ein allmähliches Verkaufssignal generiert, das in jedem Zyklus 30 % der gehaltenen Aktien verkauft
2. Wenn k < 0,2, wird ein allmähliches Kaufsignal generiert, das in jedem Zyklus 10 % des Gesamtinvestitionsbetrags kauft

ultosc

ULTOSC

Handelsstrategie ULTOSC (Ultimate Oscillator Indicator):
Der ULTOSC-Indikator berechnet die Preisdynamik über drei verschiedene Zeitspannen und generiert Handelssignale basierend auf den Abweichungswerten zwischen verschiedenen Impulsen.
1. Wenn ULTOSC > u, wird ein allmähliches Verkaufssignal generiert, das in jedem Zyklus 30 % der gehaltenen Aktien verkauft
2. Wenn ULTOSC < l, wird ein allmähliches Kaufsignal generiert, das in jedem Zyklus 10 % des Gesamtinvestitionsbetrags kauft

willr

WILLR

WILLR (William’s %R) Handelsstrategie:
Der WILLR-Indikator wird verwendet, um zu berechnen, ob der Aktienkurs derzeit im überkauften oder überverkauften Bereich liegt, und wird zur Generierung von Handelssignalen verwendet
1. Wenn WILLR > -l, wird ein allmähliches Verkaufssignal generiert, das in jedem Zyklus 30 % der gehaltenen Aktien verkauft
2. Wenn WILLR < -u, wird ein allmähliches Kaufsignal generiert, das in jedem Zyklus 10 % des Gesamtinvestitionsbetrags kauft

signal_none

SignalNone

Leere Handelssignalstrategie: Eine Strategie, die keine Handelssignale generiert

sellrate

SellRate

Rate-of-Change-Verkaufssignalstrategie: Wenn die Änderungsrate des Preises den Schwellenwert überschreitet, wird ein Verkaufssignal generiert
1. Wenn die Veränderung > 0 ist und der tägliche Anstieg größer als die Veränderung ist, wird ein Verkaufssignal von -1 generiert
2. Wenn die Veränderung < 0 ist und der tägliche Rückgang größer als die Veränderung ist, wird ein Verkaufssignal von -1 generiert

buyrate

BuyRate

Rate-of-Change-Kaufsignalstrategie: Wenn die Änderungsrate des Preises den Schwellenwert überschreitet, wird ein Kaufsignal generiert
1. Wenn die Veränderung > 0 ist und der tägliche Anstieg größer als die Veränderung ist, wird ein 1-Kaufsignal generiert
2. Wenn die Veränderung < 0 ist und der tägliche Rückgang größer als die Veränderung ist, wird ein Kaufsignal von 1 generiert

long

TimingLong

Einfache Timing-Strategie, feste Long-Position im gesamten historischen Zeitraum

short

TimingShort

Einfache Timing-Strategie, feste Short-Position im gesamten historischen Zeitraum

zero

TimingZero

Einfache Timing-Strategie, feste Leerposition im gesamten historischen Zeitraum

all

SelectingAll

Wählen Sie alle Aktien im historischen Aktienpool aus und die Investitionsquote wird gleichmäßig verteilt

select_none

SelectingNone

Wählen Sie keine der Aktien im historischen Aktienpool aus und die Anlageposition ist 0

random

SelectingRandom

Wählen Sie in jedem historischen Segment eine zufällige Anzahl von Aktien gemäß dem angegebenen Anteil aus (wenn p < 1) oder wählen Sie zufällig eine bestimmte Anzahl von Aktien (wenn p> = 1) aus, um sie in das Anlageportfolio aufzunehmen, und die Investitionsquote wird gleichmäßig verteilt

finance

SelectingAvgIndicator

Wählen Sie Aktien basierend auf dem Durchschnittswert der Finanzindikatoren über einen bestimmten Zeitraum aus. Grundlegende Aktienauswahlstrategie: Verwenden Sie den Durchschnittswert historischer Aktienindikatoren als Faktoren für die Aktienauswahl. Der Faktorsortierungsparameter kann als Strategieparameter übergeben werden, um den Datentyp der Strategie zu ändern. Wählen Sie Aktien basierend auf verschiedenen historischen Daten aus. Die Aktienauswahlparameter können über pars übergeben werden.

ndaylast

SelectingNDayLast

Wählen Sie Aktien basierend auf dem Preis oder Datenindikator der Aktie vor N Tagen als Aktienauswahlfaktor aus

ndayavg

SelectingNDayAvg

Wählen Sie Aktien basierend auf dem Durchschnittswert des Preis- oder Datenindikators der Aktie in den letzten N Tagen als Aktienauswahlfaktor aus

ndayrate

SelectingNDayRateChange

Wählen Sie Aktien basierend auf der prozentualen Änderung des Preises oder Datenindikators der Aktie in den letzten N Tagen als Aktienauswahlfaktor aus

ndaychg

SelectingNDayChange

Wählen Sie Aktien basierend auf dem Änderungswert des Preises oder Datenindikators der Aktie in den letzten N Tagen als Aktienauswahlfaktor aus

ndayvol

SelectingNDayVolatility

Wählen Sie Aktien basierend auf der Aktienkursvolatilität der letzten N Tage als Aktienauswahlfaktor aus

Wenn Sie eine detaillierte Erklärung jeder integrierten Handelsstrategie benötigen, beispielsweise die Bedeutung der Strategieparameter und Signalgenerierungsregeln, können Sie die Dokumentzeichenfolge jeder Handelsstrategie überprüfen:

Zum Beispiel:

qt.built_ins('Crossline')

Sie können sehen

Init signature: qt.built_in.TimingCrossline(pars:tuple=(35, 120, 0.02))
Docstring:     
crossline择时策略类,利用长短均线的交叉确定多空状态

策略参数:
    s: int, 短均线计算日期;
    l: int, 长均线计算日期;
    m: float, 均线边界宽度(百分比);
信号类型:
    PT型:目标仓位百分比
信号规则:
    1,当短均线位于长均线上方,且距离大于l*m%时,设置仓位目标为1
    2,当短均线位于长均线下方,且距离大于l*mM时,设置仓位目标为-1
    3,当长短均线之间的距离不大于l*m%时,设置仓位目标为0

策略属性缺省值:
默认参数:(35, 120, 0.02)
数据类型:close 收盘价,单数据输入
采样频率:天
窗口长度:270
参数范围:[(10, 250), (10, 250), (0, 1)]
策略不支持参考数据,不支持交易数据
File:           ~/Library/CloudStorage/OneDrive-Personal/Projects/PycharmProjects/qteasy/qteasy/built_in.py
Type:           type
Subclasses:     

Detaillierte Informationen zu integrierten Handelsstrategien können auch in interaktiven Python-Umgebungen wie ipython mit „?“ angezeigt werden, zum Beispiel:

>>> qt.built_in.SelectingNDayRateChange?

Sie können sehen:

Init signature: qt.built_in.SelectingNDayRateChange(pars=(14,))
Docstring:     
基础选股策略:根据股票以前n天的股价变动比例作为选股因子

策略参数:
    n: int, 股票历史数据的选择期
信号类型:
    PT型:百分比持仓比例信号
信号规则:
    在每个选股周期使用以前n天的股价变动比例作为选股因子进行选股
    通过以下策略属性控制选股方法:
    *max_sel_count:     float,  选股限额,表示最多选出的股票的数量,默认值:0.5,表示选中50%的股票
    *condition:         str ,   确定股票的筛选条件,默认值'any'
                                'any'        :默认值,选择所有可用股票
                                'greater'    :筛选出因子大于ubound的股票
                                'less'       :筛选出因子小于lbound的股票
                                'between'    :筛选出因子介于lbound与ubound之间的股票
                                'not_between':筛选出因子不在lbound与ubound之间的股票
    *lbound:            float,  执行条件筛选时的指标下界, 默认值np.-inf
    *ubound:            float,  执行条件筛选时的指标上界, 默认值np.inf
    *sort_ascending:    bool,   排序方法,默认值: False,
                                True: 优先选择因子最小的股票,
                                False, 优先选择因子最大的股票
    *weighting:         str ,   确定如何分配选中股票的权重
                                默认值: 'even'
                                'even'       :所有被选中的股票都获得同样的权重
                                'linear'     :权重根据因子排序线性分配
                                'distance'   :股票的权重与他们的指标与最低之间的差值(距离)成比例
                                'proportion' :权重与股票的因子分值成正比

策略属性缺省值:
默认参数:(14,)
数据类型:close 收盘价,单数据输入
采样频率:月
窗口长度:150
参数范围:[(2, 150)]
策略不支持参考数据,不支持交易数据
File:           ~/Library/CloudStorage/OneDrive-Personal/Projects/PycharmProjects/qteasy/qteasy/built_in.py
Type:           type
Subclasses:    

Mehrere Strategien und Strategiekombinationen

In qteasy kann ein Operator-Händlerobjekt mehrere Handelsstrategien gleichzeitig ausführen. Diese Handelsstrategien extrahieren ihre jeweiligen historischen Daten während des Betriebs unabhängig voneinander und erzeugen so unterschiedliche Handelssignale. Diese Handelssignale werden zur einheitlichen Ausführung zu einer Reihe von Handelssignalen zusammengefasst.

Mit dieser Funktion können Benutzer mehrere Handelsstrategien mit unterschiedlichen Schwerpunkten in einem Händlerobjekt ausführen. Beispielsweise überwacht eine Handelsstrategie den Aktienkurs und generiert Auswahlsignale auf der Grundlage des Aktienkurses, während die zweite Handelsstrategie dafür verantwortlich ist, den Gesamtmarkttrend zu überwachen und darauf basierend die Gesamtposition zu bestimmen. Die dritte Handelsstrategie ist für Gewinnmitnahmen und Stop-Loss verantwortlich und führt Stop-Loss zu bestimmten Zeiten aus. Das endgültige Handelssignal basiert hauptsächlich auf der ersten Handelsstrategie, wird jedoch durch die zweite Strategie eingeschränkt und kann bei Bedarf vollständig durch die dritte Strategie gesteuert werden.

Oder Benutzer können ganz einfach eine „Komitee“-Strategie formulieren, bei der mehrere Strategien unabhängig voneinander Handelsentscheidungen in einer umfassenden Strategie treffen. Das endgültige Handelssignal wird vom „Komitee“, das sich aus allen Unterstrategien zusammensetzt, durch Abstimmung festgelegt, die mit einfacher Mehrheit, absoluter Mehrheit, gewichteten Abstimmungsergebnissen usw. erfolgen kann.

Bei der oben genannten Strategiekombination ist jede einzelne Handelsstrategie einfach und leicht zu definieren, während ihre Kombination eine größere Rolle spielen kann. Gleichzeitig ist jede Teilstrategie unabhängig und ermöglicht die freie Kombination zu komplexen, umfassenden Handelsstrategien. Dadurch kann vermieden werden, dass immer wieder Strategien entwickelt werden müssen; Stattdessen kann durch einfaches Umordnen und Neudefinieren der Kombination von Unterstrategien schnell eine Reihe komplexer, umfassender Handelsstrategien entstehen. Es wird davon ausgegangen, dass dies die Effizienz beim Aufbau von Handelsstrategien erheblich verbessert und den Zyklus verkürzt. Zeit ist Geld.

In einem Operator-Objekt können die von verschiedenen Strategien generierten Handelssignale jedoch zu unterschiedlichen Handelspreisen funktionieren. Beispielsweise generieren einige Strategien Handelssignale für den Eröffnungskurs, während andere Handelsstrategien für den Schlusskurs generieren. Daher sollten unterschiedliche Handelspreissignale nicht gemischt werden. Aber abgesehen davon sollten alle Signale gemischt werden, solange die Handelspreise gleich sind.

Beim Mischen von Handelssignalen handelt es sich um verschiedene Operationen oder Funktionen an Handelssignalen, die von einfachen logischen Operationen und Addition/Subtraktion bis hin zu komplexen benutzerdefinierten Funktionen reichen. Solange die Funktion auf ein Ndarray angewendet werden kann, kann sie theoretisch zum Mischen von Handelssignalen verwendet werden, sofern das endgültige Ausgabehandelssignal aussagekräftig ist.

Definieren der Strategiekombinationsmethode blender

Die Kombinationsstrategie von „qteasy“ wird von „blender“ implementiert. Wenn in einem „Operator“ die Anzahl der Strategien 1 überschreitet, muss ein „Blender“ definiert werden. Wenn kein „Blender“ explizit definiert ist und die Anzahl der Strategien 1 überschreitet, erstellt „qteasy“ beim Ausführen von „Operator“ einen Standard-„Blender“. Um jedoch den korrekten Betrieb mehrerer Strategien sicherzustellen, müssen Benutzer den „Mixer“ selbst definieren.

„Blender-Ausdruck“ ist ein benutzerdefinierter Kombinationsausdruck, der die Kombinationsmethode verschiedener Handelsstrategien bestimmt. Dieser Kombinationsausdruck verwendet arithmetische Operatoren, logische Operatoren, Funktionen und andere Symbole, um anzugeben, wie Strategiesignale kombiniert werden. Der „blender“-Ausdruck kann die folgenden Elemente enthalten:

Der Ausdruck blender unterstützt die folgenden Funktionen:

Element

Beispiele

Beschreibung

Strategienummer

s1

Eine Zeichenfolge, die mit „s“ beginnt und mit einer Zahl endet, wobei die Zahl der Index der Strategie im „Operator“ ist und das von dieser Strategie generierte Handelssignal darstellt

Zahlen

-1.35

Jede gültige Zahl, eine Zahl, die an Ausdrucksoperationen beteiligt ist

Betreiber

+

Arithmetische Operatoren wie '+-*/^'

Logische Operatoren

and

Unterstützt „&“

Funktionen

sum()

Die unterstützten Funktionen sind in der folgenden Tabelle aufgeführt

Perenthesen

()

Kombinierte Operationen

blender示例

Wenn es drei Handelsstrategien in einem „Operator“-Objekt (mit den Indizes 0/1/2) gibt, sind die folgenden Möglichkeiten zur Definition von „blender“ alle gültig und können verwendet werden. Verwenden Sie gleichzeitig „Operator.set_blender()“, um „blender“ festzulegen:

Blender-Ausdruck mithilfe arithmetischer Operatoren definieren

's0 + s1 + s2'

Die durch die drei Handelsstrategien erzeugten Handelssignale werden addiert, um das endgültige Handelssignal zu bilden. Wenn das Ergebnis von Strategie 0 ein Kauf von 10 % ist, das Ergebnis von Strategie 1 ein Kauf von 10 % und das Ergebnis von Strategie 2 ein Kauf von 30 %, dann ist das Endergebnis ein Kauf von 50 %.

Blender-Ausdruck mithilfe logischer Operatoren definieren:

's0 and s1 and s2'

Zeigt an, dass ein Handelssignal nur dann gebildet wird, wenn die Handelsstrategien 1, 2 und 3 alle Handelssignale haben. Wenn beispielsweise das Ergebnis von Strategie 1 ein Kauf ist, das Ergebnis von Strategie 2 ein Kauf ist und Strategie 3 kein Handelssignal hat, dann ist das Endergebnis kein Handelssignal.

Funktionen und Klammern können auch in den Blender-Ausdruck eingefügt werden:

'max(s0, s1) + s2'

Der Maximalwert der Ergebnisse der Strategien 1 und 2 wird zum Ergebnis der Strategie 3 addiert, um das endgültige Handelssignal zu bilden. Wenn das Ergebnis von Strategie 1 ein Kauf von 10 % ist, das Ergebnis von Strategie 2 ein Kauf von 20 % und das Ergebnis von Strategie 3 ein Kauf von 30 %, dann ist das Endergebnis ein Kauf von 50 %.

Dieselbe Strategie kann im Blender-Ausdruck mehr als einmal vorkommen, und es können auch reine Zahlen vorkommen:

'(0.5 * s0 + 1.0 * s1 + 1.5 * s2) / 3 * min(s0, s1, s2)'

Der obige Mixer-Ausdruck bedeutet: Berechnen Sie zunächst den gewichteten Durchschnitt der drei Strategiesignale (mit den Gewichtungen 0,5, 1,0 und 1,5) und multiplizieren Sie ihn dann mit dem Mindestwert der drei Signale.

Funktionsparameter im Blender-Ausdruck werden im Funktionsnamen definiert:

'clip_-0.5_0.5(s0 + s1 + s2) + pos_2_0.2(s0, s1, s2)'

Der obige Blender-Ausdruck definiert zwei verschiedene Funktionsoperationen, und die Ergebnisse werden addiert, um das Endergebnis zu erhalten. Die erste Funktion ist eine Bereichsbeschneidungsfunktion, die die drei Sätze von Strategiesignalen addiert und die Signalwerte kleiner als -0,5 und größer als 0,5 schneidet, um das Berechnungsergebnis zu erhalten. Die zweite Funktion ist eine Positionsbeurteilungsfunktion, die die Zeiträume zählt, in denen die drei Signalsätze Positionen größer als 0,2 haben, und sie als „lang“ definiert. Anschließend wird die Anzahl der Strategien gezählt, die in jedem Zeitraum Long-Positionen vorschlagen. Wenn mehr als zwei Strategien Long-Positionen vorschlagen, wird eine vollständige Long-Position ausgegeben; andernfalls wird eine leere Position ausgegeben.

Der Ausdruck blender unterstützt die folgenden Funktionen:

Funktionen

Ausdrücke

Beschreibung

abs

abs(*signals)

Absolutwertfunktion
Berechnen Sie den Absolutwert aller Handelssignale
Die Anzahl der Eingangssignale ist unbegrenzt

avg

avg(*signals)

Durchschnittswertfunktion
Berechnen Sie den Durchschnittswert aller Handelssignale
Die Anzahl der Eingangssignale ist unbegrenzt

avgpos

avgpos_N_T(*signals)

Durchschnittliche kumulative Funktion
Wenn das Handelssignal ein Positionszielsignal ist, zählen Sie die Anzahl der gleichzeitig erzeugten nicht leeren Positionssignale (Absolutwert des Ausgangssignals > T). Wenn die Anzahl der kurzen/langen Signale größer als N ist, wird der Durchschnitt aller kurzen/langen Signale ausgegeben. andernfalls Ausgang 0.
Die Anzahl der Eingangssignale ist unbegrenzt

ceil

ceil(signal)

Deckenfunktion
Handelssignal aufgerundet
Es kann nur ein Handelssignal eingegeben werden

clip

clip_U_L(signal)

Clipping-Funktion
Clipping der Signalwerte, die den Bereich überschreiten, und die oberen und unteren Clipping-Bereiche werden im Funktionsnamen definiert
Es kann nur ein Handelssignal eingegeben werden

combo

combo(*signals)

Combo-Funktion
Geben Sie die Summe aller Handelssignale aus
Die Anzahl der Eingangssignale ist unbegrenzt

committee

cmt_N_T(*signals)

Ausschussfunktion (entspricht der kumulativen Positionsfunktion)
Wenn das Handelssignal ein Positionszielsignal ist, zählen Sie die Anzahl der gleichzeitig erzeugten nicht leeren Positionssignale (Absolutwert des Ausgangssignals > T). Wenn die Anzahl der langen/kurzen Signale größer als N ist, wird -1/1 ausgegeben; andernfalls Ausgang 0.
Die Anzahl der Eingangssignale ist unbegrenzt

exp

exp(signal)

Exponentenfunktion
Berechnen Sie die Potenz von e zum Signal
Es kann nur ein Handelssignal eingegeben werden

floor

floor(signal)

Floor-Funktion
Handelssignal abgerundet
Es kann nur ein Handelssignal eingegeben werden

log

log(signal)

Logarithmusfunktion
Berechnen Sie den Logarithmuswert mit der Basis e
Es kann nur ein Handelssignal eingegeben werden

log10

log10(signal)

Logarithmus-Basis-10-Funktion
Berechnen Sie den Logarithmuswert mit Basis 10
Es kann nur ein Handelssignal eingegeben werden

max

max(*signals)

Maximalwertfunktion
Berechnen Sie den Maximalwert aller Handelssignale
Die Anzahl der Eingangssignale ist unbegrenzt

min

min(*signals)

Minimalwertfunktion
Berechnen Sie den Minimalwert aller Handelssignale
Die Anzahl der Eingangssignale ist unbegrenzt

pos

pos_N_T(*signals)

Kumulative Positionsfunktion
Wenn das Handelssignal ein Positionszielsignal ist, zählen Sie die Anzahl der gleichzeitig erzeugten nicht leeren Positionssignale (Absolutwert des Ausgangssignals > T). Wenn die Anzahl der langen/kurzen Signale größer als N ist, wird -1/1 ausgegeben; andernfalls Ausgang 0.
Die Anzahl der Eingangssignale ist unbegrenzt

position

position_N_T(*signals)

Kumulative Positionsfunktion
Wenn das Handelssignal ein Positionszielsignal ist, zählen Sie die Anzahl der gleichzeitig erzeugten nicht leeren Positionssignale (Absolutwert des Ausgangssignals > T). Wenn die Anzahl der langen/kurzen Signale größer als N ist, wird -1/1 ausgegeben; andernfalls Ausgang 0.
Die Anzahl der Eingangssignale ist unbegrenzt

pow

pow(*signals)

Potenzfunktion
Berechnen Sie das erste Handelssignal hoch mit dem zweiten Handelssignal, d. h. sig0^sig1
Die Anzahl der Eingangssignale kann nur zwei betragen

power

power(*signals)

Potenzfunktion
Berechnen Sie das erste Handelssignal hoch mit dem zweiten Handelssignal, d. h. sig0^sig1
Die Anzahl der Eingangssignale kann nur zwei betragen

sqrt

sqrt(signal)

Quadratwurzelfunktion
Quadratwurzel des Handelssignals
Es kann nur ein Handelssignal eingegeben werden

str

str_T(*signals)

Kumulative Stärkefunktion
Alle Handelssignale summieren, 1 ausgeben, wenn die Signalstärke T überschreitet, andernfalls 0 ausgeben
Die Anzahl der Eingangssignale ist unbegrenzt

strength

strength_T(*signals)

Kumulative Stärkefunktion
Alle Handelssignale summieren, 1 ausgeben, wenn die Signalstärke T überschreitet, andernfalls 0 ausgeben
Die Anzahl der Eingangssignale ist unbegrenzt

sum

sum(*signals)

Combo-Funktion
Geben Sie die Summe aller Handelssignale aus
Die Anzahl der Eingangssignale ist unbegrenzt

unify

unify(signal)

Vereinheitlichungsfunktion
Normalisieren Sie Handelssignale und skalieren Sie die Handelssignale in derselben Zeile proportional, sodass die Summe jeder Zeile 1 ist.
Es kann nur ein Handelssignal eingegeben werden

vote

vote_N_T(*signals)

Abstimmungsfunktion (entspricht der kumulativen Positionsfunktion)
Wenn das Handelssignal ein Positionszielsignal ist, zählen Sie die Anzahl der gleichzeitig erzeugten nicht leeren Positionssignale (Absolutwert des Ausgangssignals > T). Wenn die Anzahl der langen/kurzen Signale größer als N ist, wird -1/1 ausgegeben; andernfalls Ausgang 0.
Die Anzahl der Eingangssignale ist unbegrenzt

Mixer kann mit den folgenden Methoden eingestellt oder abgerufen werden

operator.set_blender(blender=None, price_type=None)

Übergeben Sie direkt einen Ausdruck, um den Mixer festzulegen, der automatisch analysiert und zum Kombinieren von Handelsstrategien verwendet wird.

operator.view_blender()

查看blender

Beispiele für die Verwendung von Mixern

Hier ist ein Beispiel, um die Funktionsweise des Mixers zu demonstrieren:

# 创建一个交易员对象,同时运行五个相同的dma交易策略,这些交易策略运行方式相同,但是设置不同的参数后,会产生不同的交易信号。我们通过不同的策略组合方式,得到不同的回测结果
op = qt.Operator('dma, dma, dma, dma, dma')
# 分别给五个不同的交易策略设置不同的策略参数,使他们产生不同的交易信号
op.set_parameter(stg_id=0, pars=(132, 200, 24))
op.set_parameter(stg_id=1, pars=(124, 187, 51))
op.set_parameter(stg_id=2, pars=(103, 81, 16))
op.set_parameter(stg_id=3, pars=(48, 111, 148))
op.set_parameter(stg_id=4, pars=(104, 127, 58))

# 第一种组合方式:加权平均方式:分别给每一个不同的策略设置不同的权重:
# s0: 权重0.8
# s0: 权重1.2
# s0: 权重2.0
# s0: 权重0.5
# s0: 权重1.5
# 将五个交易策略生成的交易信号加权平均后得到最终的交易信号
op.set_blender('(0.8*s0+1.2*s1+2*s2+0.5*s3+1.5*s4)/5')

# 运行策略
res = qt.run(op, mode=1)
# 得到结果如下:年化收益12.19,夏普率1.053
     ====================================
     |                                  |
     |       BACK TESTING RESULT        |
     |                                  |
     ====================================

qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 130.5ms
time consumption for operation back looping:  523.8ms

investment starts on      2016-04-05 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     4.8 years.

-------------operation summary:------------

          Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH   478      421    899   89.7%      0.0%     10.3%   

Total operation fee:     ¥    2,615.40
total investment amount: ¥  100,000.00
final value:              ¥  174,263.46
Total return:                    74.26% 
Avg Yearly return:               12.19%
Skewness:                         -0.31
Kurtosis:                         10.31
Benchmark return:                65.96% 
Benchmark Yearly return:         11.06%

------strategy loop_results indicators------ 
alpha:                            0.007
Beta:                             1.408
Sharp ratio:                      1.053
Info ratio:                       0.000
250 day volatility:               0.111
Max drawdown:                    12.26% 
    peak / valley:        2019-04-19 / 2020-02-03
    recovered on:         2020-07-06
===========END OF REPORT=============

png

# 第二种组合方式:将五个交易策略看成一个“委员会”,最终的持仓仓位由委员会投票决定:
# 当同一时间累计五个策略中至少三个输出多头满仓使,输出多头满仓,否则空仓
op.set_blender('pos_3_0(s0, s1, s2, s3, s4)')
# 运行策略
res = qt.run(op, mode=1)
# 得到结果如下:年化收益13.39,夏普率1.075
     ====================================
     |                                  |
     |       BACK TESTING RESULT        |
     |                                  |
     ====================================

qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 540.1ms
time consumption for operation back looping:  435.8ms

investment starts on      2016-04-05 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     4.8 years.

-------------operation summary:------------

          Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH    11       10     21   55.4%      0.0%     44.6%   

Total operation fee:     ¥      585.88
total investment amount: ¥  100,000.00
final value:              ¥  183,485.41
Total return:                    83.49% 
Avg Yearly return:               13.39%
Skewness:                         -0.43
Kurtosis:                         14.75
Benchmark return:                65.96% 
Benchmark Yearly return:         11.06%

------strategy loop_results indicators------ 
alpha:                            0.046
Beta:                             1.003
Sharp ratio:                      1.075
Info ratio:                       0.006
250 day volatility:               0.124
Max drawdown:                    15.71% 
    peak / valley:        2019-04-19 / 2020-02-03
    recovered on:         2020-07-31
===========END OF REPORT=============

png

# 第三种组合方式:同样是委员会策略,但输出满仓多头的投票门槛变为2票,即只要有两个策略认为输出多头即可
op.set_blender('pos_2_0(s0, s1, s2, s3, s4)')
# 运行策略
res = qt.run(op, mode=1)
# 得到结果如下:年化收益12.88,夏普率0.824
     ====================================
     |                                  |
     |       BACK TESTING RESULT        |
     |                                  |
     ====================================

qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 133.8ms
time consumption for operation back looping:  500.0ms

investment starts on      2016-04-05 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     4.8 years.

-------------operation summary:------------

          Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH    15       14     29   71.4%      0.0%     28.6%   

Total operation fee:     ¥      707.30
total investment amount: ¥  100,000.00
final value:              ¥  179,532.76
Total return:                    79.53% 
Avg Yearly return:               12.88%
Skewness:                         -0.45
Kurtosis:                         10.45
Benchmark return:                65.96% 
Benchmark Yearly return:         11.06%

------strategy loop_results indicators------ 
alpha:                            0.029
Beta:                             1.000
Sharp ratio:                      0.824
Info ratio:                       0.007
250 day volatility:               0.144
Max drawdown:                    15.94% 
    peak / valley:        2018-01-24 / 2019-01-03
    recovered on:         2019-02-25
===========END OF REPORT=============

png