Inti strategi ini adalah menggunakan persilangan dua purata bergerak eksponen (EMA) dengan tempoh yang berbeza untuk menjana isyarat dagangan. EMA adalah penunjuk teknikal yang biasa digunakan yang menetapkan berat yang lebih tinggi kepada data harga yang lebih baru, menjadikannya lebih responsif terhadap perubahan harga berbanding dengan purata bergerak mudah (SMA). Apabila EMA jangka pendek (contohnya, EMA5) melintasi di atas EMA jangka panjang (contohnya, EMA13), ia menunjukkan peningkatan momentum harga menaik, menjana isyarat panjang; sebaliknya, apabila EMA jangka pendek melintasi di bawah EMA jangka panjang, ia menunjukkan peningkatan momentum harga menurun, menjana isyarat pendek.
/*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))