টাইম রেঞ্জ পাওয়ার ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-11-23 15:32:00 অবশেষে সংশোধন করুন: 2023-11-23 15:32:00
অনুলিপি: 0 ক্লিকের সংখ্যা: 603
1
ফোকাস
1617
অনুসারী

টাইম রেঞ্জ পাওয়ার ট্রেডিং কৌশল

ওভারভিউ

টাইম জোন পাওয়ার বাজার কৌশল হল একটি কৌশল যা শেয়ারের দামের গতিবিধিকে দিনের বিভিন্ন সময়সীমার মধ্যে ব্যবহার করে। এটি দিনের ৪৮-ঘন্টা সময়সীমার মধ্যে সর্বোত্তম সময় নির্ধারণ করে।

কৌশল নীতি

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

উদাহরণস্বরূপ, যদি ৬ঃ৩০ থেকে ৭ঃ৩০ এর মধ্যে পজিশনটি লোভনীয় হয়, তাহলে কৌশলটি ৬ঃ৩০ এ পজিশনটি লোভনীয় করে তোলে; যদি ৭ঃ৩০ থেকে ৭ঃ৩০ এর মধ্যে পজিশনটি লোভনীয় করে তোলে, তাহলে কৌশলটি ৭ঃ০০ এর আগে পজিশনটি সমতল করে এবং ৭ঃ০০ এ পজিশনটি লোভনীয় করে তোলে।

এই কৌশলটির সুবিধা হল যে এটি একদিনের মধ্যে শেয়ারের দামের পরিবর্তনের নিয়মগুলিকে ধরতে পারে। ঝুঁকিটি হল যে দামের পরিবর্তনের নিয়মগুলি সময়ের সাথে পরিবর্তিত হতে পারে, যার ফলে কৌশলটি ব্যর্থ হয়।

সামর্থ্য বিশ্লেষণ

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

আরেকটি সুবিধা হল প্যারামিটার সেট করার নমনীয়তা। বিভিন্ন স্টক এর বৈশিষ্ট্য অনুসারে, প্যারামিটারগুলির সর্বোত্তম সংমিশ্রণ বেছে নেওয়া যেতে পারে, আংশিক অনিশ্চয়তার ঝুঁকি হিজার্ড করা যায়।

ঝুঁকি বিশ্লেষণ

মূল ঝুঁকিটি অনুমানিত অস্থিরতার কারণে আসে। যদি একদিনের মধ্যে শেয়ারের দামের পরিবর্তনের নিয়ম পরিবর্তন হয় তবে কৌশলটির লাভের প্রত্যাশা প্রভাবিত হবে। এই পরিবর্তনটি শেয়ারের মূলনীতি থেকে বা বৃহত্তর পরিবেশের কালো ঝাঁকুনি থেকেও হতে পারে।

এছাড়াও, খুব ঘন ঘন লেনদেনের লেনদেনের ফি নিয়ে ঝুঁকি রয়েছে। লেনদেনের পরিমাণ যথেষ্ট পরিমাণে না থাকলে লেনদেনের ফি জমা দেওয়া চূড়ান্ত উপার্জনকে প্রভাবিত করতে পারে।

অপ্টিমাইজেশান দিক

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

অথবা, আপনি শেয়ারের সাথে মৌলিক সূচকগুলি ব্যবহার করে মূল্য পরিবর্তনের নিয়মের পরিবর্তন ঘটতে পারে কিনা তা পরীক্ষা করে দেখতে পারেন এবং এইভাবে কৌশলটি শুরু করার সময় নির্ধারণ করতে পারেন।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

//@version=4
strategy("Timeframe Time of Day Buying and Selling Strategy", overlay=true)

frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")

tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")

timeframes = array.new_string(48, '')
timeframes_options = array.new_string(49, 'None')

array.set(timeframes,0,'2330-0000')
array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='0000-0030'))
array.set(timeframes,1,'0000-0030')
array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='0030-0100'))
array.set(timeframes,2,'0030-0100')
array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='0100-0130'))
array.set(timeframes,3,'0100-0130')
array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='0130-0200'))
array.set(timeframes,4,'0130-0200')
array.set(timeframes_options,4, input(defval='Long', options=['Long','Short','None'], title='0200-0230'))
array.set(timeframes,5,'0200-0230')
array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='0230-0300'))
array.set(timeframes,6,'0230-0300')
array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='0300-0330'))
array.set(timeframes,7,'0300-0330')
array.set(timeframes_options,7, input(defval='None', options=['Long','Short','None'], title='0330-0400'))
array.set(timeframes,8,'0330-0400')
array.set(timeframes_options,8, input(defval='None', options=['Long','Short','None'], title='0400-0430'))
array.set(timeframes,9,'0400-0430')
array.set(timeframes_options,9, input(defval='None', options=['Long','Short','None'], title='0430-0500'))
array.set(timeframes,10,'0430-0500')
array.set(timeframes_options,10, input(defval='None', options=['Long','Short','None'], title='0500-0530'))
array.set(timeframes,11,'0500-0530')
array.set(timeframes_options,11, input(defval='None', options=['Long','Short','None'], title='0530-0600'))
array.set(timeframes,12,'0530-0600')
array.set(timeframes_options,12, input(defval='None', options=['Long','Short','None'], title='0600-0630'))
array.set(timeframes,13,'0600-0630')
array.set(timeframes_options,13, input(defval='None', options=['Long','Short','None'], title='0630-0700'))
array.set(timeframes,14,'0630-0700')
array.set(timeframes_options,14, input(defval='None', options=['Long','Short','None'], title='0700-0730'))
array.set(timeframes,15,'0700-0730')
array.set(timeframes_options,15, input(defval='None', options=['Long','Short','None'], title='0730-0800'))
array.set(timeframes,16,'0730-0800')
array.set(timeframes_options,16, input(defval='None', options=['Long','Short','None'], title='0800-0830'))
array.set(timeframes,17,'0800-0830')
array.set(timeframes_options,17, input(defval='None', options=['Long','Short','None'], title='0830-0900'))
array.set(timeframes,18,'0830-0900')
array.set(timeframes_options,18, input(defval='None', options=['Long','Short','None'], title='0900-0930'))
array.set(timeframes,19,'0900-0930')
array.set(timeframes_options,19, input(defval='None', options=['Long','Short','None'], title='0930-1000'))
array.set(timeframes,20,'0930-1000')
array.set(timeframes_options,20, input(defval='None', options=['Long','Short','None'], title='1000-1030'))
array.set(timeframes,21,'1000-1030')
array.set(timeframes_options,21, input(defval='None', options=['Long','Short','None'], title='1030-1100'))
array.set(timeframes,22,'1030-1100')
array.set(timeframes_options,22, input(defval='None', options=['Long','Short','None'], title='1100-1130'))
array.set(timeframes,23,'1100-1130')
array.set(timeframes_options,23, input(defval='None', options=['Long','Short','None'], title='1130-1200'))
array.set(timeframes,24,'1130-1200')
array.set(timeframes_options,24, input(defval='None', options=['Long','Short','None'], title='1200-1230'))
array.set(timeframes,25,'1200-1230')
array.set(timeframes_options,25, input(defval='None', options=['Long','Short','None'], title='1230-1300'))
array.set(timeframes,26,'1230-1300')
array.set(timeframes_options,26, input(defval='None', options=['Long','Short','None'], title='1300-1330'))
array.set(timeframes,27,'1300-1330')
array.set(timeframes_options,27, input(defval='None', options=['Long','Short','None'], title='1330-1400'))
array.set(timeframes,28,'1330-1400')
array.set(timeframes_options,28, input(defval='None', options=['Long','Short','None'], title='1400-1430'))
array.set(timeframes,29,'1400-1430')
array.set(timeframes_options,29, input(defval='None', options=['Long','Short','None'], title='1430-1500'))
array.set(timeframes,30,'1430-1500')
array.set(timeframes_options,30, input(defval='None', options=['Long','Short','None'], title='1500-1530'))
array.set(timeframes,31,'1500-1530')
array.set(timeframes_options,31, input(defval='None', options=['Long','Short','None'], title='1530-1600'))
array.set(timeframes,32,'1530-1600')
array.set(timeframes_options,32, input(defval='None', options=['Long','Short','None'], title='1600-1630'))
array.set(timeframes,33,'1600-1630')
array.set(timeframes_options,33, input(defval='None', options=['Long','Short','None'], title='1630-1700'))
array.set(timeframes,34,'1630-1700')
array.set(timeframes_options,34, input(defval='None', options=['Long','Short','None'], title='1700-1730'))
array.set(timeframes,35,'1700-1730')
array.set(timeframes_options,35, input(defval='None', options=['Long','Short','None'], title='1730-1800'))
array.set(timeframes,36,'1730-1800')
array.set(timeframes_options,36, input(defval='None', options=['Long','Short','None'], title='1800-1830'))
array.set(timeframes,37,'1800-1830')
array.set(timeframes_options,37, input(defval='None', options=['Long','Short','None'], title='1830-1900'))
array.set(timeframes,38,'1830-1900')
array.set(timeframes_options,38, input(defval='None', options=['Long','Short','None'], title='1900-0930'))
array.set(timeframes,39,'1900-0930')
array.set(timeframes_options,39, input(defval='None', options=['Long','Short','None'], title='1930-2000'))
array.set(timeframes,40,'1930-2000')
array.set(timeframes_options,40, input(defval='None', options=['Long','Short','None'], title='2000-2030'))
array.set(timeframes,41,'2000-2030')
array.set(timeframes_options,41, input(defval='None', options=['Long','Short','None'], title='2030-2100'))
array.set(timeframes,42,'2030-2100')
array.set(timeframes_options,42, input(defval='None', options=['Long','Short','None'], title='2100-2130'))
array.set(timeframes,43,'2100-2130')
array.set(timeframes_options,43, input(defval='None', options=['Long','Short','None'], title='2130-2200'))
array.set(timeframes,44,'2130-2200')
array.set(timeframes_options,44, input(defval='None', options=['Long','Short','None'], title='2200-2230'))
array.set(timeframes,45,'2200-2230')
array.set(timeframes_options,45, input(defval='None', options=['Long','Short','None'], title='2230-2300'))
array.set(timeframes,46,'2230-2300')
array.set(timeframes_options,46, input(defval='None', options=['Long','Short','None'], title='2300-2330'))
array.set(timeframes,47,'2300-2330')
array.set(timeframes_options,47, input(defval='None', options=['Long','Short','None'], title='2330-0000'))


string_hour = hour<10?'0'+tostring(hour):tostring(hour)
string_minute = minute<10?'0'+tostring(minute):tostring(minute)
current_time = string_hour+string_minute


f_strLeft(_str, _n) =>
    string[] _chars = str.split(_str, "")
    int _len = array.size(_chars)
    int _end = min(_len, max(0, _n))
    string[] _substr = array.new_string(0)
    if _end <= _len
        _substr := array.slice(_chars, 0, _end)
    string _return = array.join(_substr, "")

f_strRight(_str, _n) =>
    string[] _chars = str.split(_str, "")
    int _len = array.size(_chars)
    int _beg = max(0, _len - _n)
    string[] _substr = array.new_string(0)
    if _beg < _len
        _substr := array.slice(_chars, _beg, _len)
    string _return = array.join(_substr, "")


for i = 0 to array.size(timeframes) - 1
    start_time = f_strLeft(array.get(timeframes, i), 4)
    end_time = f_strRight(array.get(timeframes, i), 4)
    
    if current_time == end_time and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==47?0:i+1) and timestamp(toyear, tomonth, today, 00, 00)
        strategy.close_all()

    if current_time == start_time and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?47:i-1)
        if array.get(timeframes_options, i) == 'Long'
            strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
        else if array.get(timeframes_options, i) == 'Short'
            strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))