এটি একটি ট্রেডিং কৌশল যা ট্রেডগুলিতে প্রবেশের জন্য ধ্রুবক আপট্রেন্ডের সাথে চলমান গড় ক্রসওভার প্যাটার্নগুলি ব্যবহার করে। যখন দ্রুত এমএ ধীর এমএ এর উপরে অতিক্রম করে, তখন একটি সোনার ক্রসওভার সংকেত উত্পন্ন হয়। ক্রসওভারের পরে যদি আপট্রেন্ড অব্যাহত থাকে তবে একটি দীর্ঘ অবস্থান খোলা যেতে পারে। যখন দাম স্টপ লস বা লাভের স্তরে পৌঁছে যায়, তখন স্টপ লস বা লাভের জন্য অবস্থানটি বন্ধ করা যেতে পারে।
এই কৌশলটি মূলত প্রবেশ সংকেতের জন্য চলমান গড় ক্রসওভারের উপর ভিত্তি করে। বিশেষত, একটি দ্রুত এমএ (এমএ 1) এবং ধীর এমএ (এমএ 2) সংজ্ঞায়িত করা হয়। যখন এমএ 1 এমএ 2 এর উপরে অতিক্রম করে, এটি একটি দীর্ঘ যেতে সংকেত।
স্বল্পমেয়াদী ক্রসওভারের ভুল সংকেত এড়াতে, একটি কোণীয় থ্রেশহোল্ড যুক্ত করা হয়, যাতে MA2 কোণটি একটি সেট থ্রেশহোল্ডের উপরে থাকলে কেবল একটি ক্রয় সংকেত ট্রিগার করা হয়। এটি কিছু অ-ট্রেন্ডিং স্বল্পমেয়াদী সমাবেশকে ফিল্টার করে।
এই কৌশলটি স্টপ লস এবং ট্যাক লাভও সেট করে। স্টপ লস হঠাৎ বাজারের বিপরীতের ক্ষেত্রে ক্ষতি এড়ায়, যখন লাভের মধ্যে লাভের লকগুলি নেয়। এগুলি প্রবেশ মূল্য থেকে শতাংশের পরিসীমা হিসাবে সেট করা হয়।
যখন মুনাফা পয়েন্ট নিতে মূল্যের সমাবেশ, কৌশল মুনাফা গ্রহণের জন্য দীর্ঘ বন্ধ হবে। এছাড়াও, যদি সমাবেশ শক্তিশালী হয়, কৌশল গড় বিপরীত জন্য একটি ছোট অবস্থান খুলবে।
এটি একটি সহজ এবং স্বজ্ঞাত প্রবণতা অনুসরণকারী কৌশল। সুবিধাগুলি হলঃ
কিছু ঝুঁকি আছে যা লক্ষ্য করা উচিতঃ
কৌশলটি আরও উন্নত করার কিছু উপায়ঃ
সামগ্রিকভাবে এটি একটি সহজ এবং ব্যবহারিক প্রবণতা অনুসরণকারী কৌশল। এর পক্ষে তবে ঝুঁকিও রয়েছে। প্যারামিটার টিউনিং, সর্বোত্তম সূচক, স্টপ লস সেটিংস ইত্যাদির মতো আরও পরিমার্জন এটি উন্নত করতে পারে। তবে কোনও কৌশল সিস্টেমিক ঝুঁকি পুরোপুরি দূর করে না। ঝুঁকি ব্যবস্থাপনা বিচক্ষণ ব্যবসায়ের মূল চাবিকাঠি।
/*backtest start: 2023-11-05 00:00:00 end: 2023-11-12 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //written by markjames12210@gmail.com //@version=5 strategy(title="MJ-Dual Moving Average",initial_capital=10000,overlay=false) // import TradingView/ZigZag/6 as ZigZagLib // // Create Zig Zag instance from user settings. // var zigZag = ZigZagLib.newInstance( // ZigZagLib.Settings.new( // input.float(5.0, "Price deviation for reversals (%)", 0.00001, 100.0, 0.5, "0.00001 - 100"), // input.int(10, "Pivot legs", 2), // input(#2962FF, "Line color"), // input(true, "Extend to last bar"), // input(true, "Display reversal price"), // input(true, "Display cumulative volume"), // input(true, "Display reversal price change", inline = "priceRev"), // input.string("Absolute", "", ["Absolute", "Percent"], inline = "priceRev"), // true) // ) // // Update 'zigZag' object on each bar with new pivots, volume, lines, labels. // zigZag.update() // // plot(zigZag.pivots, "zigZag") ma1= ta.sma(close,8) ma2= ta.sma(close,21) angleCriteria = input.int(title="Angle", defval=7, minval=1, maxval=13) i_lookback = input.int(2, "Angle Period", minval = 1) i_atrPeriod = input.int(10, "ATR Period", minval = 1) i_angleLevel = input.int(6, "Angle Level", minval = 1) i_maSource = input.source(close, "MA Source") TP = input.float(1, "TP", minval = 0.1) SL = input.float(1, "SL", minval = 0.1) f_angle(_src, _lookback, _atrPeriod) => rad2degree = 180 / 3.141592653589793238462643 //pi ang = rad2degree * math.atan((_src[0] - _src[_lookback]) / ta.atr(_atrPeriod)/_lookback) ang _angle = f_angle(ma2, i_lookback, i_atrPeriod) plot(ta.atr(i_atrPeriod), "atr") // plot(ma1,color=#FF0000) // plot(ma2,color=#00FF00) crosso=ta.crossover(ma1,ma2) crossu=ta.crossunder(ma1,ma2) _lookback = 15 f_somethingHappened(_cond, _lookback) => bool _crossed = false for i = 1 to _lookback if _cond[i] _crossed := true _crossed longcrossed = f_somethingHappened(crosso,_lookback) shortcrossed = f_somethingHappened(crossu,_lookback) atr_factor = 1 atr = ta.atr(i_atrPeriod) e = atr * atr_factor afr = close afr := nz(afr[1], afr) atr_factoryHigh = close + e atr_factoryLow = close - e if atr_factoryLow > afr afr := atr_factoryLow if atr_factoryHigh < afr afr := atr_factoryHigh // plot(afr, "afr", display = display.data_window) // plot(atr_factoryHigh, "afr", color = color.yellow, display = display.all) // plot(atr_factoryLow, "afr", color = color.green, display = display.all) inLong() => strategy.position_size > 0 inShort() => strategy.position_size < 0 inZero() => not inLong() and not inShort() long = longcrossed and _angle > angleCriteria short= shortcrossed and _angle < -(angleCriteria) plotshape(long, "Buy", shape.arrowup, location.belowbar, color = #FF0000) plotshape(short, "Sell", shape.arrowdown, location.abovebar, color = #00FF00) var longTp = 0.0 var longSl = 0.0 var shortTp = 0.0 var shortSl = 0.0 [b_middle, b_high, b_low] = ta.bb(close, 20, 2) entry_price = strategy.opentrades.entry_price(0) if inZero() if short longTp := close * (1 + TP/100) longSl := close * (1 - SL/100) strategy.entry("LONG",strategy.long, comment = "tp:" + str.tostring(longTp) + " sl:" + str.tostring(longSl)) if long shortTp := close * (1 - TP/100) shortSl := close * (1 + SL/100) strategy.entry("SHORT",strategy.short, comment = "tp:" + str.tostring(shortTp) + " sl:" + str.tostring(shortSl)) if inLong() // if close - entry_price > close * 0.005 // longSl := entry_price + close * 0.001 if high > longTp strategy.close("LONG") if (close - open) > close * 0.014 shortTp := close * (1 - TP/100) shortSl := close * (1 + SL/100) strategy.entry("SHORT",strategy.short, comment = "tp:" + str.tostring(shortTp) + " sl:" + str.tostring(shortSl)) if close < longSl strategy.close("LONG") if open >= b_high and close >= b_high strategy.close("LONG") // if high > b_high and entry_price < high // strategy.close("LONG") if inShort() // if entry_price - close > close * 0.005 // shortSl := entry_price - close * 0.001 if low < shortTp strategy.close("SHORT") if (open - close) > close * 0.014 longTp := close * (1 + TP/100) longSl := close * (1 - SL/100) strategy.entry("LONG",strategy.long, comment = "tp:" + str.tostring(longTp) + " sl:" + str.tostring(longSl)) if close > shortSl strategy.close("SHORT") if open < b_low and close < b_low strategy.close("SHORT") // if low < b_low and entry_price > low // strategy.close("SHORT")