দীর্ঘ এবং সংক্ষিপ্ত সূচক কৌশল


সৃষ্টির তারিখ: 2023-09-25 17:34:46 অবশেষে সংশোধন করুন: 2023-09-25 17:34:46
অনুলিপি: 5 ক্লিকের সংখ্যা: 909
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি মূলত তিনটি কাস্টমাইজড সূচকের উপর ভিত্তি করে তৈরি করা হয়েছেঃ

  1. ট্রেন্ডঃ দাম ও ওভারবয় ওভারসেল চ্যানেলের মধ্যে সম্পর্ক নির্ণয় করে, ওভারহেড ও ওভারহেড ট্রেন্ড নির্ণয় করে, ১, ০, -১ তিনটি অবস্থা ফেরত দেয়।

  2. ওভারবই ওভারসেল চ্যানেল (টিএসএল): এটিআর-এর উপর ভিত্তি করে উপরের এবং নীচের ট্র্যাকের হিসাব করা হয়। দামের উপরের ট্র্যাকটি ওভারবই হিসাবে বিবেচিত হয় এবং নীচের ট্র্যাকটি ওভারসেল হিসাবে বিবেচিত হয়।

  3. বেসিক মুভিং এভারেজ ((MA): 20 পিরিয়ডের ক্লোজ-আপ প্রাইসের সরল মুভিং এভারেজ গণনা করা হয়েছে।

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

এছাড়াও, মুভিং এভারেজ অতিক্রম করার সময়, এটি একটি সহায়ক সংকেত হিসাবে কাজ করে। এটি ট্রেডিংয়ের দিক নির্দেশনা দেয়। দামগুলি উচ্চতর গড় অতিক্রম করে এবং নীচের গড় অতিক্রম করে।

মাল্টি-হোল্ডার ট্রেডিংয়ের কৌশলগুলি হলঃ

  1. ডাব্লুএইচআই সূচক > 0, দামের উত্থানটি ট্র্যাকের বাইরে চলে গেছে, এটি প্রবণতা অনুসরণের ক্ষেত্রে, আরও কিছু করুন।

  2. ডাইভারজেন্সি সূচক < ০, দামের পতন, ট্রেন্ডের বিপরীত অবস্থার অন্তর্গত, খালি করা।

  3. বন্ধের মূল্য > খোলা মূল্য > কেন্দ্রীয় পয়েন্ট পয়েন্ট, এটিকে কেন্দ্রীয় পয়েন্ট পয়েন্টকে আরও বেশি করার সুযোগ হিসাবে বিবেচনা করুন, আরও বেশি করুন।

  4. বন্ধের মূল্যের উপর থেকে বেরিয়ে আসে, এবং বন্ধের মূল্য > চলমান গড়, আরো কিছু করুন

খালি মাথায় ট্রেড করার কৌশলটি হলঃ

  1. মাল্টি-হোল্ডিং সূচক < 0, দামের পতন ট্র্যাকের বিপর্যয় ঘটায়, প্রবণতা অনুসরণের ক্ষেত্রে, খালি করা।

  2. ডাবল-হোল্ডিং সূচক > 0, দামের বৃদ্ধি ট্র্যাকের উপর ভেঙে পড়ে, প্রবণতা বিপরীতের মধ্যে রয়েছে, আরও কিছু করুন।

  3. খোলার মূল্য > বন্ধের মূল্য < সেন্ট্রাল পয়েন্ট পয়েন্ট, একটি ব্রেকিং সেন্ট্রাল ডাইরেক্ট সুযোগ হিসাবে বিবেচনা করা হয়, ডাইরেক্ট।

  4. সমাপ্তির মূল্য নিম্নগামী হয় এবং সমাপ্তির মূল্য < একটি চলমান গড়, খালি করা

সমতল অবস্থানের কৌশলটি সহজ, দাম পুনরায় ভেঙে ওভার-বই ওভার-বিক্রয় চ্যানেলের ক্ষতি বন্ধ করে দেয়।

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

এই কৌশলটির সুবিধাগুলো হলঃ

  1. মাল্টি-হোল্ডিং সূচকগুলি বাজারের গতিবিধি সঠিকভাবে মূল্যায়ন করতে পারে এবং কৌশলটির মূল সূচক।

  2. ওভারবয় ওভারসেল চ্যানেলের সাথে সূচক যুক্ত করে, সম্ভাব্য বিপরীতমুখী সুযোগ খুঁজে পাওয়া যায়।

  3. বেসিক চলমান গড় একটি সহায়ক ফিল্টারিং সিগন্যাল হিসাবে কাজ করে, যা মিথ্যা ব্রেকিং এড়াতে পারে।

  4. কেন্দ্রীয় পয়েন্টগুলি পলিফোসিয়াম সূচকগুলির সাথে মিলিত হয়, উচ্চ সম্ভাব্যতার লেনদেনের পয়েন্টগুলি গঠন করে।

  5. ট্রেন্ড ট্র্যাকিং এবং রিভার্স ট্রেডিং এর সাথে ট্রেডিং করার সুযোগ রয়েছে।

  6. ওভারবই ওভারসেল চ্যানেলের স্টপ লস সুস্পষ্ট এবং সংক্ষিপ্ত, যা ঝুঁকি নিয়ন্ত্রণে সহায়তা করে।

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

এই কৌশলটি নিম্নলিখিত ঝুঁকিগুলিও বহন করেঃ

  1. মাল্টি স্পেস ইন্ডিকেটর ভুল সংকেত দিতে পারে এবং অন্যান্য ইন্ডিকেটর ফিল্টার করতে হবে।

  2. বিরাট ব্যবসায়ের জন্য কঠোর স্টপ লস প্রয়োজন।

  3. চলমান গড়ের চক্রটি ভুলভাবে সেট করা হয়েছে, যা ট্রেন্ড মিস করতে পারে বা মিথ্যা সংকেত তৈরি করতে পারে।

  4. সেন্ট্রাল পয়েন্টগুলোতে সম্ভাব্যতা যাচাইয়ের জন্য পুনর্নিরীক্ষণ প্রয়োজন।

  5. ওভারবই ওভারসেল চ্যানেলের জন্য বিভিন্ন জাতের জন্য অপ্টিমাইজড প্যারামিটার প্রয়োজন।

  6. সূচক প্যারামিটারগুলি মিলছে না, যার ফলে ঘন ঘন লেনদেন হতে পারে।

এই ঝুঁকি মোকাবেলায় নিম্নলিখিত পদক্ষেপ নেওয়া যেতে পারেঃ

  1. অন্যান্য সূচক যেমন কে লাইন, ট্রানজিশন ভ্যালিডেশন পলিহোমিটার সিগন্যালের সাথে মিলিত।

  2. ওভারবয় ওভারসেলিং চ্যানেল স্টপ লস কৌশল কঠোরভাবে অনুসরণ করুন, দ্রুত বন্ধ করুন।

  3. চলমান গড়ের বিভিন্ন প্যারামিটার পরীক্ষা করে সেরা প্যারামিটার খুঁজে বের করুন।

  4. কেন্দ্রীয় পয়েন্ট পয়েন্ট কৌশলের সম্ভাব্যতা যাচাই করার জন্য পর্যাপ্ত পরিমাণে পুনর্নিরীক্ষণ করা।

  5. চ্যানেলের প্যারামিটারগুলিকে অপ্টিমাইজ করুন এবং বিভিন্ন জাতের জন্য সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করুন।

  6. সামগ্রিক সিস্টেম স্থিতিশীল করার জন্য সূচক প্যারামিটারগুলি সামঞ্জস্য করুন।

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

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকেও উন্নত করা যেতে পারেঃ

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

  2. স্বনির্ধারিত চ্যানেল যোগ করা হয়েছে, বাজারের ওঠানামা অনুযায়ী স্বয়ংক্রিয়ভাবে চ্যানেলের পরামিতিগুলিকে সামঞ্জস্য করে। এটি ব্রেকথ্রুয়ের নির্ভুলতা বাড়িয়ে তুলতে পারে।

  3. ডিপ লার্নিং ব্যবহার করে, আপনি আরও পরিবর্তনের সূচকগুলি বের করতে পারেন এবং এন্ট্রি এবং এক্সট্রি কৌশলগুলি অনুকূলিতকরণের জন্য সূচক সেটগুলি তৈরি করতে পারেন।

  4. ট্রেন্ড স্টপ ট্র্যাক করার জন্য একটি উন্নত স্টপ অ্যালগরিদম যুক্ত করা হয়েছে।

  5. প্যারামিটার অপ্টিমাইজেশান এবং সমন্বয় পরীক্ষার জন্য, সামগ্রিক কৌশল স্থিতিশীলতা উন্নত করা।

  6. রিস্ক কন্ট্রোলকে আরও বৈজ্ঞানিক করে তুলতে একটি তহবিল ব্যবস্থাপনা মডিউল যোগ করা হয়েছে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-24 00:00:00
period: 2h
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/
// © amysojexson

//@version=3
strategy(title="Pivots strategy", overlay=true)

// Input settings
// Create a pull-down menu for the pivot type
pivotType = input(title="Pivot Type",
     options=["Daily", "Intraday", "Weekly"], defval="Daily")

// Make toggles for pivot level options
plotPP   = input(title="Plot PP", type=bool, defval=true)
plotS1R1 = input(title="Plot S1 and R1", type=bool, defval=true)
plotS2R2 = input(title="Plot S2 and R2", type=bool, defval=true)
plotS3R3 = input(title="Plot S3 and R3", type=bool, defval=true)
plotTCBC = input(title="Plot S3 and R3", type=bool, defval=true)
// Configure session options
sessRange = input(title="Trading Session",  defval="0800-1600")
showSess  = input(title="Highlight Session?", type=bool, defval=false)

// Enable or disable pivot labels
showLabels = input(title="Show Labels?", type=bool, defval=false)

// Step 2. Calculate indicator values
// Create a function to fetch daily and weekly data
GetData(res, data) =>
    security(syminfo.tickerid, res, data[1],
         lookahead=barmerge.lookahead_on)

// Fetch daily and weekly price data
dailyHigh  = GetData("D", high)
dailyLow   = GetData("D", low)
dailyClose = GetData("D", close)

weeklyHigh  = GetData("W", high)
weeklyLow   = GetData("W", low)
weeklyClose = GetData("W", close)

// Determine session pivot data
// First see how the price bar relates to
// the session time range
inSession = not na(time(timeframe.period, sessRange)[1])
sessStart = inSession and not inSession[1]
sessEnd   = not inSession and inSession[1]

// Determine session price data
sessHigh  = 0.0
sessLow   = 0.0
sessClose = 0.0

sessHigh := sessStart ? high :
     inSession ? max(high, sessHigh[1]) : na
sessLow := sessStart ? low :
     inSession ? min(low, sessLow[1]) : na
sessClose := sessEnd ? close[1] : na

// Compute high, low, close from previous intra-day session
highPrevSess  = 0.0
lowPrevSess   = 0.0
closePrevSess = 0.0

highPrevSess  := sessEnd ? fixnan(sessHigh) : highPrevSess[1]
lowPrevSess   := sessEnd ? fixnan(sessLow) : lowPrevSess[1]
closePrevSess := sessEnd ? fixnan(sessClose) : closePrevSess[1]

// Now figure out which kind of price data
// to use for the pivot calculation
theHigh = if (pivotType == "Daily")
    dailyHigh
else
    if (pivotType == "Intraday")
        highPrevSess
    else
        weeklyHigh

theLow = if (pivotType == "Daily")
    dailyLow
else
    if (pivotType == "Intraday")
        lowPrevSess
    else
        weeklyLow

theClose = if (pivotType == "Daily")
    dailyClose
else
    if (pivotType == "Intraday")
        closePrevSess
    else
        weeklyClose

// Finally calculate the pivot levels
pp = (theHigh + theLow + theClose) / 3
bc= (theHigh + theLow)/2
tc= (pp-bc)+pp

r1 = pp+(.382*(theHigh-theLow))
s1 = pp-(.382*(theHigh-theLow))
r2 = pp +(.618*(theHigh-theLow))
s2 = pp -(.618*(theHigh-theLow))
r3 = pp +(1*(theHigh-theLow))
s3 = pp -(1*(theHigh-theLow))

// Step 3. Output indicator data
// Plot the various pivot levels
plot(series=plotS3R3 ? r3 : na, title="R3",
     style=circles, linewidth=1, color=#0023FF)
plot(series=plotS2R2 ? r2 : na, title="R2",
     style=circles, linewidth=1, color=#1E90FF)
plot(series=plotS1R1 ? r1 : na, title="R1",
     style=circles, linewidth=1, color=#09E0F3)

plot(series=plotTCBC ? tc : na, title="TC",
     style=circles, linewidth=.75, color=#FF00D1)
plot(series=plotPP ? pp : na, title="PP",
     style=circles, linewidth=1, color=#000000)
plot(series=plotTCBC ? bc : na, title="BC",
     style=circles, linewidth=.75, color=#FF00D1)

plot(series=plotS1R1 ? s1 : na, title="S1",
     style=circles, linewidth=1, color=#09E0F3)
plot(series=plotS2R2 ? s2 : na, title="S2",
     style=circles, linewidth=1, color=#1E90FF)
plot(series=plotS3R3 ? s3 : na, title="S3",
     style=circles, linewidth=1, color=#0023FF)

// Display the pivot names on the chart, if applicable
newPivots = (showLabels == false) ? false :
     (pivotType == "Intraday") ? sessEnd :
     (pivotType == "Daily") ? dayofmonth != dayofmonth[1] :
     dayofweek == monday and dayofmonth != dayofmonth[1]

plotchar(series=newPivots and plotS3R3 ? r3 : na,
     char='', text="R3", offset=1,
     location=location.absolute,
     color=#0023FF, title="R3 label")

plotchar(series=newPivots and plotS2R2 ? r2 : na,
     char='', text="R2", offset=1,
     location=location.absolute,
     color=#1E90FF, title="R2 label")

plotchar(series=newPivots and plotS1R1 ? r1 : na,
     char='', text="R1", offset=1,
     location=location.absolute,
     color=#09E0F3, title="R1 label")

plotchar(series=newPivots and plotTCBC ? r1 : na,
     char='', text="TC", offset=1,
     location=location.absolute,
     color=#FF00D1, title="TC label")
     
plotchar(series=newPivots and plotTCBC ? r1 : na,
     char='', text="BC", offset=1,
     location=location.absolute,
     color=#FF00D1, title="BC label")

plotchar(series=newPivots and plotS1R1 ? s1 : na,
     char='', text="S1", offset=1,
     location=location.absolute,
     color=#09E0F3, title="S1 label")

plotchar(series=newPivots and plotS2R2 ? s2 : na,
     char='', text="S2", offset=1,
     location=location.absolute,
     color=#1E90FF, title="S2 label")

plotchar(series=newPivots and plotS3R3 ? s3 : na,
     char='', text="S3", offset=1,
     location=location.absolute,
     color=#0023FF, title="S3 label")

// Highlight the intra-day price data session on the chart
bgcolor(color=showSess and inSession and (pivotType == "Intraday") ?
     orange : na, transp=95)

// Step 4. Create indicator alerts
alertcondition(condition=cross(close, s3),
     title="Pivot S3 Cross",
     message="Prices crossed Pivot S3 level")

alertcondition(condition=cross(close, s2),
     title="Pivot S2 Cross",
     message="Prices crossed Pivot S2 level")

alertcondition(condition=cross(close, s1),
     title="Pivot S1 Cross",
     message="Prices crossed Pivot S1 level")
     
alertcondition(condition=cross(close, tc),
     title="Pivot TC Cross",
     message="Prices crossed Pivot TC level")

alertcondition(condition=cross(close, pp),
     title="Pivot PP Cross",
     message="Prices crossed the main Pivot Point level")
     
alertcondition(condition=cross(close, bc),
     title="Pivot BC Cross",
     message="Prices crossed Pivot BC level")

alertcondition(condition=cross(close, r1),
     title="Pivot R1 Cross",
     message="Prices crossed Pivot R1 level")

alertcondition(condition=cross(close, r2),
     title="Pivot R2 Cross",
     message="Prices crossed Pivot R2 level")

alertcondition(condition=cross(close, r3),
     title="Pivot R3 Cross",
     message="Prices crossed Pivot R3 level")
    
MA = sma(close, 20)
plot(MA, color=red)

Factor				= input(2, type=float)
Pd					= input(10, minval=1,maxval = 100)
Up					= hl2-(Factor*atr(Pd))
Dn					= hl2+(Factor*atr(Pd))
TrendUp				= 0.0
TrendUp				:= close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown			= 0.0
TrendDown			:= close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
Trend				= 0.0
Trend 				:= close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl 				= Trend==1? TrendUp: TrendDown

plot(Tsl, color=blue)

if close>open
    if open<pp
        if close>pp
            if close>MA
                strategy.entry("long", true) 
if close<open
    if open>pp
        if close<pp
            if close<MA
                strategy.entry("short", false) 
                
strategy.close("long", when = open<Tsl)
strategy.close("short", when = open>Tsl)