
এই কৌশলটি কেল্টনার চ্যানেল সূচকগুলির উপর ভিত্তি করে একটি প্রত্যাহারের ট্রেডিং কৌশল ডিজাইন করেছে। এই কৌশলটি কেল্টনার চ্যানেলের উত্থান-পতনের সাথে দামের তুলনা করে, যখন দামটি বিপরীত হতে পারে তা নির্ধারণ করে এবং যথাযথ পল্টু-কোয়ার্টি অপারেশন করে।
এই কৌশলটি কেল্টনার চ্যানেলের সূচক ব্যবহার করে মূল্যের প্রবণতা নির্ধারণ করে। কেল্টনার চ্যানেলটি গড় লাইন এবং গড় প্রকৃত তরঙ্গদৈর্ঘ্য (ATR) দ্বারা গঠিত। চ্যানেলের উপরের ট্র্যাকটি গড় লাইন যোগ ATR এর N গুণ সমান; নীচের ট্র্যাকটি গড় লাইন থেকে ATR এর N গুণ কম। যখন দাম নীচে থেকে উপরে উঠে যায় এবং চ্যানেলের নীচের ট্র্যাকটি ভেঙে যায়, তখন মনে করা হয় যে একাধিক শক্তি বৃদ্ধি পায়, আরও কিছু করা যায়। যখন দাম উপরে থেকে নীচে থেকে চ্যানেলের উপরের ট্র্যাকটি ভেঙে যায়, তখন মনে করা হয় যে শূন্য শক্তি বৃদ্ধি পায়, শূন্য করা যায়।
এছাড়াও, এই কৌশলটি পুনরায় টানার সুযোগের ভিত্তিতে মূল্যায়ন করে যখন দাম পুনরায় স্পর্শ করে বা চ্যানেলের সীমানাটি ভেঙে দেয়। উদাহরণস্বরূপ, দামের উত্থানটি নীচের ট্র্যাকটি ভেঙে দেয়, এটি আবার নীচের ট্র্যাকটি স্পর্শ না করেই আবার পড়ে যায়, এটি একটি পুনরায় টানার সুযোগ। কৌশলটি এই সময়ে আরও বেশি পজিশন খুলবে।
এটি একটি কৌশল যা মূল্যের প্রত্যাহারের বৈশিষ্ট্য ব্যবহার করে লেনদেন করে। এর সুবিধা হলঃ
এই কৌশলটির প্রধান ঝুঁকিগুলো হলঃ
প্রতিকারঃ
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
এই কৌশলটি প্রবণতা নির্ণয় এবং ট্রেডিং প্রত্যাহারের পদ্ধতিকে একত্রিত করে, বিপরীতমুখী পরিস্থিতি ধরার ক্ষেত্রে এটির অনন্য সুবিধা রয়েছে। প্যারামিটার সমন্বয় এবং বৈশিষ্ট্য প্রসারিত করে কৌশলটির স্থায়িত্ব এবং লাভজনকতা আরও বাড়ানো যেতে পারে।
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)
price = close
// build Keltner
keltnerLength = input(defval=200, minval=1, title="Keltner EMA Period Length")
keltnerATRLength = input(defval=200, minval=1, title="Keltner ATR Period Length (the same as EMA length in classic Keltner Channels)")
keltnerDeviation = input(defval=8, minval=1, maxval=15, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
enterOnBorderTouchFromInside = input(type=bool, defval=false, title="Enter on border touch from inside? (by default from outside, which is less risky but less profitable)")
SL = input(defval=50, minval=0, maxval=10000, title="Stop loss in ticks (leave zero to skip)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerATRLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation
buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)
tradeSize = input(defval=1, minval=1, title="Trade size")
if ( enterOnBorderTouchFromInside and crossunder(price, bottom) )
strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
else
if( crossover(price, bottom) )
strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
if( crossover(price,EMA) and closeOnEMATouch )
strategy.close("BUY")
if( 0 != SL )
strategy.exit("EXIT BUY", "BUY", qty=tradeSize, loss=SL)
strategy.exit("EXIT SELL", "SELL", qty=tradeSize, loss=SL)
if( enterOnBorderTouchFromInside and crossover(price, bottom) )
strategy.entry("SELL", strategy.long, qty=tradeSize, comment="SELL")
else
if ( crossunder(price, top) )
strategy.entry("SELL", strategy.short, qty=tradeSize, comment="SELL")
if( crossunder(price, EMA) and closeOnEMATouch )
strategy.close("SELL")