গ্রেডিয়েন্ট রিভার্সাল ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-10-09 15:10:39 অবশেষে সংশোধন করুন: 2023-10-09 15:10:39
অনুলিপি: 0 ক্লিকের সংখ্যা: 782
1
ফোকাস
1617
অনুসারী

ওভারভিউ

গ্রেডিয়েন্ট বিপরীত ট্রেডিং কৌশল হল একটি ট্রেন্ড ট্র্যাকিং কৌশল যা ক্রয়-বিক্রয় সংকেত প্রেরণ করার জন্য একটি সমান্তরাল সিস্টেম ব্যবহার করে। এটি বিভিন্ন চক্রের চলমান গড় গণনা করে বর্তমান মূল্য প্রবণতার দিক নির্ধারণ করে এবং প্রবণতা বিপরীত বিন্দুতে ক্রয় বা বিক্রয় ক্রিয়াকলাপ পরিচালনা করে। এই কৌশলটি মধ্য-লং লাইন প্রবণতা ক্যাপচার করার জন্য এবং প্রবণতা পরিবর্তনের সময় ট্রেড করার জন্য।

কৌশল নীতি

এই কৌশলটি দুটি চলমান গড় গণনা করে একটি ট্রেডিং সিগন্যাল তৈরি করে, একটি দীর্ঘ সময়ের গড় রেফারেন্স লাইন হিসাবে এবং অন্যটি সংক্ষিপ্ত সময়ের গড় রেফারেন্স লাইন। নিম্নলিখিত অপারেশন লজিকঃ

  1. একটি বেঞ্চমার্ক গড়রেখা গণনা করুন, যার ধারাবাহিকতা len1, যা দীর্ঘতর ধারাবাহিকতার প্রবণতাকে নির্দেশ করে।

  2. একটি সিগন্যাল গড়রেখা গণনা করুন, যার ধারাবাহিকতার মান len2, যা একটি সংক্ষিপ্ত ধারাবাহিক প্রবণতার গড়রেখা, len2

  3. যখন একটি সংক্ষিপ্ত গড় লাইন একটি দীর্ঘ গড় লাইন অতিক্রম করে, একটি প্রবণতা বিপরীত হতে পারে এবং শেয়ারের মূল্য নিম্নমুখী হতে পারে।

  4. যখন একটি সংক্ষিপ্ত গড় নীচের দিক থেকে দীর্ঘ গড় লাইন অতিক্রম করে, তখন আরো ট্রেডিং করুন, যা ট্রেন্ডের বিপরীত নির্দেশ করে এবং শেয়ারের দাম বাড়তে পারে।

  5. যখন দাম লম্বা গড়ের কাছাকাছি ফিরে আসে, তখন পজিশন বন্ধ করে দেওয়া হয়।

  6. এইভাবে, চলমান গড়ের ক্রস দ্বারা মধ্যম এবং দীর্ঘ লাইনের প্রবণতার বিপরীত পয়েন্টগুলি ধরা এবং ট্রেন্ড ট্রেডিং করা যায়।

কৌশলগত সুবিধা

  1. মধ্যবর্তী চক্রের প্রবণতা বিপরীতকরণকে কার্যকরভাবে ধরতে সমান্তরাল ক্রস সিস্টেম ব্যবহার করা হয়।

  2. ট্রেডিং সিগন্যালগুলি সহজ, স্পষ্ট এবং সহজেই বোঝা যায়।

  3. বিভিন্ন জাতের এবং ব্যবসায়ীদের জন্য কাস্টমাইজযোগ্য চক্রের প্যারামিটার।

  4. স্টপ লস স্টপ সেট করুন, প্রতিটি ঝুঁকি নিয়ন্ত্রণ করুন।

  5. শেয়ারের মূল্য সম্পর্কে কোন পূর্বাভাস দেওয়ার প্রয়োজন নেই, শুধু ট্রেন্ডের দিকনির্দেশনা নিয়ে চিন্তা করুন।

কৌশলগত ঝুঁকি

  1. ভূমিকম্পের সময়, সমান্তরাল লাইনগুলি প্রায়শই ক্রস হয়, যা মিথ্যা সংকেত তৈরি করে।

  2. এটি স্বল্পমেয়াদী মূল্য ওঠানামা থেকে লাভ করতে পারে না এবং শুধুমাত্র মাঝারি ও দীর্ঘমেয়াদী ট্রেন্ড ট্রেডিংয়ের জন্য উপযুক্ত।

  3. গড়রেখার সিস্টেম মূল্যের পরিবর্তনের সাথে পিছিয়ে থাকে এবং প্রবণতা পাল্টাতে সময়মত ধরা যায় না।

  4. এই ধরনের ব্যবসায়ীদের জন্য, এই ধরনের ব্যবসায়ীদের জন্য, এই ধরনের ব্যবসায়ীদের জন্য, এই ধরনের ব্যবসায়ীদের জন্য, এই ধরনের ব্যবসায়ীদের জন্য।

  5. বাজারের জন্য ট্রেডিং ফ্রিকোয়েন্সি সামঞ্জস্য করার জন্য সময়মত প্যারামিটারগুলিকে সামঞ্জস্য করতে হবে।

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

  1. অন্য প্রযুক্তিগত সূচক যেমন MACD, KD ইত্যাদির সাথে মিলিত হয়ে যাচাইকরণ, মিথ্যা সংকেতগুলি ফিল্টার করা।

  2. প্রবণতা ফিল্টার যোগ করুন, শুধুমাত্র যখন প্রবণতা স্পষ্ট হয় তখনই সংকেত দিন।

  3. একাধিক টাইম ফ্রেম ট্রেডিং, বিভিন্ন চক্রের সমান্তরাল কাজ করে, আরও বেশি ট্রেডিং সুযোগ সৃষ্টি করে।

  4. ডায়নামিক অপ্টিমাইজেশান প্যারামিটার, যাতে চক্রের প্যারামিটারগুলি বাজারের পরিবর্তনের সাথে চলে যায়।

  5. মেশিন লার্নিং মডেলের সাহায্যে ট্রেন্ড রিভার্সনের সিদ্ধান্ত নেওয়া।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Created by 100kiwi
strategy(title = "TrapTrading", overlay = true)

/////////////////////////////////////////////////////////////////////
// COMPONENT CODE START
//*******************************************************************
// Backtesting Period Selector | Component by pbergden
//*******************************************************************
testStartYear = input(2015, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// COMPONENT CODE STOP
/////////////////////////////////////////////////////////////////////

// input
buySide = input(defval = true, title = "Trade Direction (ON: Buy Side OFF: Sell Side)", type = bool)
counterTrend  = input(defval = true, title = "Trade Mode (ON: Counter Trend OFF: Trend Following)", type = bool)
len1 = input(defval = 14, title = "Period")
multiple = input(defval = 1.4, title = "Multiple")

m1 = close - close[len1]
controlPoint = counterTrend ? lowest(abs(m1), len1) == abs(m1) : highest(abs(m1), len1) == abs(m1)
baseLine = valuewhen(controlPoint, avg(close, close[len1]), 0)

// trap line
atr = atr(len1)
line1Up = baseLine + (atr * multiple)
line2Up = baseLine + (atr * 2 * multiple)
line3Up = baseLine + (atr * 3 * multiple)
line4Up = baseLine + (atr * 4 * multiple)
line5Up = baseLine + (atr * 5 * multiple)
line6Up = baseLine + (atr * 6 * multiple)
line7Up = baseLine + (atr * 7 * multiple)
line8Up = baseLine + (atr * 8 * multiple)
line9Up = baseLine + (atr * 9 * multiple)
line10Up = baseLine + (atr * 10 * multiple)
line1Down = baseLine - (atr * multiple)
line2Down = baseLine - (atr * 2 * multiple)
line3Down = baseLine - (atr * 3 * multiple)
line4Down = baseLine - (atr * 4 * multiple)
line5Down = baseLine - (atr * 5 * multiple)
line6Down = baseLine - (atr * 6 * multiple)
line7Down = baseLine - (atr * 7 * multiple)
line8Down = baseLine - (atr * 8 * multiple)
line9Down = baseLine - (atr * 9 * multiple)
line10Down = baseLine - (atr * 9 * multiple)

// draw
color = close >= baseLine ? teal : red
barcolor(controlPoint ? yellow : na, title = "Candle Color")

plot(baseLine, title = "Base Line", color = white, linewidth = 4, style = stepline, transp = 0)
plot(line1Up, title = "1Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line2Up, title = "2Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line3Up, title = "3Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line4Up, title = "4Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line5Up, title = "5Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line6Up, title = "6Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line7Up, title = "7Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line8Up, title = "8Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line9Up, title = "9Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line10Up, title = "10Up Line", color = green, linewidth = 1, style = stepline, transp = 0)
plot(line1Down, title = "1Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line2Down, title = "2Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line3Down, title = "2Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line4Down, title = "4Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line5Down, title = "5Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line6Down, title = "6Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line7Down, title = "7Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line8Down, title = "8Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line9Down, title = "9Down Line", color = red, linewidth = 1, style = stepline, transp = 0)
plot(line10Down, title = "10Down Line", color = red, linewidth = 1, style = stepline, transp = 0)

// strategy code
if testPeriod() and buySide
    strategy.exit("Exit Long0", from_entry = "Long0", qty = 1, limit = line2Up)
    strategy.exit("Exit Long1", from_entry = "Long1", qty = 1, limit = line1Up)
    strategy.exit("Exit Long2", from_entry = "Long2", qty = 1, limit = baseLine)
    strategy.exit("Exit Long3", from_entry = "Long3", qty = 1, limit = line1Down)
    strategy.exit("Exit Long4", from_entry = "Long4", qty = 1, limit = line2Down)
    strategy.exit("Exit Long5", from_entry = "Long5", qty = 1, limit = line3Down)
    strategy.exit("Exit Long6", from_entry = "Long6", qty = 1, limit = line4Down)
    strategy.exit("Exit Long7", from_entry = "Long7", qty = 1, limit = line5Down)
    strategy.exit("Exit Long8", from_entry = "Long8", qty = 1, limit = line6Down)
    strategy.exit("Exit Long9", from_entry = "Long9", qty = 1, limit = line7Down)
    strategy.exit("Exit Long10", from_entry = "Long10", qty = 1, limit = line8Down)
    strategy.order("Long0", strategy.long, qty = 1, limit = baseLine, when = strategy.position_size <= 0)
    strategy.order("Long1", strategy.long, qty = 1, limit = line1Down, when = strategy.position_size <= 1)
    strategy.order("Long2", strategy.long, qty = 1, limit = line2Down, when = strategy.position_size <= 2)
    strategy.order("Long3", strategy.long, qty = 1, limit = line3Down, when = strategy.position_size <= 3)
    strategy.order("Long4", strategy.long, qty = 1, limit = line4Down, when = strategy.position_size <= 4)
    strategy.order("Long5", strategy.long, qty = 1, limit = line5Down, when = strategy.position_size <= 5)
    strategy.order("Long6", strategy.long, qty = 1, limit = line6Down, when = strategy.position_size <= 6)
    strategy.order("Long7", strategy.long, qty = 1, limit = line7Down, when = strategy.position_size <= 7)
    strategy.order("Long8", strategy.long, qty = 1, limit = line8Down, when = strategy.position_size <= 8)
    strategy.order("Long9", strategy.long, qty = 1, limit = line9Down, when = strategy.position_size <= 9)
    strategy.order("Long10", strategy.long, qty = 1, limit = line10Down, when = strategy.position_size <= 10)
else
    if testPeriod() and not buySide
        strategy.exit("Exit Short0", from_entry = "Short0", qty = 1, limit = line2Down)
        strategy.exit("Exit Short1", from_entry = "Short1", qty = 1, limit = line1Down)
        strategy.exit("Exit Short2", from_entry = "Short2", qty = 1, limit = baseLine)
        strategy.exit("Exit Short3", from_entry = "Short3", qty = 1, limit = line1Up)
        strategy.exit("Exit Short4", from_entry = "Short4", qty = 1, limit = line2Up)
        strategy.exit("Exit Short5", from_entry = "Short5", qty = 1, limit = line3Up)
        strategy.exit("Exit Short6", from_entry = "Short6", qty = 1, limit = line4Up)
        strategy.exit("Exit Short7", from_entry = "Short7", qty = 1, limit = line5Up)
        strategy.exit("Exit Short8", from_entry = "Short8", qty = 1, limit = line6Up)
        strategy.exit("Exit Short9", from_entry = "Short9", qty = 1, limit = line7Up)
        strategy.exit("Exit Short10", from_entry = "Short10", qty = 1, limit = line8Up)
        strategy.order("Short0", strategy.short, qty = 1, limit = baseLine, when = strategy.position_size >= 0)
        strategy.order("Short1", strategy.short, qty = 1, limit = line1Up, when = strategy.position_size >= -1)
        strategy.order("Short2", strategy.short, qty = 1, limit = line2Up, when = strategy.position_size >= -2)
        strategy.order("Short3", strategy.short, qty = 1, limit = line3Up, when = strategy.position_size >= -3)
        strategy.order("Short4", strategy.short, qty = 1, limit = line4Up, when = strategy.position_size >= -4)
        strategy.order("Short5", strategy.short, qty = 1, limit = line5Up, when = strategy.position_size >= -5)
        strategy.order("Short6", strategy.short, qty = 1, limit = line6Up, when = strategy.position_size >= -6)
        strategy.order("Short7", strategy.short, qty = 1, limit = line7Up, when = strategy.position_size >= -7)
        strategy.order("Short8", strategy.short, qty = 1, limit = line8Up, when = strategy.position_size >= -8)
        strategy.order("Short9", strategy.short, qty = 1, limit = line9Up, when = strategy.position_size >= -9)
        strategy.order("Short10", strategy.short, qty = 1, limit = line10Up, when = strategy.position_size >= -10)