এই কৌশলটির মূলটি হ'ল ট্রেডিং সংকেত তৈরির জন্য বিভিন্ন সময়ের সাথে দুটি এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ) এর ক্রসওভার ব্যবহার করা। ইএমএ একটি সাধারণভাবে ব্যবহৃত প্রযুক্তিগত সূচক যা সাম্প্রতিক মূল্যের ডেটাতে উচ্চতর ওজন নির্ধারণ করে, এটিকে সহজ মুভিং এভারেজ (এসএমএ) এর তুলনায় দামের পরিবর্তনের প্রতি আরও প্রতিক্রিয়াশীল করে তোলে। যখন স্বল্পমেয়াদী ইএমএ (যেমন, ইএমএ 5) দীর্ঘমেয়াদী ইএমএ (যেমন, ইএমএ 13) এর উপরে অতিক্রম করে, এটি একটি দীর্ঘ সংকেত উত্পন্ন করে, দামের গতি বাড়ার ইঙ্গিত দেয়; বিপরীতভাবে, যখন স্বল্পমেয়াদী ইএমএ দীর্ঘমেয়া ইএমএ এর নীচে অতিক্রম করে, এটি হ্রাসের গতি বাড়ার ইঙ্গিত দেয়, একটি সংক্ষিপ্ত সংকেত উত্পন্ন করে।
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Milankacha //@version=5 strategy('5-13 EMA by Naimesh ver04', overlay=true) qty = input(1, 'Buy quantity') testStartYear = input(2021, 'Backtest Start Year') testStartMonth = input(1, 'Backtest Start Month') testStartDay = input(1, 'Backtest Start Day') testStartHour = input(0, 'Backtest Start Hour') testStartMin = input(0, 'Backtest Start Minute') testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin) testStopYear = input(2099, 'Backtest Stop Year') testStopMonth = input(1, 'Backtest Stop Month') testStopDay = input(30, 'Backtest Stop Day') testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriodBackground = input(title='Color Background?', defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #00FF00 : na testPeriod() => true ema1 = input(5, title='Select EMA 1') ema2 = input(13, title='Select EMA 2') //ema3 = input(50, title='Select EMA 3') //SL = input(70, title='Stoploss') //TR = input(250, title='Target') expo = ta.ema(close, ema1) ma = ta.ema(close, ema2) //EMA_50 = ta.ema(close, ema3) //avg_1 = avg (expo, ma) //s2 = ta.cross(expo, ma) ? avg_1 : na //plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0) p1 = plot(expo, color=color.rgb(231, 15, 15), linewidth=2) p2 = plot(ma, color=#0db63a, linewidth=2) fill(p1, p2, color=color.new(color.white, 80)) longCondition = ta.crossover(expo, ma) shortCondition = ta.crossunder(expo, ma) if testPeriod() //strategy.entry('Long', strategy.long, when=longCondition) strategy.entry('Short', strategy.short, when=expo<ma) //strategy.close("Long", expo<ma, comment= 'SL hit') strategy.close("Short", expo>ma, comment= 'SL hit') //plotshape(longCondition and close>EMA_50, title='Buy Signal', text='B', textcolor=color.new(#FFFFFF, 0), style=shape.labelup, size=size.normal, location=location.belowbar, color=color.new(#1B8112, 0)) //plotshape(shortCondition and close<EMA_50, title='Sell Signal', text='S', textcolor=color.new(#FFFFFF, 0), style=shape.labeldown, size=size.normal, location=location.abovebar, color=color.new(#FF5733, 0))