এই কৌশলটি কেল্টনার চ্যানেল সূচকের উপর ভিত্তি করে একটি পলব্যাক ট্রেডিং কৌশল ডিজাইন করে। এটি কেল্টনার চ্যানেলের উপরের এবং নীচের রেলগুলির সাথে দামের তুলনা করে সম্ভাব্য মূল্য বিপরীতের সময় নির্ধারণ করে এবং উপযুক্ত দীর্ঘ এবং সংক্ষিপ্ত অবস্থান নেয়।
এই কৌশলটি মূল্যের প্রবণতা বিচার করতে কেল্টনার চ্যানেল সূচক ব্যবহার করে। কেল্টনার চ্যানেলটি একটি চলমান গড় এবং গড় সত্য পরিসীমা (এটিআর) নিয়ে গঠিত। উপরের রেলটি চলমান গড়ের সাথে N গুণ ATR এর সমান; নিম্ন রেলটি চলমান গড় বিয়োগ N গুণ ATR এর সমান। যখন দাম নীচে থেকে উপরের দিকে চ্যানেলের নিম্ন রেলটি ভেঙে যায়, তখন এটি বিবেচনা করা হয় যে উত্থান শক্তি বাড়ানো হয়েছে এবং দীর্ঘ অবস্থান নেওয়া যেতে পারে; যখন দাম উপরের থেকে উপরের রেলটি ভেঙে দেয়, তখন এটি বিবেচনা করা হয় যে হ্রাস শক্তি বাড়ানো হয়েছে এবং শর্ট অবস্থান নেওয়া যেতে পারে।
এছাড়াও, প্রত্যাহারের সুযোগগুলি বিচার করার কৌশলটির ভিত্তি হ'ল দামটি চ্যানেলের সীমানা আবার স্পর্শ করে বা ভেঙে দেয়। উদাহরণস্বরূপ, নিম্ন রেলটি ভেঙে দেওয়ার জন্য দাম বাড়ার পরে, যদি এটি উপরের রেলটি স্পর্শ না করে নিম্ন রেলটি স্পর্শ করতে আবার পড়ে তবে এটি একটি দীর্ঘ প্রত্যাহারের সুযোগ। কৌশলটি এই সময়ে দীর্ঘ অবস্থান খুলবে।
এটি একটি ট্রেডিং কৌশল যা মূল্যের পলব্যাক বৈশিষ্ট্যগুলি ব্যবহার করে। এর সুবিধাগুলি হলঃ
এই কৌশলটির প্রধান ঝুঁকিগুলি হলঃ
প্রতিরোধ ব্যবস্থাঃ
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
এই কৌশলটি প্রবণতা বিচার এবং পুলব্যাক ট্রেডিং পদ্ধতি একীভূত করে এবং বিপরীতমুখী প্রবণতা ক্যাপচার করার ক্ষেত্রে অনন্য সুবিধা রয়েছে। প্যারামিটারগুলি সামঞ্জস্য করে এবং ফাংশনগুলি প্রসারিত করে, কৌশলটির স্থিতিশীলতা এবং লাভজনকতা আরও বাড়ানো যেতে পারে।
/*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")