فیوچر اور اسٹاک مارکیٹوں میں سب سے زیادہ استعمال ہونے والے تکنیکی تجزیاتی ٹولز میں سے ایک ، KDJ اشارے ، جس کا مکمل نام اسٹوکاسٹکس ہے ، جس کی تخلیق ڈاکٹر جارج لین نے کی ہے۔ یہ حرکت پذیری کے تصورات ، مضبوط اور کمزور اشارے کے کچھ فوائد کو جوڑتا ہے ، KDJ اشارے کو بنیادی اعداد و شمار کے طور پر حساب لگاتا ہے ، جس میں کسی خاص دورانیے میں ظاہر ہونے والی سب سے زیادہ قیمت ، سب سے کم قیمت ، اور اختتامی قیمت کے درمیان تناسب کا حساب لگایا جاتا ہے ، اور اس کے نتیجے میں K ، D اور J کی قیمتوں کو ایک منحنی خطوط کے طور پر جوڑ دیا جاتا ہے ، جس سے ایک KDJ اشارے بنتا ہے جو قیمتوں میں اتار چڑھاؤ کے رجحان کو ظاہر کرتا ہے۔
RSVt= ((Ct-L9)/(H9-L9) * 100 (Ct= آج کی اختتامی قیمت؛ L9= 9 دن کی کم ترین قیمت؛ H9= 9 دن کی بلند ترین قیمت)
K قدر RSV قدر 3 دن کی ہموار حرکت پذیر اوسط ہے، فارمولا: Kt = RSVt / 3 + 2 * t -1 / 3
D ویلیو کے ساتھ 3 دن کی ہموار حرکت پذیر اوسط ، فارمولا: Dt = Kt / 3 + 2 * Dt -1 / 3
جے ویلیو تین گنا K ویلیو مائنس دو گنا D ویلیو ہے، اور فارمولا ہے: جے ٹی = 3Dt-2Kt
کے ڈی جے اشارے کے استعمال کے دوران چند اہم پہلوؤں پر غور کرنا ضروری ہے:
1.K اور D کی قیمتوں کا تعین ، حد 0-100 ہے ، 80 سے زیادہ مارکیٹوں میں زیادہ خریدنے کا رجحان ظاہر ہوتا ہے ، اور 20 سے کم میں زیادہ فروخت کا رجحان ظاہر ہوتا ہے۔
2.买进信号:K值在上涨趋势中﹤D值,K线向上突破D线时;卖出信号:K值在下跌趋势中﹥D值,K线向下跌破D线。
3.交易不活跃、发行量小的股票并不适用KD指标,而对大盘和热门大盘的准确性却很高。
4.在KD处在高位或低位,如果出现与股价走向的背离,则是采取行动的信号。
5.J کی قیمت >100 زیادہ خریدنے کے لئے، <0 زیادہ فروخت کے لئے، دونوں قیمت کے غیر معمولی علاقے میں ہیں.
6.短期转势预警信号:K值和D值上升或者下跌的速度减弱,倾斜度趋于平缓
عام طور پر K ، D ، J تینوں اقدار 20-80 کے درمیان ہیں ، جو حساسیت کے لحاظ سے مشاہدہ کرنے کے قابل ہیں ، جس میں J قدر سب سے مضبوط ہے ، اس کے بعد K ہے ، سب سے سست D ہے ، اور حفاظت کے لحاظ سے بالکل برعکس ہے۔
import numpy as np
import pandas as pd
from pandas import DataFrame
import talib as ta
start = '2006-01-01' # 回测起始时间
end = '2015-08-17' # 回测结束时间
benchmark = 'HS300' # 策略参考标准
universe = set_universe('HS300')
capital_base = 100000 # 起始资金
refresh_rate = 1 # 调仓频率,即每 refresh_rate 个交易日执行一次 handle_data() 函数
longest_history=20
MA=[5,10,20,30,60,120] #移动均线参数
def initialize(account):
account.kdj=[]
def handle_data(account):
# 每个交易日的买入卖出指令
sell_pool=[]
hist = account.get_history(longest_history)
#data=DataFrame(hist['600006.XSHG'])
stock_pool,all_data=Get_all_indicators(hist)
pool_num=len(stock_pool)
if account.secpos==None:
print 'null'
for i in stock_pool:
buy_num=int(float(account.cash/pool_num)/account.referencePrice[i]/100.0)*100
order(i, buy_num)
else:
for x in account.valid_secpos:
if all_data[x].iloc[-1]['closePrice']<all_data[x].iloc[-1]['ma1'] and (all_data[x].iloc[-1]['ma1']-all_data[x].iloc[-1]['closePrice'])/all_data[x].iloc[-1]['ma1']>0.05 :
sell_pool.append(x)
order_to(x, 0)
if account.cash>500 and pool_num>0:
try:
sim_buy_money=float(account.cash)/pool_num
for l in stock_pool:
#print sim_buy_money,account.referencePrice[l]
buy_num=int(sim_buy_money/account.referencePrice[l]/100.0)*100
#buy_num=10000
order(l, buy_num)
except Exception as e:
#print e
pass
def Get_kd_ma(data):
indicators={}
#计算kd指标
indicators['k'],indicators['d']=ta.STOCH(np.array(data['highPrice']),np.array(data['lowPrice']),np.array(data['closePrice']),\
fastk_period=9,slowk_period=3,slowk_matype=0,slowd_period=3,slowd_matype=0)
indicators['ma1']=pd.rolling_mean(data['closePrice'], MA[0])
indicators['ma2']=pd.rolling_mean(data['closePrice'], MA[1])
indicators['ma3']=pd.rolling_mean(data['closePrice'], MA[2])
indicators['ma4']=pd.rolling_mean(data['closePrice'], MA[3])
indicators['ma5']=pd.rolling_mean(data['closePrice'], MA[4])
indicators['closePrice']=data['closePrice']
indicators=pd.DataFrame(indicators)
return indicators
def Get_all_indicators(hist):
stock_pool=[]
all_data={}
for i in hist:
try:
indicators=Get_kd_ma(hist[i])
all_data[i]=indicators
except Exception as e:
#print 'error:%s'%e
pass
if indicators.iloc[-2]['k']<indicators.iloc[-2]['d'] and indicators.iloc[-1]['k']>indicators.iloc[-2]['d']:
stock_pool.append(i)
elif indicators.iloc[-1]['k']>=10 and indicators.iloc[-1]['d']<=20 and indicators.iloc[-1]['k']>indicators.iloc[-2]['k'] and indicators.iloc[-2]['k']<indicators.iloc[-3]['k']:
stock_pool.append(i)
return stock_pool,all_data
پروگرامنگ ٹریڈرز سے نقل کیا گیا