মুভিং এভারেজ এবং ইন্ট্রাডে প্যাটার্নের উপর ভিত্তি করে বুদ্ধিমান ট্রেইলিং স্টপ লস কৌশল

SMA MA18 ATR
সৃষ্টির তারিখ: 2025-01-17 16:04:09 অবশেষে সংশোধন করুন: 2025-01-17 16:04:09
অনুলিপি: 4 ক্লিকের সংখ্যা: 361
1
ফোকাস
1617
অনুসারী

মুভিং এভারেজ এবং ইন্ট্রাডে প্যাটার্নের উপর ভিত্তি করে বুদ্ধিমান ট্রেইলিং স্টপ লস কৌশল

ওভারভিউ

এটি ১৮ দিনের মুভিং এভারেজ (SMA18) এর উপর ভিত্তি করে একটি কৌশল, যা ইন্ট্রাডে ট্রেডিং প্যাটার্ন স্বীকৃতি এবং একটি স্মার্ট ট্রেইলিং স্টপ মেকানিজমের সাথে মিলিত। এই কৌশলটি মূলত মূল্য এবং SMA18 এর মধ্যে সম্পর্ক পর্যবেক্ষণ করে, ইন্ট্রাডে উচ্চ এবং নিম্ন পয়েন্টগুলিকে একত্রিত করে এবং সঠিক সময়ে দীর্ঘ অবস্থানে প্রবেশ করে। কৌশলটি একটি নমনীয় স্টপ-লস পরিকল্পনা গ্রহণ করে, যা একটি নির্দিষ্ট স্টপ-লস পয়েন্ট অথবা দুই দিনের সর্বনিম্ন পয়েন্টকে ট্রেলিং স্টপ-লস বেঞ্চমার্ক হিসাবে ব্যবহার করতে পারে।

কৌশল নীতি

কৌশলটির মূল যুক্তিতে নিম্নলিখিত মূল উপাদানগুলি অন্তর্ভুক্ত রয়েছে:

  1. প্রবেশের শর্তগুলি মূল্যের আপেক্ষিক অবস্থান এবং 18-দিনের মুভিং এভারেজের উপর ভিত্তি করে আপনি প্রবেশ করতে বেছে নিতে পারেন যখন এটি চলমান গড় ভেঙ্গে যায় বা চলমান গড়ের উপরে প্রবেশ করতে পারেন।
  2. ইন্ট্রাডে কে-লাইন প্যাটার্ন বিশ্লেষণ করে, অভ্যন্তরীণ কে-লাইন (ইনসাইড বার) প্যাটার্নে বিশেষ মনোযোগ দিয়ে, আমরা প্রবেশের সঠিকতা উন্নত করতে পারি।
  3. সপ্তাহের বিভিন্ন ট্রেডিং দিনের কর্মক্ষমতা বৈশিষ্ট্যের উপর ভিত্তি করে, আপনি নির্দিষ্ট দিনে বেছে বেছে ট্রেড করতে পারেন।
  4. লেনদেনের সম্ভাবনা বাড়ানোর জন্য নিম্ন পয়েন্টের উপরে একটি ছোট প্রিমিয়াম সহ একটি সীমা অর্ডার ব্যবহার করে প্রবেশ মূল্য সেট করা হয়।
  5. স্টপ লস মেকানিজম দুটি মোড সমর্থন করে: একটি হল এন্ট্রি মূল্যের উপর ভিত্তি করে একটি নির্দিষ্ট স্টপ লস, এবং অন্যটি হল আগের দুই ট্রেডিং দিনের সর্বনিম্ন পয়েন্টের উপর ভিত্তি করে একটি ট্রেলিং স্টপ লস।

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

  1. প্রযুক্তিগত সূচক এবং মূল্য নিদর্শনগুলির সাথে মিলিত, প্রবেশ সংকেতগুলি আরও নির্ভরযোগ্য
  2. নমনীয় ট্রেডিং সময় নির্বাচন পদ্ধতি বিভিন্ন বাজার বৈশিষ্ট্যের জন্য অপ্টিমাইজ করা যেতে পারে
  3. ইন্টেলিজেন্ট স্টপ-লস প্ল্যান শুধুমাত্র লাভ রক্ষা করে না বরং দামের ওঠানামার জন্য যথেষ্ট জায়গাও দেয়
  4. কৌশলগত পরামিতিগুলি অত্যন্ত সামঞ্জস্যযোগ্য এবং বিভিন্ন বাজার পরিবেশের সাথে খাপ খাইয়ে নিতে পারে
  5. অভ্যন্তরীণ কে-লাইন নিদর্শনগুলির স্ক্রীনিংয়ের মাধ্যমে কার্যকরভাবে মিথ্যা সংকেতগুলি হ্রাস করুন

কৌশলগত ঝুঁকি

  1. অত্যন্ত অস্থির বাজারে, নির্দিষ্ট স্টপ অকাল প্রস্থান হতে পারে
  2. দ্রুত বিপরীতমুখী বাজারের জন্য, ট্রেলিং স্টপ কম লাভে লক হতে পারে
  3. সাইডওয়ে ট্রেডিং পর্বের সময়, ঘন ঘন অভ্যন্তরীণ মোমবাতি অত্যধিক ট্রেডিং হতে পারে পাল্টা ব্যবস্থা:
  • বাজারের অস্থিরতার উপর ভিত্তি করে গতিশীলভাবে স্টপ লস দূরত্ব সামঞ্জস্য করুন
  • ট্রেন্ড নিশ্চিতকরণ সূচক যোগ করুন
  • নিম্নমানের ট্রেড ফিল্টার করার জন্য একটি ন্যূনতম লাভের লক্ষ্য নির্ধারণ করুন

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

  1. স্টপ লস দূরত্ব গতিশীলভাবে সামঞ্জস্য করতে অস্থিরতা সূচক (যেমন ATR) প্রবর্তন করুন
  2. ট্রেডিং ভলিউম বিশ্লেষণের মাত্রা বাড়ান এবং সিগন্যালের নির্ভরযোগ্যতা উন্নত করুন
  3. ঐতিহাসিক কর্মক্ষমতার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ট্রেডিং টাইম অপ্টিমাইজ করতে স্মার্ট তারিখ নির্বাচন অ্যালগরিদম তৈরি করুন
  4. দুর্বল প্রবণতা এড়াতে ট্রেন্ড শক্তি ফিল্টার যোগ করা হয়েছে
  5. রূপগত স্বীকৃতির নির্ভুলতা উন্নত করতে অভ্যন্তরীণ কে-লাইন স্বীকৃতি অ্যালগরিদম অপ্টিমাইজ করুন

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zweiprozent

strategy('Buy Low over 18 SMA Strategy', overlay=true, default_qty_value=1)
xing = input(false, title='crossing 18 sma?')
sib = input(false, title='trade inside Bars?')
shortinside = input(false, title='trade inside range bars?')
offset = input(title='offset', defval=0.001)
belowlow = input(title='stop below low minus', defval=0.001)
alsobelow = input(false, title='Trade only above 18 sma?')
tradeabove = input(false, title='Trade with stop above order?')
trailingtwo = input(false, title='exit with two days low trailing?')


insideBar() =>  //and high <= high[1] and low >= low[1] ? 1 : 0
    open <= close[1] and close >= open[1] and close <= close[1] or open >= close[1] and open <= open[1] and close <= open[1] and close >= close[1] ? 1 : 0

inside() =>
    high <= high[1] and low >= low[1] ? 1 : 0
enterIndex = 0.0
enterIndex := enterIndex[1]

inPosition = not na(strategy.position_size) and strategy.position_size > 0
if inPosition and na(enterIndex)
    enterIndex := bar_index
    enterIndex



//if strategy.position_size <= 0 

//    strategy.exit("Long", stop=low[0]-stop_loss,comment="stop loss")


//if not na(enterIndex) and bar_index - enterIndex + 0 >= 0 

//    strategy.exit("Long", stop=low[0]-belowlow,comment="exit")

//    enterIndex := na

T_Low = request.security(syminfo.tickerid, 'D', low[0])
D_High = request.security(syminfo.tickerid, 'D', high[1])
D_Low = request.security(syminfo.tickerid, 'D', low[1])
D_Close = request.security(syminfo.tickerid, 'D', close[1])
D_Open = request.security(syminfo.tickerid, 'D', open[1])

W_High2 = request.security(syminfo.tickerid, 'W', high[1])
W_High = request.security(syminfo.tickerid, 'W', high[0])
W_Low = request.security(syminfo.tickerid, 'W', low[0])
W_Low2 = request.security(syminfo.tickerid, 'W', low[1])
W_Close = request.security(syminfo.tickerid, 'W', close[1])
W_Open = request.security(syminfo.tickerid, 'W', open[1])

//longStopPrice  = strategy.position_avg_price * (1 - stopl)
// Go Long - if prev day low is broken and stop loss prev day low
entryprice = ta.sma(close, 18)

//(high[0]<=high[1]or close[0]<open[0]) and low[0]>vwma(close,30) and time>timestamp(2020,12,0,0,0)

showMon = input(true, title='trade tuesdays?')
showTue = input(true, title='trade wednesdayy?')
showWed = input(true, title='trade thursday?')
showThu = input(true, title='trade friday?')
showFri = input(true, title='trade saturday?')
showSat = input(true, title='trade sunday?')
showSun = input(true, title='trade monday?')

isMon() =>
    dayofweek(time('D')) == dayofweek.monday and showMon
isTue() =>
    dayofweek(time('D')) == dayofweek.tuesday and showTue
isWed() =>
    dayofweek(time('D')) == dayofweek.wednesday and showWed
isThu() =>
    dayofweek(time('D')) == dayofweek.thursday and showThu
isFri() =>
    dayofweek(time('D')) == dayofweek.friday and showFri
isSat() =>
    dayofweek(time('D')) == dayofweek.saturday and showSat
isSun() =>
    dayofweek(time('D')) == dayofweek.sunday and showSun


clprior = close[0]
entryline = ta.sma(close, 18)[1]
//(isMon() or isTue()or isTue()or  isWed() 
noathigh = high < high[1] or high[2] < high[3] or high[1] < high[2] or low[1] < ta.sma(close, 18)[0] and close > ta.sma(close, 18)[0]

if noathigh and time > timestamp(2020, 12, 0, 0, 0) and (alsobelow == false or high >= ta.sma(close, 18)[0]) and (isMon() or isTue() or isWed() or isThu() or isFri() or isSat() or isSun()) and (high >= high[1] or sib or low <= low[1])  //((sib == false and inside()==true) or inside()==false) and (insideBar()==true or shortinside==false)
    if tradeabove == false
        strategy.entry('Long', strategy.long, limit=low + offset * syminfo.mintick, comment='long')
    if tradeabove == true and (xing == false or clprior < entryline)  // and high<high[1] 
        strategy.entry('Long', strategy.long, stop=high + offset * syminfo.mintick, comment='long')


//if time>timestamp(2020,12,0,0,0) and isSat()  
//    strategy.entry("Long", strategy.long, limit=0, comment="long")


//strategy.exit("Long", stop=low-400*syminfo.mintick)

//strategy.exit("Long", stop=strategy.position_avg_price-10*syminfo.mintick,comment="exit")
//strategy.exit("Long", stop=low[1]-belowlow*syminfo.mintick, comment="stop")

if strategy.position_avg_price > 0 and trailingtwo == false and close > strategy.position_avg_price
    strategy.exit('Long', stop=strategy.position_avg_price, comment='stop')

if strategy.position_avg_price > 0 and trailingtwo == false and (low > strategy.position_avg_price or close < strategy.position_avg_price)
    strategy.exit('Long', stop=low[0] - belowlow * syminfo.mintick, comment='stop')

if strategy.position_avg_price > 0 and trailingtwo
    strategy.exit('Long', stop=ta.lowest(low, 2)[0] - belowlow * syminfo.mintick, comment='stop')