
यह एक व्यापक गति ट्रेडिंग रणनीति है जो कई मूविंग एवरेज क्रॉसओवर संकेतकों और वॉल्यूम मूल्य संकेतकों पर आधारित है। यह रणनीति तेज और धीमी एक्सपोनेंशियल मूविंग एवरेज (ईएमए) क्रॉसओवर, वॉल्यूम भारित औसत मूल्य (वीडब्ल्यूएपी) और सुपरट्रेंड के संयोजन के आधार पर ट्रेडिंग सिग्नल उत्पन्न करती है, जबकि इंट्राडे ट्रेडिंग टाइम विंडो और मूल्य परिवर्तन रेंज जैसी स्थितियों का संयोजन भी प्रवेश को नियंत्रित करने के लिए किया जाता है। और बाहर निकलें.
रणनीति 5-दिन और 13-दिन EMA को मुख्य प्रवृत्ति निर्णय संकेतक के रूप में उपयोग करती है। जब तेज़ EMA धीमे EMA से ऊपर निकल जाता है और समापन मूल्य VWAP से ऊपर होता है, तो एक लंबा संकेत ट्रिगर होता है; जब तेज़ EMA धीमे EMA से नीचे निकल जाता है और समापन मूल्य VWAP से नीचे है, तो एक लंबा संकेत ट्रिगर होता है। जब यह नीचे जाता है, तो एक छोटा संकेत ट्रिगर होता है। इसके साथ ही, यह रणनीति ट्रेंड पुष्टिकरण और स्टॉप लॉस के आधार के रूप में सुपरट्रेंड संकेतक को भी पेश करती है। यह रणनीति अलग-अलग कारोबारी दिनों के लिए अलग-अलग प्रवेश शर्तें निर्धारित करती है, जिसमें पिछले कारोबारी दिन के समापन मूल्य की तुलना में मूल्य परिवर्तन सीमा, दिन के उच्चतम और निम्नतम मूल्यों की उतार-चढ़ाव सीमा आदि शामिल हैं।
यह रणनीति कई तकनीकी संकेतकों के व्यापक उपयोग के माध्यम से प्रवृत्ति ट्रैकिंग और गति व्यापार को जोड़ती है। रणनीति डिजाइन बाजार की विविधता पर पूरी तरह से विचार करता है और विभिन्न व्यापारिक दिनों के लिए अलग-अलग व्यापारिक नियमों को अपनाता है। सख्त जोखिम नियंत्रण और लचीले स्टॉप-प्रॉफिट और स्टॉप-लॉस तंत्र के माध्यम से, यह रणनीति अच्छे व्यावहारिक अनुप्रयोग मूल्य को प्रदर्शित करती है। भविष्य में, अधिक तकनीकी संकेतकों को शामिल करके और पैरामीटर सेटिंग्स को अनुकूलित करके रणनीति की स्थिरता और लाभप्रदता में सुधार किया जा सकता है।
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
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/
//@version=6
strategy("S1", overlay=true)
fastEMA = ta.ema(close, 5)
slowEMA = ta.ema(close,13)
ema9 = ta.ema(close, 9)
ema100 = ta.ema(close, 100)
ema5 = ta.ema(close, 5)
ema200 = ta.ema(close, 200)
ma = ta.sma(close, 50)
mult = input.float(defval=3)
len = input.int(defval=11)
[superTrend, dir] = ta.supertrend(mult, len)
vwap1= ta.vwap(hlc3)
plot(slowEMA,color = color.green)
plot(fastEMA,color = color.black)
plot(vwap1, color = color.blue)
var dailyTaskDone = false
var gapdown = false
var gapup = false
var runup = 0.0
var biggapdown = false
var biggapup = false
var prevDayClose = 0.0
var todayLow = 0.0
var todayHigh = 0.0
var noBuyNow = false
var noSellNow = false
var buyPrice = 0.0
var sellPrice = 0.0
var todayBuyDone = false
var todaySellDone = false
var dragonflyDoji = false
var candleCount = 0
var candleCount1 = 0
var lastTrade = 9
var lastFiveCandles = false
var lastSevenCandlesS = false
var fiveEMACC = 0
candleCount := candleCount + 1
candleCount1 := candleCount1 + 1
if fiveEMACC > 0
fiveEMACC := fiveEMACC + 1
if fiveEMACC == 6
fiveEMACC := 0
if strategy.openprofit == 0
candleCount := 0
if hour == 9 and minute ==15
prevDayClose := close[1]
todayLow := low
todayHigh := high
lastTrade := 9
if hour == 9 and minute ==15 and (open - close[1]) > close*0.01
gapup := true
if hour == 9 and minute ==15 and (open - close[1]) < close*0.005*-1
gapdown := true
if hour == 9 and minute ==15 and (close - close[1]) > 200
biggapup := true
if hour == 9 and minute ==15 and (close - close[1]) < 200
biggapdown := true
if low < todayLow
todayLow := low
candleCount1 := 0
if high > todayHigh
todayHigh := high
if close > todayLow + 200
noBuyNow := true
if close < todayHigh - 200//0.01*close
noSellNow := false
lastFiveCandles := (close[4]<open[4] or close[3]<open[3] or close[2] < open[2] or close[1]<open[1])
lastSevenCandlesS := (close[6]>open[6] or close[5]>open[5] or close[4]>open[4] or close[3]>open[3] or close[2] > open[2] or close[1]>open[1])
if hour == 15
dailyTaskDone := false
gapdown := false
gapup := false
biggapup := false
biggapdown := false
noBuyNow := false
noSellNow := false
todayLow := 0.0
todayHigh := 0.0
buyPrice := 0.0
sellPrice := 0.0
todayBuyDone := false
todaySellDone := false
dragonflyDoji := false
lastTrade := 9
// if fastEMA < slowEMA and lastTrade == 1 and strategy.openprofit==0
// lastTrade := 9
if fastEMA > slowEMA and lastTrade == 0 and strategy.openprofit==0
lastTrade := 9
buy = (dayofweek==dayofweek.thursday and (fastEMA - slowEMA > close*0.001) and close > vwap1 and close[1] > vwap1[1]) or
(dayofweek==dayofweek.monday and (fastEMA - slowEMA > close*0.001) and close > vwap1 and close[1] > vwap1[1] and close-prevDayClose < close*0.011) or
(dayofweek==dayofweek.tuesday and (fastEMA - slowEMA > close*0.001) and close > vwap1 and close[1] > vwap1[1] and lastFiveCandles and close-prevDayClose < close*0.015 and close-todayLow < close*0.012) or
(dayofweek==dayofweek.wednesday and (fastEMA - slowEMA > close*0.001) and close > vwap1 and close-prevDayClose < close*0.015 and (hour!=9 or minute>=35) and close-todayLow < close*0.012) or
(dayofweek==dayofweek.friday and ((fastEMA - slowEMA > close*0.001))and close > vwap1 and close[1] > vwap1[1] and (hour!=9 or minute>=35))
sell= (dayofweek==dayofweek.thursday and (hour!=9 or minute>=35) and ((slowEMA - fastEMA > close*0.00089)) and close < vwap1 and lastSevenCandlesS and close[1] < vwap1[1]) or
(dayofweek==dayofweek.monday and ((slowEMA - fastEMA > close*0.00089)) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and todayHigh-close < close*0.008 and todayHigh-close[1] < close * 0.01 ) or
(dayofweek==dayofweek.tuesday and (hour!=9 or minute>=35) and (open - low < 2*(high-close)) and (close-open<10) and not dragonflyDoji and (slowEMA - fastEMA > close*0.00089) and close < vwap1 and close[1] < vwap1[1] and prevDayClose-close<close*0.012 and todayHigh-close < close*0.009 and todayHigh-close[1] < close * 0.009) or
(dayofweek==dayofweek.wednesday and (hour!=9 or minute>=40) and close<open and (slowEMA - fastEMA > close*0.00089) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and (close-todayLow>30 or candleCount1<1) ) or
(dayofweek==dayofweek.friday and ((slowEMA - fastEMA > close*0.00089)) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and (hour!=9 or minute>=55) )
// buy = (dayofweek==dayofweek.thursday and (fastEMA > slowEMA) and close > vwap1 and close[1] > vwap1[1]) or
// (dayofweek==dayofweek.monday and (fastEMA > slowEMA) and close > vwap1 and close[1] > vwap1[1] and close-prevDayClose < close*0.011) or
// (dayofweek==dayofweek.tuesday and (fastEMA > slowEMA) and close > vwap1 and close[1] > vwap1[1] and lastFiveCandles and close-prevDayClose < close*0.015 and close-todayLow < close*0.012) or
// (dayofweek==dayofweek.wednesday and (fastEMA > slowEMA) and close > vwap1 and close-prevDayClose < close*0.015 and (hour!=9 or minute>=35) and close-todayLow < close*0.012) or
// (dayofweek==dayofweek.friday and ((fastEMA > slowEMA))and close > vwap1 and close[1] > vwap1[1] and (hour!=9 or minute>=35))
// sell= (dayofweek==dayofweek.thursday and (hour!=9 or minute>=35) and ((slowEMA > fastEMA)) and close < vwap1 and lastSevenCandlesS and close[1] < vwap1[1]) or
// (dayofweek==dayofweek.monday and ((slowEMA > fastEMA)) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and todayHigh-close < close*0.008 and todayHigh-close[1] < close * 0.01 ) or
// (dayofweek==dayofweek.tuesday and (hour!=9 or minute>=35) and (open - low < 2*(high-close)) and (close-open<10) and not dragonflyDoji and (slowEMA > fastEMA) and close < vwap1 and close[1] < vwap1[1] and prevDayClose-close<close*0.012 and todayHigh-close < close*0.009 and todayHigh-close[1] < close * 0.009) or
// (dayofweek==dayofweek.wednesday and (hour!=9 or minute>=40) and close<open and (slowEMA > fastEMA) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and (close-todayLow>30 or candleCount1<1) ) or
// (dayofweek==dayofweek.friday and ((slowEMA > fastEMA)) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and (hour!=9 or minute>=55) )
dragonflyDoji:= false
// (slowEMA - fastEMA > close*0.00089 or (slowEMA-fastEMA>close*0.00049 and (high[2]>vwap or high[1]>vwap)))
if sellPrice != 0 and runup < sellPrice - low
runup := sellPrice - low
if buyPrice != 0 and runup < high - buyPrice
//ourlabel = label.new(x=bar_index, y=na, text=tostring(runup), yloc=yloc.belowbar)
runup := high - buyPrice
NoBuySellTime = (hour == 15) or ((hour==14 and minute>=25)) or (hour==9 and minute<=35) or hour >= 14
//(fiveEMACC > 0 and low < fastEMA and close < vwap1)
buyexit = fastEMA<slowEMA or (close<superTrend and close < vwap1 and close[1] < vwap1[1]) //or strategy.openprofit > 400 or strategy.openprofit < -5000
sellexit = slowEMA<fastEMA or (close > vwap1 and close[1] > vwap1[1] and close>superTrend) //or strategy.openprofit > 400 or strategy.openprofit < -5000
exitPosition = (dayofweek==dayofweek.thursday and buyPrice!=0.0 and (high - buyPrice) > 50) or (dayofweek==dayofweek.thursday and sellPrice!=0.0 and (sellPrice - low) > 80) or (dayofweek==dayofweek.monday and buyPrice !=0.0 and high-buyPrice > 30) or (dayofweek==dayofweek.monday and sellPrice!=0.0 and (sellPrice - low) > 30) or (dayofweek!=dayofweek.thursday and dayofweek!=dayofweek.monday and buyPrice!=0.0 and (high - buyPrice) > 30) or (dayofweek!=dayofweek.thursday and dayofweek!=dayofweek.monday and sellPrice!=0.0 and (sellPrice - low) > 30)
//code such that 2 fastema is > than 2 slowema
//exitPosition = (sellPrice!=0 and runup >21 and strategy.openprofit < -2000) or (candleCount > 18 and strategy.openprofit > 50 and strategy.openprofit < 1000) or (dayofweek==dayofweek.thursday and buyPrice!=0.0 and (high - buyPrice) > buyPrice * 0.007) or (dayofweek==dayofweek.thursday and sellPrice!=0.0 and (sellPrice - low) > sellPrice * 0.007) or (dayofweek==dayofweek.monday and buyPrice !=0.0 and high-buyPrice > 30) or (dayofweek!=dayofweek.thursday and dayofweek!=dayofweek.monday and buyPrice!=0.0 and (high - buyPrice) > buyPrice * 0.002) or (dayofweek!=dayofweek.thursday and sellPrice!=0.0 and (sellPrice - low) > sellPrice * 0.002)
//(runup >21 and strategy.openprofit < -2000) or
if buy and fastEMA>vwap1 and (not todayBuyDone or lastTrade != 1) and not NoBuySellTime// and not dailyTaskDone //and (dayofweek==dayofweek.friday or (close-prevDayClose)<150)//and not biggapup
strategy.entry("buy", strategy.long)
//dailyTaskDone := true
if buyPrice == 0.0
fiveEMACC := 1
buyPrice := close
//ourlabel = label.new(x=bar_index, y=na, text=tostring(todayLow + 500), yloc=yloc.belowbar9
todayBuyDone := true
lastTrade := 1
runup := 0.0
if sell and (not todaySellDone or lastTrade != 0) and not NoBuySellTime// and not dailyTaskDone // and dayofweek!=dayofweek.friday //and (dayofweek==dayofweek.friday or (prevDayClose-close)<150)//and not biggapdown
strategy.entry("sell", strategy.short)
//dailyTaskDone := true
if sellPrice == 0.0
fiveEMACC := 1
sellPrice := close
todaySellDone := true
lastTrade := 0
runup := 0.0
// if ((fastEMA-slowEMA>18 and close>vwap and close[1]>vwap[1] and (not todayBuyDone or candleCount>12)) or (slowEMA-fastEMA>10 and close < vwap and close[1]<vwap[1] and (not todaySellDone or candleCount > 12))) and strategy.openprofit==0
// ourlabel = label.new(x=bar_index, y=na, text=tostring(abs(prevDayClose-close)), yloc=yloc.belowbar)
IntraDay_SquareOff = minute >=15 and hour >= 15
if true and (IntraDay_SquareOff or exitPosition)
strategy.close("buy")
strategy.close("sell")
buyPrice := 0
sellPrice := 0
runup := 0.0
if buyexit
strategy.close("buy")
buyPrice := 0
if sellexit
strategy.close("sell")
sellPrice := 0
buy1 = ((dayofweek==dayofweek.thursday and (fastEMA - slowEMA > close*0.001) and close > vwap1 and close[1] > vwap1[1]) or
(dayofweek==dayofweek.monday and (fastEMA - slowEMA > close*0.0013) and close > vwap1 and close[1] > vwap1[1]) or
(dayofweek==dayofweek.tuesday and (fastEMA - slowEMA > close*0.0013) and close > vwap1 and close[1] > vwap1[1] and not gapup) or
(dayofweek==dayofweek.wednesday and (fastEMA - slowEMA > close*0.0013) and close > vwap1 and close[1] > vwap1[1] and close-prevDayClose < close*0.0085) or
(dayofweek==dayofweek.friday and (fastEMA - slowEMA > close*0.0013) and close > vwap1 and close[1] > vwap1[1] and close - todayLow < close*0.012))
and dayofweek!=dayofweek.friday and (not todayBuyDone or lastTrade != 1) and not NoBuySellTime// and not dailyTaskDone //and (dayofweek==dayofweek.friday or (close-prevDayClose)<150)//and not biggapup
sell1= ((dayofweek==dayofweek.thursday and (slowEMA - fastEMA > close*0.00079) and close < vwap1 and close[1] < vwap1[1]) or
(dayofweek==dayofweek.monday and (slowEMA - fastEMA > close*0.00079) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and todayHigh-close < close*0.01 and todayHigh-close[1] < close * 0.01) or
(dayofweek==dayofweek.tuesday and (slowEMA - fastEMA > close*0.00079) and close < vwap1 and close[1] < vwap1[1] and not gapdown and not dragonflyDoji and todayHigh-close < close*0.009 and todayHigh-close[1] < close * 0.009) or
(dayofweek==dayofweek.wednesday and (slowEMA - fastEMA > close*0.00079) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and prevDayClose-close < 0.005*close) or
(dayofweek==dayofweek.friday and (slowEMA - fastEMA > close*0.00079) and close < vwap1 and close[1] < vwap1[1] and not dragonflyDoji and prevDayClose-close < 0.005*close)) and
dayofweek!=dayofweek.friday and (not todaySellDone or lastTrade != 0) and not NoBuySellTime// and not dailyTaskDone
// if buy1 and strategy.openprofit==0
// ourlabel = label.new(x=bar_index, y=na, text=tostring(fastEMA - slowEMA), yloc=yloc.belowbar)
// if sell1 and strategy.openprofit==0
// ourlabel = label.new(x=bar_index, y=na, text=tostring(slowEMA - fastEMA), yloc=yloc.belowbar)
// buy = ((fastEMA > slowEMA and fastEMA[1] < slowEMA[1]) and (fastEMA - slowEMA) > 10) or ((fastEMA > slowEMA and fastEMA[1] > slowEMA[1] and fastEMA[2] < slowEMA[2]) and (fastEMA - slowEMA) > 20)
// sell= ((fastEMA < slowEMA and fastEMA[1] > slowEMA[1] ) and (slowEMA - fastEMA) > 10) or ((fastEMA < slowEMA and fastEMA[1] < slowEMA[1] and fastEMA[2] > slowEMA[2]) and (slowEMA - fastEMA) > 20)
// buy = (fastEMA > slowEMA and fastEMA[1] < slowEMA[1])
// sell= (fastEMA < slowEMA and fastEMA[1] > slowEMA[1] )
// buy = ((fastEMA > slowEMA and fastEMA[1] < slowEMA[1]) and (fastEMA - slowEMA) > 10) or ((fastEMA > slowEMA and fastEMA[1] > slowEMA[1] and fastEMA[2] < slowEMA[2]) and (fastEMA - slowEMA) > 1)
// sell= ((fastEMA < slowEMA and fastEMA[1] > slowEMA[1] ) and (slowEMA - fastEMA) > 5)
// buy = fastEMA > slowEMA and fastEMA[1] > slowEMA[1] and fastEMA[2] < slowEMA[2]
// sell= fastEMA < slowEMA and fastEMA[1] < slowEMA[1] and fastEMA[2] > slowEMA[2]
//Daily chart
// buyexit = (close + 40 < slowEMA)//rsi > 65 and fastEMA > ema9 // fastEMA > ema9// close < fastEMA//(rsi > 65 and close < fastEMA and fastEMA > ema3 and close > ema200) //strategy.openprofit < -10000 and slowEMA > ema3 and slowEMA[1] < ema3[1] and 1==2
// sellexit = (close - 40 > slowEMA)//rsi < 35 // and close > ema200) or (rsi < 35 and close < ema200 and fastEMA < ema3) //strategy.openprofit < -10000 and fastEMA < ema3 and fastEMA[1] > ema3[1] and 1==2
// buyexit = (close < superTrend)// and (close < vwap1 and close[1] < vwap1[1] and close < close[1])//and close[2] < vwap1[2]//rsi > 65 and close < fastEMA// fastEMA > ema9// close < fastEMA//(rsi > 65 and close < fastEMA and fastEMA > ema3 and close > ema200) //strategy.openprofit < -10000 and slowEMA > ema3 and slowEMA[1] < ema3[1] and 1==2
// sellexit = (close > superTrend)// and (close > vwap1 and close[1] > vwap1[1] and close > close[1]) //and close[2] > vwap1[2]//rsi < 35// and close > ema200) or (rsi < 35 and close < ema200 and fastEMA < ema3) //strategy.openprofit < -10000 and fastEMA < ema3 and fastEMA[1] > ema3[1] and 1==2
// buyexit = (close < superTrend and close < vwap1 and close[1] < vwap1[1] and close[1] < superTrend[1]) //or strategy.openprofit > 400 or strategy.openprofit < -5000
// sellexit = (close > superTrend and close > vwap1 and close[1] > vwap1[1] and close[1] > superTrend[1]) //or strategy.openprofit > 400 or strategy.openprofit < -5000