রিসোর্স লোড হচ্ছে... লোডিং...

কমোডিটি ফিউচার R-Breaker কৌশল

লেখক:ভাল, তৈরিঃ 2020-06-02 08:57:10, আপডেটঃ 2023-11-02 19:52:44

img

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

আর-ব্রেকার কৌশলটি রিচার্ড সাইডেনবার্গ দ্বারা বিকাশ করা হয়েছিল এবং ১৯৯৪ সালে প্রকাশিত হয়েছিল। এটি মার্কিন যুক্তরাষ্ট্রের ফিউচারস ট্রুথ ম্যাগাজিন দ্বারা পরপর ১৫ বছর ধরে শীর্ষ দশটি লাভজনক ট্রেডিং কৌশলগুলির মধ্যে একটি হিসাবে নির্বাচিত হয়েছিল। অন্যান্য কৌশলগুলির তুলনায়, আর-ব্রেকার একটি ট্রেডিং কৌশল যা প্রবণতা এবং প্রবণতা-বিপরিবর্তনকে একত্রিত করে। বড় মুনাফা অর্জনের জন্য কেবল প্রবণতা বাজারকে ক্যাপচার করা যায় না, তবে যখন বাজারের প্রবণতা বিপরীত হয়, তখন এটি লাভ নেওয়ার উদ্যোগ নিতে পারে এবং প্রবণতা বিপরীত ট্র্যাক করতে পারে।

প্রতিরোধ এবং সমর্থন

সহজভাবে বলতে গেলে, আর-ব্রেকার কৌশলটি একটি মূল্য সমর্থন এবং প্রতিরোধ কৌশল। এটি গতকালের সর্বোচ্চ, সর্বনিম্ন এবং বন্ধের দামের ভিত্তিতে সাতটি মূল্য গণনা করেঃ একটি কেন্দ্রীয় মূল্য (পিভট) এবং তিনটি সমর্থন স্তর (এস 1 এস 2, এস 3), তিনটি প্রতিরোধের স্তর (আর 1, আর 2, আর 3) । তারপরে বর্তমান মূল্য এবং এই সমর্থন এবং প্রতিরোধের স্তরের মধ্যে অবস্থানের সম্পর্ক অনুসারে, কেনা এবং বিক্রয়ের জন্য ট্রিগার শর্ত তৈরি করতে এবং একটি নির্দিষ্ট অ্যালগরিদম সামঞ্জস্যের মাধ্যমে, এই সাতটি দামের মধ্যে দূরত্ব সামঞ্জস্য করুন, লেনদেনের ট্রিগার মান আরও পরিবর্তন করুন।

  • ক্রয়মূল্য (প্রতিরোধের মাত্রা r3) = গতকালের সর্বোচ্চ মূল্য + 2 * (মধ্যম মূল্য - গতকালের সর্বনিম্ন মূল্য) / 2

  • বিক্রয় মূল্য পর্যবেক্ষণ (প্রতিরোধের স্তর r2) = কেন্দ্রীয় মূল্য + (গতকালের সর্বোচ্চ মূল্য - গতকালের সর্বনিম্ন মূল্য)

  • বিপরীত বিক্রয় মূল্য (প্রতিরোধ স্তর r1) = 2 * কেন্দ্রীয় মূল্য - গতকালের সর্বনিম্ন মূল্য

  • কেন্দ্রীয় মূল্য (পিভট) = (গতকালের সর্বোচ্চ মূল্য + গতকালের বন্ধের মূল্য + গতকালের সর্বনিম্ন মূল্য) / 3

  • বিপরীত ক্রয় মূল্য (সমর্থন স্তর s1) = 2 * কেন্দ্রীয় মূল্য - গতকালের সর্বোচ্চ মূল্য

  • ক্রয় মূল্য পর্যবেক্ষণ (সমর্থন স্তর s2) = কেন্দ্রীয় মূল্য - (গতকালের সর্বোচ্চ মূল্য - গতকালের সর্বনিম্ন মূল্য)

  • বিক্রয়মূল্য (সমর্থন স্তর s3) = গতকালের সর্বনিম্ন মূল্য - ২ * (গতকালের সর্বোচ্চ মূল্য - কেন্দ্রীয় মূল্য)

এর থেকে আমরা দেখতে পাচ্ছি যে আর-ব্রেকার কৌশলটি গতকালের দামের উপর ভিত্তি করে একটি গ্রিডের মতো মূল্য লাইন আঁকে এবং এই মূল্য লাইনগুলি প্রতিদিন একবার আপডেট করে। প্রযুক্তিগত বিশ্লেষণে, সমর্থন এবং প্রতিরোধের স্তর এবং উভয়ের ভূমিকা একে অপরের মধ্যে রূপান্তরিত হতে পারে। যখন দাম সফলভাবে প্রতিরোধের স্তরটি ভেঙে দেয়, তখন প্রতিরোধের স্তরটি সমর্থন স্তরে পরিণত হয়; যখন দাম সফলভাবে সমর্থন স্তরটি ভেঙে দেয়, তখন সমর্থন স্তরটি প্রতিরোধের স্তরে পরিণত হয়।

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

কৌশলগত যুক্তি

পরবর্তী, আসুন দেখি কিভাবে R-ব্রেকার কৌশলটি এই সমর্থন এবং প্রতিরোধের স্তরগুলি ব্যবহার করে। এর যৌক্তিকতা মোটেই জটিল নয়। যদি কোনও হোল্ডিং অবস্থান না থাকে তবে ট্রেন্ড মোডে প্রবেশ করুন। যখন দামটি ক্রয়ের মূল্যের চেয়ে বেশি হয়, তখন লং পজিশন খুলুন; যখন দামটি বিক্রয় মূল্যের চেয়ে কম হয়, তখন শর্ট পজিশন খুলুন।

  • ট্রেন্ড মোড

খোলা লং পজিশনঃ যদি কোনও হোল্ডিং পজিশন না থাকে এবং দামটি ক্রয় মূল্যের চেয়ে বেশি হয়

খোলা শর্ট পজিশনঃ যদি হোল্ডিং পজিশন না থাকে এবং দামটি বিক্রয় মূল্যের চেয়ে কম হয়

লং পজিশন বন্ধ করুনঃ যদি আপনি লং পজিশন ধরে রাখেন, এবং দিনের সর্বোচ্চ মূল্য পর্যবেক্ষণ বিক্রয় মূল্যের চেয়ে বেশি এবং দাম বিপরীত বিক্রয় মূল্যের চেয়ে কম হয়

শর্ট পজিশন বন্ধ করুনঃ যদি আপনি শর্ট পজিশন ধরে রাখেন এবং দিনের সর্বনিম্ন মূল্য পর্যবেক্ষণকৃত ক্রয় মূল্যের চেয়ে কম হয় এবং মূল্য বিপরীত ক্রয় মূল্যের চেয়ে বেশি হয়

  • বিপরীত মোড

খোলা লং পজিশনঃ যদি আপনি একটি শর্ট পজিশন ধরে রাখেন, এবং দিনের সর্বনিম্ন মূল্য পর্যবেক্ষণ ক্রয় মূল্যের চেয়ে কম এবং দাম বিপরীত ক্রয় মূল্যের চেয়ে বেশি

খোলা শর্ট পজিশনঃ যদি আপনি একটি লং পজিশন ধরে রাখেন, এবং দিনের সর্বোচ্চ মূল্য পর্যবেক্ষণ বিক্রয় মূল্যের চেয়ে বড় এবং দাম বিপরীত বিক্রয় মূল্যের চেয়ে কম

close long position: যদি long position রাখা হয় এবং দাম break-through বিক্রয় মূল্যের চেয়ে কম হয়

শর্ট পজিশন বন্ধ করাঃ যদি শর্ট পজিশন রাখা হয় এবং দামটি ক্রয় মূল্যের চেয়ে বেশি হয়

যদি হোল্ডিং পজিশন থাকে, তবে এটি বিপরীত মোডে প্রবেশ করে। যখন লং পজিশন থাকে এবং দিনের সর্বোচ্চ মূল্য পর্যবেক্ষণ বিক্রয় মূল্যের চেয়ে বেশি হয় এবং দাম বিপরীত বিক্রয় মূল্যের নীচে পড়ে, তখন লং পজিশনটি বন্ধ হয়ে যাবে এবং শর্ট পজিশনটি সিঙ্ক্রোনভাবে খোলা হবে। যখন শর্ট পজিশন রাখা হয়, এবং দিনের সর্বনিম্ন মূল্য পর্যবেক্ষণ ক্রয়ের মূল্যের চেয়ে কম হয়, এবং দাম বিপরীত ক্রয় মূল্যের মধ্য দিয়ে ভেঙে যায়, তখন শর্ট পজিশনটি বন্ধ হয়ে যাবে এবং লং পজিশনটি খোলা হবে।

কৌশল লেখা

'''backtest
start: 2019-01-01 00:00:00
end: 2020-01-01 00:00:00
period: 5m
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''

# Strategy main function
def onTick():
    # retrieve data
    exchange.SetContractType(contract_type)   # Subscribe to futures products
    bars_arr = exchange.GetRecords(PERIOD_D1)  # Get daily K line array
    if len(bars_arr) < 2:  # If the number of K lines is less than 2
        return
    yesterday_open = bars_arr[-2]['Open']     # Yesterday's opening price
    yesterday_high = bars_arr[-2]['High']     # Yesterday's highest price
    yesterday_low = bars_arr[-2]['Low']       # Yesterday's lowest price
    yesterday_close = bars_arr[-2]['Close']   # Yesterday's closing price

    # Calculation
    pivot = (yesterday_high + yesterday_close + yesterday_low) / 3 # Pivot point
    r1 = 2 * pivot - yesterday_low # Resistance level 1
    r2 = pivot + (yesterday_high - yesterday_low) # Resistance level 2
    r3 = yesterday_high + 2 * (pivot - yesterday_low) # Resistance level 3
    s1 = 2 * pivot - yesterday_high  # Support level 1
    s2 = pivot - (yesterday_high - yesterday_low)  # Support level 2
    s3 = yesterday_low - 2 * (yesterday_high - pivot)  # Support level 3

    today_high = bars_arr[-1]['High'] # Today's highest price
    today_low = bars_arr[-1]['Low'] # Today's lowest price
    current_price = _C(exchange.GetTicker).Last # Current price

    # Get positions
    position_arr = _C(exchange.GetPosition)  # Get array of positions
    if len(position_arr) > 0:  # If the position array length is greater than 0
        for i in position_arr:
            if i['ContractType'] == contract_type:  # If the position variety equals the subscription variety
                if i['Type'] % 2 == 0:  # If it is long position
                    position = i['Amount']  # The number of assigned positions is positive
                else:
                    position = -i['Amount']  # The number of assigned positions is negative
                profit = i['Profit']  # Get position profit and loss
    else:
        position = 0  # The number of assigned positions is 0
        profit = 0  # The value of the assigned position is 0
        
    if position == 0:  # If there is no position
        if current_price > r3:  # If the current price is greater than Resistance level 3
            exchange.SetDirection("buy")  # Set transaction direction and type
            exchange.Buy(current_price + 1, 1)  # open long position
        if current_price < s3:  # If the current price is less than Support level 3
            exchange.SetDirection("sell")  # Set transaction direction and type
            exchange.Sell(current_price - 1, 1)  # open short position
        
    if position > 0:  # if holding long position
        if today_high > r2 and current_price < r1 or current_price < s3:  # If today's highest price is greater than Resistance level 2, and the current price is less than Resistance level 1
            exchange.SetDirection("closebuy")  # Set transaction direction and type
            exchange.Sell(current_price - 1, 1)  # close long position
            exchange.SetDirection("sell")  # Set transaction direction and type
            exchange.Sell(current_price - 1, 1)  # open short position

    if position < 0:  # if holding short position
        if today_low < s2 and current_price > s1 or current_price > r3:  # If today's lowest price is less than Support level 2, and the current price is greater than Support level 1
            exchange.SetDirection("closesell")  # Set transaction direction and type
            exchange.Buy(current_price + 1, 1)  # close short position
            exchange.SetDirection("buy")  # Set transaction direction and type
            exchange.Buy(current_price + 1, 1)  # open long position

            
# Program main function
def main():
    while True:     # loop
        onTick()    # Execution strategy main function
        Sleep(1000) # Sleep for 1 second

সম্পূর্ণ কৌশল কপি করুন

সম্পূর্ণ কৌশলটি এফএমজেড প্ল্যাটফর্মে প্রকাশিত হয়েছে (FMZ.COM), নিচের লিঙ্কে ক্লিক করে সরাসরি এটি কপি করুন, এবং আপনি কনফিগারেশন ছাড়াই ব্যাকটেস্ট করতে পারেনঃhttps://www.fmz.com/strategy/187009

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

আর-ব্রেকার কৌশলটি জনপ্রিয় হওয়ার কারণ হ'ল এটি খাঁটি ট্রেন্ড ট্র্যাকিং কৌশল নয়, তবে ট্রেন্ড আলফা এবং বিপরীত আলফা উভয় আয় উপার্জনের জন্য একটি যৌগিক কৌশল। এই নিবন্ধে কৌশলটি কেবলমাত্র প্রদর্শনীর জন্য, উপযুক্ত পরামিতি এবং জাতগুলি অনুকূলিত না করে। এছাড়াও, সম্পূর্ণ কৌশলটিতে স্টপ লস ফাংশনও অন্তর্ভুক্ত থাকতে হবে এবং আগ্রহী বন্ধুরা এটি উন্নত করতে পারে।


সম্পর্কিত

আরো