এই কৌশলটি ট্রেডিং সিগন্যাল ফিল্টারিংয়ের জন্য TDFI ভলিউম ভ্যালিডেশন সূচকের সাথে মিলিত একটি দ্বৈত মসৃণ চলমান গড় সিস্টেমকে প্রাথমিক ট্রেডিং সিগন্যাল হিসাবে ব্যবহার করে, যাতে নন-ট্রেন্ডিং মার্কেটে ভুল ট্রেড হ্রাস করার সময় মসৃণ চলমান গড়ের সুবিধাগুলি ব্যবহার করা যায়।
কৌশলটি প্রাথমিক ট্রেডিং সিগন্যাল হিসাবে বিভিন্ন প্যারামিটার কনফিগারেশনের সাথে মসৃণ চলমান গড়ের দুটি সেট ব্যবহার করে। প্রথমে প্রাথমিক নিশ্চিতকরণ হিসাবে একটি 8-পরিয়ড দ্রুত মসৃণ চলমান গড় ব্যবহার করা হয়, তারপরে কিছুটা ধীর 16-পরিয়ড মসৃণ চলমান গড় দ্বিতীয় নিশ্চিতকরণ হিসাবে কাজ করে। যখন দ্রুত এমএ একটি ক্রয় সংকেত দেয়, যদি ধীর এমএও শেষ 1-2 বারের মধ্যে একই দিকের সংকেত দেয় তবে একটি দীর্ঘ অবস্থান খোলা হয়। যখন দ্রুত এমএ একটি বিক্রয় সংকেত দেয়, যদি ধীর এমএও শেষ 1-2 বারের মধ্যে একই দিকের সংকেত দেয়, তখন একটি শর্ট অবস্থান খোলা হয়। দ্বিতীয় নিশ্চিতকরণ এমএ দিক বিপরীত হলে প্রস্থানগুলি ট্রিগার হয়। এছাড়াও, টিডিএফআই ভলিউম সূচকটি বিপথে যাওয়ার জন্য বিপথে যাওয়ার সংকেতগুলি ফিল্টার করার জন্য ট্রেডিং ভলিউম সনাক্ত করতে ব্যবহৃত হয়। ট্রেডগুলি কেবলমাত্র প্রত্যাশার সাথে সামঞ্জস্যপূর্ণ হলে নেওয়া হয়।
ঝুঁকি কমাতে নিম্নলিখিত অপ্টিমাইজেশান দিক বিবেচনা করা যেতে পারেঃ
সামগ্রিকভাবে এটি একটি সাধারণ প্রবণতা অনুসরণকারী কৌশল। টিডিএফআই ভলিউম ফিল্টারের সাথে মিলিত দ্বৈত মসৃণ এমএ সিস্টেমটি প্রবণতা-ট্র্যাকিং ক্ষমতা কার্যকরভাবে ব্যবহার করতে পারে যখন প্রবণতাহীন বাজারে ভুল সংকেতের হার হ্রাস করে। প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে এটি বিভিন্ন সময়সীমা এবং পণ্যগুলিতে অভিযোজিত হতে পারে। তবে এটি যান্ত্রিক প্রয়োগের চেয়ে প্যারামিটার টুইটিংয়ের উপর বেশি নির্ভর করে। প্রবণতা বিপরীত সনাক্তকরণ এবং প্যারামিটার টিউনিং প্রভাবের অভাব লক্ষ্য করা উচিত। সামগ্রিকভাবে একটি পরিষ্কার এবং সরল পদ্ধতি, আরও অপ্টিমাইজেশন এবং অনুশীলনের যোগ্য।
/*backtest start: 2022-10-06 00:00:00 end: 2023-10-12 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Designed per No Nonsense Forex VP rules //Made to be as modular as possible, so we can swap the indicators in and out. //Originated from causecelebre //Tried to put in as much VP rules as possible /////////////////////////////////////////////////// //Rules Implemented: /////////////////////////////////////////////////// // - SL 1.5 x ATR // - TP 1 x ATR // // - Entry conditions //// - Entry within first confirmation cross over and 1 candle of second confirmation + volume // - Exit conditions //// - Exit on exit indicator or when baseline or confirmation flip /////////////////////////////////////////////////// //Trades entries /////////////////////////////////////////////////// // - First entry L1 or S1 with standard SL and TP /////////////////////////////////////////////////// //Included Indicators and settings /////////////////////////////////////////////////// // - Confirmtion = SSL 8, 16 // - Volume = TDFI 6 /////////////////////////////////////////////////// //Credits // Strategy causecelebre https://www.tradingview.com/u/causecelebre/ // TDFI causecelebre https://www.tradingview.com/u/causecelebre/ // SSL Channel ErwinBeckers https://www.tradingview.com/u/ErwinBeckers/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // strategy(title="NNFX Strategy 3 Indicator Template | jh", overlay = true, pyramiding=0, initial_capital=20000, currency=currency.USD, calc_on_order_fills=0,default_qty_type=strategy.fixed, default_qty_value=10000) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // **** Set the main stuff **** /////////////////////////////////////////////////// //Price price = close ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ATR stuff /////////////////////////////////////////////////// slMultiplier = input(1.5, "SL") tpMultiplier = input(1, "TP") atrlength = input(title="ATR Length", defval=14, minval=1) atrsmoothing = input(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"]) ma_function(source, atrlength) => if atrsmoothing == "RMA" rma(source, atrlength) else if atrsmoothing == "SMA" sma(source, atrlength) else if atrsmoothing == "EMA" ema(source, atrlength) else wma(source, atrlength) //plot(ma_function(tr(true), atrlength), title = "ATR", color=#991515, transp=0) atr = ma_function(tr(true), atrlength) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // **** Confirmation 1 Fast **** /////////////////////////////////////////////////// /////////////////////////////////////////////////// //SSL 6 /////////////////////////////////////////////////// ssllen1=input(title="SSL 1 Length Period", defval=8) smaHigh1=sma(high, ssllen1) smaLow1=sma(low, ssllen1) Hlv1 = na Hlv1 := close > smaHigh1 ? 1 : close < smaLow1 ? -1 : Hlv1[1] sslDown1 = Hlv1 < 0 ? smaHigh1: smaLow1 sslUp1 = Hlv1 < 0 ? smaLow1 : smaHigh1 plot(sslDown1, "SSL Down", linewidth=1, color=red) plot(sslUp1, "SSL Up", linewidth=1, color=lime) /////////////////////////////////////////////////// //Confirm Signals /////////////////////////////////////////////////// c_Up = sslUp1 c_Down =sslDown1 //Signals based on crossover c_cross_Long = crossover(c_Up, c_Down) c_cross_Short = crossover(c_Down, c_Up) //Signals based on signal position c_trend_Long = c_Up > c_Down ? 1 : 0 c_trend_Short = c_Down > c_Up ? 1 : 0 confirm_Long = c_cross_Long confirm_Short = c_cross_Short plotshape(c_cross_Long, color = green, style=shape.triangleup, location=location.top) plotshape(c_cross_Short, color = red, style=shape.triangledown, location=location.top) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // **** Confirmation 2 Slow **** /////////////////////////////////////////////////// /////////////////////////////////////////////////// //SSL 30 /////////////////////////////////////////////////// /////////////////////////////////////////////////// //SSL /////////////////////////////////////////////////// ssllen2=input(title="SSL 2 Length Period", defval=16) smaHigh2=sma(high, ssllen2) smaLow2=sma(low, ssllen2) Hlv2 = na Hlv2 := close > smaHigh2 ? 1 : close < smaLow2 ? -1 : Hlv2[1] sslDown2 = Hlv2 < 0 ? smaHigh2: smaLow2 sslUp2 = Hlv2 < 0 ? smaLow2 : smaHigh2 plot(sslDown2, "SSL Down", linewidth=1, color=orange) plot(sslUp2, "SSL Up", linewidth=1, color=blue) /////////////////////////////////////////////////// //Confirm Signals /////////////////////////////////////////////////// c2_Up = sslUp2 c2_Down = sslDown2 //Signals based on crossover c2_cross_Long = crossover(c2_Up, c2_Down) c2_cross_Short = crossover(c2_Down, c2_Up) //Signals based on signal position c2_trend_Long = c2_Up > c2_Down ? 1 : 0 c2_trend_Short = c2_Down > c2_Up ? 1 : 0 confirm2_Long = c2_trend_Long confirm2_Short = c2_trend_Short plotshape(c2_cross_Long, color = green, style=shape.triangleup, location=location.bottom) plotshape(c2_cross_Short, color = red, style=shape.triangledown, location=location.bottom) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // **** Volume Indicator Start **** /////////////////////////////////////////////////// /////////////////////////////////////////////////// //TDFI /////////////////////////////////////////////////// lookback = input(6, title = "TDFI Lookback") filterHigh = input(0.05, title = "Filter High") filterLow = input(-0.05, title = "Filter Low") mma = ema(price * 1000, lookback) smma = ema(mma, lookback) impetmma = mma - mma[1] impetsmma= smma - smma[1] divma = abs(mma - smma) averimpet = (impetmma + impetsmma) / 2 number = averimpet pow = 3 result = na for i = 1 to pow - 1 if i == 1 result := number result := result * number tdf = divma * result ntdf = tdf / highest(abs(tdf), lookback * 3) /////////////////////////////////////////////////// //Volume Signals /////////////////////////////////////////////////// v_Long = ntdf > filterHigh ? 1 : 0 v_Short = filterLow > ntdf ? 1 : 0 volumeLong = v_Long volumeShort = v_Short ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // **************************** Logic to handle NNFX rules **************************** ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Checking for confirmation indication with 1 candle difference for second confirmtion and volume enterLong = confirm_Long and (confirm2_Long[0] or confirm2_Long[1]) and (volumeLong[0] or volumeLong[1]) ? 1 : 0 enterShort = confirm_Short and (confirm2_Short[0] or confirm2_Short[1]) and (volumeShort[0] or volumeShort[1]) ? 1 : 0 exitLong = c_cross_Short or c2_cross_Short ? 1 : 0 exitShort = c_cross_Long or c2_cross_Long ? 1 : 0 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Entries and Exits ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (year>2009) //Long entries with standard 1.5 ATR for SL, 1 ATR for TP long_sl = price - (atr * slMultiplier) long_tp = price + (atr * tpMultiplier) //Short entries with standard 1.5 ATR for SL, 1 ATR for TP short_sl = price + (atr * slMultiplier) short_tp = price - (atr * tpMultiplier) strategy.close("L1", when = exitLong) strategy.close("S1", when = exitShort) strategy.exit("L Limit Exit", "L1", stop = long_sl, limit = long_tp) strategy.exit("S Limit Exit", "S1", stop = short_sl, limit = short_tp) strategy.order("L1", strategy.long, when = enterLong) strategy.order("S1", strategy.short, when = enterShort) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //End //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////