[TOC]
যেমনটি বলা হয়, এই পৃথিবীটি দীর্ঘ সময় একত্রিত হওয়ার পরে বিচ্ছিন্ন হবে। দীর্ঘ সময় বিভক্ত হওয়ার পরেও বিপরীত কাজ করবে। এবং এই ঘটনাটি ফিউচার মার্কেটেও বিদ্যমান। এমন কোনও বৈচিত্র্য নেই যা কেবল উঠে যায় তবে পড়ে না। তবে কখন উঠবে এবং কখন পড়ে, এটি বিচ্যুতির হারের উপর নির্ভর করে। এই নিবন্ধে, আমরা একটি সহজ ট্রেডিং কৌশল তৈরি করতে বিচ্যুতির হার ব্যবহার করব।
বিচ্যুতি হার (বিআইএএস) হল চলমান গড় থেকে প্রাপ্ত একটি প্রযুক্তিগত সূচক। এটি মূলত একটি শতাংশ আকারে হয় যা চলমান গড় থেকে দামের বিচ্যুতির মাত্রা পরিমাপ করে। যদি চলমান গড়টি কোনও ব্যবসায়ীর গড় ব্যয় হয় তবে বিচ্যুতি হারটি ব্যবসায়ীর গড় রিটার্ন হার।
বিচ্যুতি হারের তাত্ত্বিক ভিত্তি হ'ল ব্যবসায়ীর হৃদয়ের বিশ্লেষণ। যখন দাম বাজারের গড় ব্যয়ের চেয়ে বেশি হয়, এর অর্থ হ'ল লং পজিশন ব্যবসায়ীদের মুনাফা নগদীকরণের ধারণা থাকবে, যার ফলে দাম হ্রাস পাবে। যখন দাম বাজারের গড় ব্যয়ের চেয়ে কম হয়, এর অর্থ হ'ল শর্ট-সেলাররা লাভজনক এবং মুনাফা নগদীকরণের ধারণা দাম বাড়ার কারণ হবে।
যখন মূল্য চলমান গড় থেকে উপরে বিচ্যুত হয়, তখন বিচ্যুতির হার খুব বড়, এবং ভবিষ্যতে দামের পতনের উচ্চ সম্ভাবনা রয়েছে।
যখন মূল্য নিম্নগামী চলমান গড় থেকে বিচ্যুত হয়, তখন বিচ্যুতির হার খুব ছোট এবং ভবিষ্যতে দাম বাড়ার সম্ভাবনা বেশি।
যদিও চলমান গড়টি মূল্য থেকে গণনা করা হয়, তবে বাহ্যিক ফর্মের দিক থেকে, দামটি অবশ্যই চলমান গড়ের কাছাকাছি চলে যাবে, বা দামটি সর্বদা চলমান গড়ের চারপাশে ওঠানামা করবে। যদি দামটি চলমান গড় থেকে খুব দূরে বিচ্যুত হয়, দামটি চলমান গড়ের উপরে বা নীচে কিনা তা নির্বিশেষে, এটি শেষ পর্যন্ত চলমান গড়ের দিকে ঝুঁকতে পারে এবং বিচ্যুতি হার হ'ল শতাংশের মান যা দামটি চলমান গড় থেকে বিচ্যুত হয়।
ডিভিয়েশন রেট = [ (দিনের বন্ধের মূল্য - N দিনের গড় মূল্য) / N দিনের গড় মূল্য] * 100%
এর মধ্যে N হল চলমান গড় পরামিতি, কারণ N এর সময়কাল ভিন্ন, বিচ্যুতি হারের গণনার ফলাফলও ভিন্ন। সাধারণভাবে, N এর মানগুলি হলঃ 6, 12, 24, 36, ইত্যাদি। প্রকৃত ব্যবহারে, এটি বিভিন্ন জাতের অনুযায়ী গতিশীলভাবে সামঞ্জস্য করা যেতে পারে। তবে, পরামিতিগুলির নির্বাচন খুব গুরুত্বপূর্ণ। যদি প্যারামিটারটি খুব ছোট হয় তবে বিচ্যুতির হার খুব সংবেদনশীল হবে, যদি প্যারামিটারটি খুব বড় হয় তবে বিচ্যুতির হার খুব ধীর হবে। বিচ্যুতির হারের গণনার ফলাফল ইতিবাচক এবং নেতিবাচক। ইতিবাচক বিচ্যুতির হার যত বেশি হবে, ষাঁড়ের মুনাফা তত বেশি হবে এবং দাম সংশোধন হওয়ার সম্ভাবনা তত বেশি হবে। যত বড় বড় বিরতি, লাভের হার তত বেশি হবে এবং রিবাউন্ডের সম্ভাবনা তত বেশি হবে।
যেহেতু বিচ্যুতি হার চলমান গড়ের আরেকটি রূপ, তাই আমরা দ্বৈত চলমান গড় কৌশল উপর ভিত্তি করে একটি ডাবল বিচ্যুতি হার কৌশল অভিযোজিত করতে পারেন। স্বল্পমেয়াদী বিচ্যুতি হার এবং দীর্ঘমেয়াদী বিচ্যুতি হার মধ্যে অবস্থানগত সম্পর্ক থেকে বিচার, বর্তমান বাজার অবস্থা বিচার করা হয়। যদি দীর্ঘমেয়াদী বিচ্যুতি হার স্বল্পমেয়াদী বিচ্যুতি হার চেয়ে বড়, এটি আসলে স্বল্পমেয়াদী চলমান গড় উপরের দীর্ঘমেয়াদী চলমান গড় ক্রস প্রতিনিধিত্ব করে, এবং তদ্বিপরীত।
ধাপ ১ঃ কৌশলগত কাঠামো লিখুন
# Strategy main function
def onTick():
pass
# Program entry
def main():
while True: # Enter infinite loop mode
onTick() # execution strategy main function
Sleep(1000) # sleep for 1 second
FMZ প্ল্যাটফর্ম রোটেশন প্রশিক্ষণ মোড গ্রহণ করে।main
ফাংশন এবং একটিonTick
প্রধান ফাংশন হল কৌশলটির এন্ট্রি ফাংশন, এবং প্রোগ্রামটি প্রধান ফাংশন থেকে শুরু করে কোড লাইন দ্বারা লাইন কার্যকর করবে। প্রধান ফাংশনে, একটি লিখুনwhile
লুপ এবং বারবার সঞ্চালনonTick
কৌশলটির সমস্ত কোর কোডonTick
function.
ধাপ ২ঃ ভার্চুয়াল অবস্থান নির্ধারণ করুন
mp = 0
ভার্চুয়াল অবস্থানগুলির সুবিধা হ'ল এটি লিখতে সহজ, এবং পুনরাবৃত্তিমূলক অপারেশন দ্রুত। এটি সাধারণত ব্যাকটেস্ট পরিবেশে ব্যবহৃত হয়। এটি অনুমান করা হয় যে প্রতিটি অর্ডার সম্পূর্ণরূপে পূরণ করা হয়, তবে প্রকৃত অবস্থানটি সাধারণত প্রকৃত ট্রেডিংয়ে ব্যবহৃত হয়। যেহেতু ভার্চুয়াল অবস্থানটি খোলার এবং বন্ধ হওয়ার পরে রাষ্ট্র রেকর্ড করা হয়, তাই এটিকে একটি গ্লোবাল ভেরিয়েবল হিসাবে সংজ্ঞায়িত করা দরকার।
ধাপ ৩ঃ কে লাইন পান
exchange.SetContractType('rb000') # Subscribe to futures varieties
bars_arr = exchange.GetRecords() # Get K-line array
if len(bars_arr) <long + 1: # If the number of K lines is too small
return
FMZ ফাংশন ব্যবহার করেSetContractType
, আপনি GetRecords
ফাংশন rebar সূচক K-লাইন তথ্য পেতে। যেহেতু এটি একটি নির্দিষ্ট সময় লাগে বিচ্যুতি হার গণনা করতে, প্রোগ্রাম ত্রুটি এড়ানোর জন্য, যদি যথেষ্ট K লাইন নেই, ব্যবহারif
ফিল্টার করার জন্য বিবৃতি.
পদক্ষেপ 4: বিচ্যুতি হার গণনা করুন
close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average value of the previous K line
bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value
বিচ্যুতি হার গণনা করার সূত্র অনুযায়ী, আমরা প্রথমে বন্ধ মূল্য পেতে। এই কৌশল, আমরা পূর্ববর্তী কে-লাইন বন্ধ মূল্য ব্যবহার, যার মানে হল যে বর্তমান কে-লাইন সংকেত প্রতিষ্ঠিত হয় এবং পরবর্তী কে-লাইন অর্ডার স্থাপন জন্য। তারপর FMZ অন্তর্নির্মিত ব্যবহারtalib
উদাহরণস্বরূপ, চলমান গড় হলঃTA.MA
এই ফাংশনটি 2 প্যারামিটার গ্রহণ করে, যথাঃ K লাইন অ্যারে এবং চলমান গড় সময়কাল।
ধাপ ৫ঃ অর্ডার দেওয়া
global mp # global variables
current_price = bars_arr[-1]['Close'] # latest price
if mp> 0: # If you are holding long positions
if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
exchange.SetDirection("closebuy") # Set the trading direction and type
exchange.Sell(current_price-1, 1) # Closing long positions
mp = 0 # reset virtual holding positions
if mp <0: # If you are holding short positions
if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
exchange.SetDirection("closesell") # Set the trading direction and type
exchange.Buy(current_price + 1, 1) # closing short positions
mp = 0 # reset virtual holding positions
if mp == 0: # If there is no holding position
if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
exchange.SetDirection("buy") # Set the trading direction and type
exchange.Buy(current_price + 1, 1) # open long positions
mp = 1 # reset virtual holding position
if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
exchange.SetDirection("sell") # Set the trading direction and type
exchange.Sell(current_price-1, 1) # open short positions
mp = -1 # reset virtual holding position
# Backtest configuration
'''backtest
start: 2018-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''
# External parameters
short = 10
long = 50
# Global variables
mp = 0
# Strategy main function
def onTick():
# retrieve data
exchange.SetContractType('rb000') # Subscribe to futures varieties
bars_arr = exchange.GetRecords() # Get K-line array
if len(bars_arr) <long + 1: # If the number of K lines is too small
return
# Calculate BIAS
close = bars_arr[-2]['Close'] # Get the closing price of the previous K line
ma1 = TA.MA(bars_arr, short)[-2] # Calculate the short-term moving average of the previous K line
bias1 = (close-ma1) / ma1 * 100 # Calculate the short-term deviation rate value
ma2 = TA.MA(bars_arr, long)[-2] # Calculate the long-term average of the previous K line
bias2 = (close-ma2) / ma2 * 100 # Calculate the long-term deviation rate value
# Placing Orders
global mp # global variables
current_price = bars_arr[-1]['Close'] # latest price
if mp> 0: # If you are holding long positions
if bias2 <= bias1: # If the long-term deviation rate is less than or equal to the short-term deviation rate
exchange.SetDirection("closebuy") # Set the trading direction and type
exchange.Sell(current_price-1, 1) # closing long positions
mp = 0 # reset virtual holding position
if mp <0: # If you are holding short positions
if bias2 >= bias1: # If the long-term deviation rate is greater than or equal to the short-term deviation rate
exchange.SetDirection("closesell") # Set the trading direction and type
exchange.Buy(current_price + 1, 1) # closing short positions
mp = 0 # reset virtual holding position
if mp == 0: # If there is no holding position
if bias2> bias1: # Long-term deviation rate is greater than short-term deviation rate
exchange.SetDirection("buy") # Set the trading direction and type
exchange.Buy(current_price + 1, 1) # opening long positions
mp = 1 # reset virtual holding position
if bias2 <bias1: # The long-term deviation rate is less than the short-term deviation rate
exchange.SetDirection("sell") # Set the trading direction and type
exchange.Sell(current_price-1, 1) # open short positions
mp = -1 # reset virtual holding position
# Program entry function
def main():
while True: # loop
onTick() # execution strategy main function
Sleep(1000) # sleep for 1 second
সম্পূর্ণ কৌশলটি এফএমজেডের ওয়েবসাইটে প্রকাশিত হয়েছে:https://www.fmz.com/strategy/215129
ব্যাকটেস্ট কনফিগারেশন
পারফরম্যান্স রিপোর্ট
ফান্ড কার্ভ
বিচ্যুতি হার একটি সহজ এবং কার্যকর ট্রেডিং সরঞ্জাম যা ব্যবসায়ীদের জন্য একটি কার্যকর রেফারেন্স সরবরাহ করতে পারে। প্রকৃত ব্যবহারে, এটি সত্যিকারের মান প্রতিফলিত করার জন্য এমএসিডি এবং বলিংজার ব্যান্ড সূচকগুলির সাথে নমনীয়ভাবে প্রয়োগ করা যেতে পারে।