独自の定量的取引ソフトウェアを実行する(29)Xiaobai定量的実際の戦闘3クロスサイクル共鳴

独自の量的取引ソフトウェアを実行する(29)Xiaobai Quantitative Practice 3-Inter-cycle Resonance
  第一次世界大戦では、ドイツ兵のグループが橋をきれいに通り抜け、橋が崩壊しました。橋の耐荷重に関しては、ドイツ兵のこのチームの重量をはるかに上回っていますが、兵士が歩数とリズムを均一に調整したため、この均一な力の影響で橋が崩壊しました。共鳴の効果です。
  共鳴は、非常に高い頻度で物理学で使用される用語です。共鳴は音響学では「共鳴」とも呼ばれ、共鳴によって物体が音を出す現象を指します。たとえば、同じ周波数の2つのチューニングフォークが接近している場合、一方が振動して音を出すと、もう一方も音を出します。 。電気では、発振回路の共振現象を「共振」と呼びます。
  共鳴は、物理学で非常に高い周波数で使用されるだけでなく、共鳴現象は、宇宙で最も一般的で頻繁な自然現象の1つであるとも言えます。共鳴のない世界はないとさえ言えます。
  共鳴は宇宙のすべての物質の動きの普遍的な法則です。人間や他の生物も宇宙の物質です。もちろん、共鳴はこれらの存在にも共通しています。呼吸、心拍、血液循環、発話の固有振動数に加えて、思考活動中に人間の脳によって生成される脳波にも共鳴があります。
  自然界の共鳴現象は、株式市場にも共鳴しています。
  過去のトレンドを振り返ると、株価のトレンドは変動することが多いことがわかります。低いポジションから始めると、上向きのブレークスルーが発生し、株価は、高い位置から下向きのブレークスルーが発生すると、野生の馬のようになります。 、株価は破裂する川のようなものです。これは株式市場の共鳴を反映しています。
  共通の需要は勢いを生み出す可能性があり、この勢いが発生すると、上向きと下向きの力は巨大になります。それは人々の感情や操作上の行動を引き起こし、一方的な状況をもたらす可能性があります。それが上がると、人々は元気になり、市場に群がります。それが下がると、誰もがパニックになり、世界の終わりのように株価が急落します。ガンはそれを価格崩壊と呼びました。
  Hepuのインジケーターの多くは非常に使いやすいため、共振の設計インジケーターに完全に依存しています。いくつかの単純な線には、さまざまなインジケーターの本質が含まれています。したがって、10年以上の間、Hepoの公式を解読し、その原理を探求することを好む人々が常にいました。
  最も単純なレゾナンスアプリケーションはクロスサイクルアプリケーションです。Tongdaxinソフトウェアでクロスサイクルインジケーターを作成する例を見てみましょう。
  たとえば、毎日のKDJは毎週のKDJカスタムインジケーターを引用します。インジケーターの内容は次のとおりです。

N:=9;
M1:=3;
M2:=3;
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:=SMA(K,M2,1);
J:3*K-2*D;

{
    
    下面是周KDJ指标的引用。}
ZK:"KDJ.K#WEEK"(N,M1,M2),LINETHICK3;
ZD:"KDJ.D#WEEK"(N,M1,M2),LINETHICK3;
ZJ:="KDJ.J#WEEK"(N,M1,M2);

ここに画像の説明を挿入
インジケーターの表示結果は以下のとおりです。
ここに画像の説明を挿入

Pythonでクロスピリオド計算を実装する方法を見てみましょう。
たとえば、1分ラインは5分ラインまたはインジケーターを指します
。1。最初に5分インジケーター計算を処理しますたとえば、100セットのデータを読み取りますmydf5
5分間のkdjデータを取得するためのインジケーター計算します。k5、d5、j5
2. 500セットのデータ
1分間読み取ります。Mydfはインデックス計算を実行します。3。5
分間のインデックス値k5、d5、j5、およびデータを5回にすると、500セットのデータになり
ます。4。k5、d5、J5を変更してmydfテーブルにマージします
。5。後で必要な計算を処理できます

次のプログラムは、毎週のKDJへの毎日のKDJ参照のPythonシーケンスを提供します。

# -*- coding: utf-8 -*-
# 小白量化跨周期自编指标计算
'''
独狼荷蒲qq:2886002
通通小白python量化群:524949939
tkinter,pyqt,gui,Python交流2:517029284
微信公众号:独狼股票分析
'''
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import HP_global as g  #小白量化全局变量库
from HP_formula import *
import HP_tdx as htdx
import HP_plt as hplt   #小白量化指标绘图模块
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#白底色
g.ubg='w'
g.ufg='b'
g.utg='b'
g.uvg='#1E90FF'

#列表扩展
def Listexpand(List,n):
    Lista=[]
    for x in List:
        for i in range(n):
            Lista.append(x)
    return Lista


global CLOSE,LOW,HIGH,OPEN,VOL

def KDJ(N=9, M1=3, M2=3):
    """
    KDJ 随机指标
    """
    RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100
    K = EMA(RSV, (M1 * 2 - 1))
    D = EMA(K, (M2 * 2 - 1))
    J = K * 3 - D * 2

    return K, D, J

#首先要对数据预处理
#获取数据
htdx.TdxInit(ip='183.60.224.178',port=7709)
code='600436'

#nCategory -> K 线种类 
#0 5 分钟K 线 
#1 15 分钟K 线 
#2 30 分钟K 线 
#3 1 小时K 线 
#4 日K 线 
#5 周K 线 
#6 月K 线 
#7 1 分钟 
#8 1 分钟K 线 
#9 日K 线 
#10 季K 线 
#11 年K 线 

#获取周线数据
df = htdx. get_security_bars(nCategory=5,nMarket = 0,code=code,nStart=0, nCount=100)

#对数据做小白量化各式转换
mydf=df.copy()
CLOSE=mydf['close']
LOW=mydf['low']
HIGH=mydf['high']
OPEN=mydf['open']
VOL=mydf['volume']
C=mydf['close']
L=mydf['low']
H=mydf['high']
O=mydf['open']
V=mydf['volume']

k5,d5,j5=KDJ()   #周线指标计算



#获取日线数据
df = htdx. get_security_bars(nCategory=4,nMarket = 0,code=code,nStart=0, nCount=500)

#对数据做小白量化各式转换
mydf=df.copy()
CLOSE=mydf['close']
LOW=mydf['low']
HIGH=mydf['high']
OPEN=mydf['open']
VOL=mydf['volume']
C=mydf['close']
L=mydf['low']
H=mydf['high']
O=mydf['open']
V=mydf['volume']

k,d,j=KDJ()   #日线指标计算


#把指标值添加到mydf数据表中
mydf['k']=k
mydf['d']=d
mydf['j']=j

#把周线数据放大5,保存到日线数据表中
mydf['k5']=pd.Series(Listexpand(list(k5),5))
mydf['d5']=pd.Series(Listexpand(list(d5),5))
mydf['j5']=pd.Series(Listexpand(list(j5),5))

#输入水平线20,50,80
mydf['z20']=20
mydf['z50']=50
mydf['z80']=80


#数据裁减
m=1
mydf=mydf.tail(150*m).head(150).copy()

#绘制图形
plt.figure(1,figsize=(16,12), dpi=80)

#绘制主图指标
ax1=plt.subplot(211)
hplt.ax_K(ax1,mydf,t=code,n=6)

#绘制副图指标
ax2=plt.subplot(212)
mydf['k'].plot.line(legend=True,linewidth=3)
#mydf['d'].plot.line(legend=True,linewidth=3)
mydf['j'].plot.line(legend=True,linewidth=3)
mydf['k5'].plot.line(legend=True,color='blue')
mydf['d5'].plot.line(legend=True,)
#mydf['j5'].plot.line(legend=True)
mydf['z20'].plot.line(legend=False,color='red')
mydf['z50'].plot.line(legend=False,color='red')
mydf['z80'].plot.line(legend=False,color='red')

plt.show()

プログラム操作の結果は次のとおりです。
ここに画像の説明を挿入
この記事では、さまざまなサイクルインジケータ計算の組み合わせ表示問題を紹介します。もちろん、クロスサイクル計算も実行できます。上の図から、1日のk値が以下であることが明確にわかります。値は40で、毎週のKDJk5値を通過します。これは適切な正中購入ポイントです。購入ポイントインジケーターをどのように説明しますか。

#小白量化仿通达信指标计算
mydf['buy']=IF(k<40,CROSS(k,k5),0)

mydf.buyの値が1の場合、購入ポイントがあることを意味します。それ以外の場合、値は0です。このシグナルをバックテストと自動取引に使用する方法については、後で紹介します。
  この記事の技術知識の紹介は終わりました。

優れた知恵の指標を書くC ++を含む指標の書き方を学びたい場合は、「ディスクを監視するための攻略」という本を参照してください。
  定量的なソフトウェア開発や自動取引について学びたい場合は、「ゼロファンデーションで定量的な投資システムを構築する-Pythonをツールとして使用する」という本を参照してください。
  私の読者は、私のブログが量的開発の技術的困難を明らかに軽減したと言いました。量的トレーダーはキャベツの価格を求めていますか?

引き続き私のブログに注目してください、私の進歩はあなたの進歩です!

おすすめ

転載: blog.csdn.net/hepu8/article/details/112001158