4
ফোকাস
1271
অনুসারী

পরিমাণগত ট্রেডিং কৌশল - KDJ সূচক

তৈরি: 2017-01-16 15:00:09, আপডেট করা হয়েছে: 2019-08-01 09:22:39
comments   0
hits   3915

পরিমাণগত ট্রেডিং কৌশল - KDJ সূচক

ফরওয়ার্ড এবং স্টক মার্কেটে সর্বাধিক ব্যবহৃত প্রযুক্তিগত বিশ্লেষণ সরঞ্জাম হ’ল কেডিজে সূচক, ডঃ জর্জ লেনের দ্বারা নির্মিত স্টোক্যাস্টিকস। গতিশীলতা ধারণা এবং শক্তিশালী এবং দুর্বল সূচকের কয়েকটি সুবিধাগুলিকে একত্রিত করে কেডিজে সূচকটি একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ, সর্বনিম্ন, দাম এবং বন্ধের দামের মধ্যে তিনটি সম্পর্কিত সম্পর্ককে মৌলিক ডেটা হিসাবে গণনা করে, এবং কে, ডি এবং জে মানগুলিকে একটি কার্ভযুক্ত চিত্রের সাথে সংযুক্ত করে, যা দামের ওঠানামা প্রবণতা প্রতিফলিত করে।

  • #### গণনা পদ্ধতিঃ প্রথমে চক্রের আরএসভি মান গণনা করুন, তারপরে কে মান, ডি মান, জে মান গণনা করুন। উদাহরণস্বরূপ, 9 দিনের চক্রের কেডিজেঃ

RSVt=(Ct-L9)/(H9-L9)*100 (Ct = দিনের শেষ মূল্য; L9 = 9 দিনের সর্বনিম্ন মূল্য; H9 = 9 দিনের সর্বোচ্চ মূল্য)

K মান হল RSV মান 3 দিনের স্লাইডিং গড়, সূত্রটি হলঃ Kt = RSVt/3+2*t-13

D কে 3 দিনের স্লাইডিং গড়, সূত্রটি হল: Dt = Kt / 3 + 2*Dt-13

J মান হল তিন গুণ K মান বিয়োগ দুই গুণ D মান, সূত্রটি হলঃ Jt = 3*Dt-2*Kt

KDJ সূচকটি প্রয়োগ করার সময় বিবেচনা করার জন্য কিছু গুরুত্বপূর্ণ বিষয়ঃ

  1. K এবং D এর মান নির্ধারণ, পরিসীমা 0-100। 80 এর উপরে ওভারবয় এবং 20 এর নীচে ওভারসোল।

  2. ক্রয় সংকেতঃ কে মান একটি উত্থান প্রবণতা D মান, যখন K লাইন D লাইন অতিক্রম করে।

৩. সক্রিয়ভাবে লেনদেন করা হয় না, কম সংখ্যক শেয়ার ইস্যু করা হয় না, তবে বড় বাজার এবং জনপ্রিয় বড় বাজারগুলির জন্য উচ্চ নির্ভুলতা রয়েছে।

৪. কেডি উচ্চ বা নিম্ন অবস্থানে থাকলে, যদি শেয়ারের দামের দিক থেকে বিচ্ছিন্নতা দেখা দেয় তবে এটি একটি পদক্ষেপের সংকেত।

৫. J এর মান নির্ধারণ করা হয়েছে যে>100 হল ওভারবয় এবং হল ওভারসেল, যা মূল্যের অস্বাভাবিক অঞ্চলের অন্তর্গত।

  1. স্বল্পমেয়াদী টার্নওভার সতর্কতা সংকেতঃ K এবং D মানের উত্থান বা পতনের গতি হ্রাস পেয়েছে, ঢাল ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে

সাধারণত, K, D এবং J এর ত্রিমাত্রা ২০-৮০ এর মধ্যে থাকে, যা দেখতে ভালো লাগে। সংবেদনশীলতার দিক থেকে, সবচেয়ে শক্তিশালী হল 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

প্রোগ্রাম ট্রেডার থেকে পুনর্নির্দেশিত