বিচ্যুতি হার বিআইএএস ট্রেডিং কৌশল

লেখক:ভাল, তৈরিঃ 2020-06-30 09:58:26, আপডেটঃ 2023-10-28 15:29:08

[TOC]

img

সংক্ষিপ্তসার

যেমনটি বলা হয়, এই পৃথিবীটি দীর্ঘ সময় একত্রিত হওয়ার পরে বিচ্ছিন্ন হবে। দীর্ঘ সময় বিভক্ত হওয়ার পরেও বিপরীত কাজ করবে। এবং এই ঘটনাটি ফিউচার মার্কেটেও বিদ্যমান। এমন কোনও বৈচিত্র্য নেই যা কেবল উঠে যায় তবে পড়ে না। তবে কখন উঠবে এবং কখন পড়ে, এটি বিচ্যুতির হারের উপর নির্ভর করে। এই নিবন্ধে, আমরা একটি সহজ ট্রেডিং কৌশল তৈরি করতে বিচ্যুতির হার ব্যবহার করব।

সংক্ষিপ্ত ভূমিকা

img

বিচ্যুতি হার (বিআইএএস) হল চলমান গড় থেকে প্রাপ্ত একটি প্রযুক্তিগত সূচক। এটি মূলত একটি শতাংশ আকারে হয় যা চলমান গড় থেকে দামের বিচ্যুতির মাত্রা পরিমাপ করে। যদি চলমান গড়টি কোনও ব্যবসায়ীর গড় ব্যয় হয় তবে বিচ্যুতি হারটি ব্যবসায়ীর গড় রিটার্ন হার।

বিচ্যুতি হার নীতি

বিচ্যুতি হারের তাত্ত্বিক ভিত্তি হ'ল ব্যবসায়ীর হৃদয়ের বিশ্লেষণ। যখন দাম বাজারের গড় ব্যয়ের চেয়ে বেশি হয়, এর অর্থ হ'ল লং পজিশন ব্যবসায়ীদের মুনাফা নগদীকরণের ধারণা থাকবে, যার ফলে দাম হ্রাস পাবে। যখন দাম বাজারের গড় ব্যয়ের চেয়ে কম হয়, এর অর্থ হ'ল শর্ট-সেলাররা লাভজনক এবং মুনাফা নগদীকরণের ধারণা দাম বাড়ার কারণ হবে।

  • যখন মূল্য চলমান গড় থেকে উপরে বিচ্যুত হয়, তখন বিচ্যুতির হার খুব বড়, এবং ভবিষ্যতে দামের পতনের উচ্চ সম্ভাবনা রয়েছে।

  • যখন মূল্য নিম্নগামী চলমান গড় থেকে বিচ্যুত হয়, তখন বিচ্যুতির হার খুব ছোট এবং ভবিষ্যতে দাম বাড়ার সম্ভাবনা বেশি।

যদিও চলমান গড়টি মূল্য থেকে গণনা করা হয়, তবে বাহ্যিক ফর্মের দিক থেকে, দামটি অবশ্যই চলমান গড়ের কাছাকাছি চলে যাবে, বা দামটি সর্বদা চলমান গড়ের চারপাশে ওঠানামা করবে। যদি দামটি চলমান গড় থেকে খুব দূরে বিচ্যুত হয়, দামটি চলমান গড়ের উপরে বা নীচে কিনা তা নির্বিশেষে, এটি শেষ পর্যন্ত চলমান গড়ের দিকে ঝুঁকতে পারে এবং বিচ্যুতি হার হ'ল শতাংশের মান যা দামটি চলমান গড় থেকে বিচ্যুত হয়।

বিচ্যুতি হার গণনার সূত্র

ডিভিয়েশন রেট = [ (দিনের বন্ধের মূল্য - 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, আপনি rb000 পাস করে রিবার ইন্ডেক্স চুক্তিতে সাবস্ক্রাইব করতে পারেন, তবে ব্যাকটেস্ট এবং বাস্তব বাজারের পরিস্থিতিতে, রিবার সূচকটি ডেটা হিসাবে ব্যবহৃত হয় এবং নির্দিষ্ট মূল চুক্তি অর্ডার দেওয়ার জন্য ব্যবহৃত হয়।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

কৌশল ব্যাকটেস্ট

ব্যাকটেস্ট কনফিগারেশন

img

পারফরম্যান্স রিপোর্ট

img img

ফান্ড কার্ভ

img

সংক্ষিপ্তসার

বিচ্যুতি হার একটি সহজ এবং কার্যকর ট্রেডিং সরঞ্জাম যা ব্যবসায়ীদের জন্য একটি কার্যকর রেফারেন্স সরবরাহ করতে পারে। প্রকৃত ব্যবহারে, এটি সত্যিকারের মান প্রতিফলিত করার জন্য এমএসিডি এবং বলিংজার ব্যান্ড সূচকগুলির সাথে নমনীয়ভাবে প্রয়োগ করা যেতে পারে।


সম্পর্কিত

আরো