इस अंक में, हम यूट्यूब से एक
डिजाइन सादगी के लिए, हम वीडियो में सूचीबद्ध चलती औसत घातीय का उपयोग नहीं करेंगे, हम इसके बजाय व्यापार दृश्य के अंतर्निहित ta.ema का उपयोग करेंगे (यह वास्तव में एक ही है) ।
यह ट्रेडिंग व्यू पर एक संकेतक है, हम ट्रेडिंग व्यू पर जाने के लिए और स्रोत कोड लेने की जरूरत है।
VuManChu स्विंग फ्री का कोडः
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Credits to the original Script - Range Filter DonovanWall https://www.tradingview.com/script/lut7sBgG-Range-Filter-DW/
// This version is the old version of the Range Filter with less settings to tinker with
//@version=4
study(title="Range Filter - B&S Signals", shorttitle="RF - B&S Signals", overlay=true)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Functions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Size Function
rng_size(x, qty, n)=>
// AC = Cond_EMA(abs(x - x[1]), 1, n)
wper = (n*2) - 1
avrng = ema(abs(x - x[1]), n)
AC = ema(avrng, wper)*qty
rng_size = AC
//Range Filter Function
rng_filt(x, rng_, n)=>
r = rng_
var rfilt = array.new_float(2, x)
array.set(rfilt, 1, array.get(rfilt, 0))
if x - r > array.get(rfilt, 1)
array.set(rfilt, 0, x - r)
if x + r < array.get(rfilt, 1)
array.set(rfilt, 0, x + r)
rng_filt1 = array.get(rfilt, 0)
hi_band = rng_filt1 + r
lo_band = rng_filt1 - r
rng_filt = rng_filt1
[hi_band, lo_band, rng_filt]
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Source
rng_src = input(defval=close, type=input.source, title="Swing Source")
//Range Period
rng_per = input(defval=20, minval=1, title="Swing Period")
//Range Size Inputs
rng_qty = input(defval=3.5, minval=0.0000001, title="Swing Multiplier")
//Bar Colors
use_barcolor = input(defval=false, type=input.bool, title="Bar Colors On/Off")
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Definitions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Filter Values
[h_band, l_band, filt] = rng_filt(rng_src, rng_size(rng_src, rng_qty, rng_per), rng_per)
//Direction Conditions
var fdir = 0.0
fdir := filt > filt[1] ? 1 : filt < filt[1] ? -1 : fdir
upward = fdir==1 ? 1 : 0
downward = fdir==-1 ? 1 : 0
//Trading Condition
longCond = rng_src > filt and rng_src > rng_src[1] and upward > 0 or rng_src > filt and rng_src < rng_src[1] and upward > 0
shortCond = rng_src < filt and rng_src < rng_src[1] and downward > 0 or rng_src < filt and rng_src > rng_src[1] and downward > 0
CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1
//Colors
filt_color = upward ? #05ff9b : downward ? #ff0583 : #cccccc
bar_color = upward and (rng_src > filt) ? (rng_src > rng_src[1] ? #05ff9b : #00b36b) :
downward and (rng_src < filt) ? (rng_src < rng_src[1] ? #ff0583 : #b8005d) : #cccccc
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Outputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Filter Plot
filt_plot = plot(filt, color=filt_color, transp=67, linewidth=3, title="Filter")
//Band Plots
h_band_plot = plot(h_band, color=color.new(#05ff9b, 100), title="High Band")
l_band_plot = plot(l_band, color=color.new(#ff0583, 100), title="Low Band")
//Band Fills
fill(h_band_plot, filt_plot, color=color.new(#00b36b, 92), title="High Band Fill")
fill(l_band_plot, filt_plot, color=color.new(#b8005d, 92), title="Low Band Fill")
//Bar Color
barcolor(use_barcolor ? bar_color : na)
//Plot Buy and Sell Labels
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = color.white, style=shape.labelup, size = size.normal, location=location.belowbar, color = color.new(color.green, 0))
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = color.white, style=shape.labeldown, size = size.normal, location=location.abovebar, color = color.new(color.red, 0))
//Alerts
alertcondition(longCondition, title="Buy Alert", message = "BUY")
alertcondition(shortCondition, title="Sell Alert", message = "SELL")
ईएमए संकेतकः रणनीति में दो ईएमए का उपयोग किया जाता है, एक फास्ट लाइन (छोटी अवधि पैरामीटर) और दूसरा धीमी रेखा (बड़ी अवधि पैरामीटर) है। डबल ईएमए चलती औसत का उद्देश्य मुख्य रूप से हमें बाजार की प्रवृत्ति की दिशा निर्धारित करने में मदद करना है।
लंबी पोजीशन व्यवस्था तेज लाइन धीमी लाइन के ऊपर है।
छोटी स्थिति की व्यवस्था तेज रेखा धीमी रेखा के नीचे है।
VuManChu Swing Free Indicator: VuManChu Swing Free indicator का उपयोग संकेत भेजने और अन्य शर्तों के साथ संयोजन में ऑर्डर देने के लिए किया जाता है। यह VuManChu Swing Free indicator स्रोत कोड से देखा जा सकता है कि longCondition चर खरीद संकेत का प्रतिनिधित्व करता है और shortCondition चर बिक्री संकेत का प्रतिनिधित्व करता है। इन दो चरों का उपयोग ऑर्डर देने की शर्तों के बाद के लेखन के लिए किया जाएगा।
अब चलिए ट्रेडिंग सिग्नल की विशिष्ट ट्रिगर स्थितियों के बारे में बात करते हैं:
लंबी स्थिति में प्रवेश करने के नियम: पॉजिटिव के-लाइन का क्लोजिंग प्राइस ईएमए की फास्ट लाइन से ऊपर होना चाहिए, दोनों ईएमए एक लॉन्ग पोजीशन (स्लो लाइन से ऊपर फास्ट लाइन) होनी चाहिए, और वूमनचु स्विंग फ्री इंडिकेटर को एक खरीद संकेत दिखाना चाहिए (longCondition true) । यदि तीन शर्तें पूरी हो जाती हैं, तो यह के-लाइन लॉन्ग पोजीशन के प्रवेश के लिए प्रमुख के-लाइन है, और इस के-लाइन का क्लोजिंग प्राइस एंट्री पोजीशन है।
लघु स्थिति में प्रवेश करने के नियम (लंबी स्थिति के विपरीत): नकारात्मक K-लाइन का समापन मूल्य EMA की फास्ट लाइन से नीचे होना चाहिए, दोनों EMA एक शॉर्ट पोजीशन (स्लो लाइन से नीचे फास्ट लाइन) होनी चाहिए, और VuManChu Swing Free इंडिकेटर को एक सेल सिग्नल दिखाना चाहिए (shortCondition true है) । यदि तीन शर्तें पूरी हो जाती हैं, तो K-लाइन का समापन मूल्य शॉर्ट एंट्री पोजीशन है।
क्या ट्रेडिंग का तर्क बहुत सरल है? चूंकि स्रोत वीडियो में लाभ स्टॉप और हानि स्टॉप निर्दिष्ट नहीं है, इसलिए मैं एक मध्यम लाभ स्टॉप और हानि स्टॉप विधि का उपयोग करता हूं, हानि को रोकने के लिए निश्चित बिंदुओं का उपयोग करता हूं, और लाभ स्टॉप को ट्रैक करता हूं।
VuManChu स्विंग फ्री संकेतक के लिए कोड, हम इसे किसी भी परिवर्तन के बिना सीधे हमारी रणनीति कोड में डाल दिया।
इसके तुरंत बाद, हम पाइन भाषा कोड का एक टुकड़ा लिखते हैं जो ट्रेडिंग फ़ंक्शन को लागू करता हैः
// extend
fastEmaPeriod = input(50, "fastEmaPeriod") // fast line period
slowEmaPeriod = input(200, "slowEmaPeriod") // slow line period
loss = input(30, "loss") // stop loss points
trailPoints = input(30, "trailPoints") // number of trigger points for moving stop loss
trailOffset = input(30, "trailOffset") // moving stop profit offset (points)
amount = input(1, "amount") // order amount
emaFast = ta.ema(close, fastEmaPeriod) // calculate the fast line EMA
emaSlow = ta.ema(close, slowEmaPeriod) // calculate the slow line EMA
buyCondition = longCondition and emaFast > emaSlow and close > open and close > emaFast // entry conditions for long positions
sellCondition = shortCondition and emaFast < emaSlow and close < open and close < emaFast // entry conditions for short positions
if buyCondition and strategy.position_size == 0
strategy.entry("long", strategy.long, amount)
strategy.exit("exit_long", "long", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
if sellCondition and strategy.position_size == 0
strategy.entry("short", strategy.short, amount)
strategy.exit("exit_short", "short", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
A.Itदेखा जा सकता है कि जब buyCondition सच है, यानीः
लंबे समय तक चलने के लिए तीन शर्तें।
B.जब sellCondition सही है, तो शॉर्ट पोजीशन बनाने के लिए तीन शर्तें लागू होती हैं (यहां दोहराई नहीं गई हैं) ।
फिर हम उपयोग strategy.entry समारोह में प्रवेश करने के लिए और एक स्थिति खोलने के मामले में एक अगर स्थिति निर्णय संकेत ट्रिगर, और सेट करने के लिएstrategy.exitएक ही समय में हानि को रोकने और लाभ को ट्रेल करने के लिए कार्य।
/*backtest
start: 2022-01-01 00:00:00
end: 2022-10-08 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
args: [["ZPrecision",0,358374]]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Credits to the original Script - Range Filter DonovanWall https://www.tradingview.com/script/lut7sBgG-Range-Filter-DW/
// This version is the old version of the Range Filter with less settings to tinker with
//@version=4
study(title="Range Filter - B&S Signals", shorttitle="RF - B&S Signals", overlay=true)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Functions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Size Function
rng_size(x, qty, n)=>
// AC = Cond_EMA(abs(x - x[1]), 1, n)
wper = (n*2) - 1
avrng = ema(abs(x - x[1]), n)
AC = ema(avrng, wper)*qty
rng_size = AC
//Range Filter Function
rng_filt(x, rng_, n)=>
r = rng_
var rfilt = array.new_float(2, x)
array.set(rfilt, 1, array.get(rfilt, 0))
if x - r > array.get(rfilt, 1)
array.set(rfilt, 0, x - r)
if x + r < array.get(rfilt, 1)
array.set(rfilt, 0, x + r)
rng_filt1 = array.get(rfilt, 0)
hi_band = rng_filt1 + r
lo_band = rng_filt1 - r
rng_filt = rng_filt1
[hi_band, lo_band, rng_filt]
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Source
rng_src = input(defval=close, type=input.source, title="Swing Source")
//Range Period
rng_per = input(defval=20, minval=1, title="Swing Period")
//Range Size Inputs
rng_qty = input(defval=3.5, minval=0.0000001, title="Swing Multiplier")
//Bar Colors
use_barcolor = input(defval=false, type=input.bool, title="Bar Colors On/Off")
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Definitions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Filter Values
[h_band, l_band, filt] = rng_filt(rng_src, rng_size(rng_src, rng_qty, rng_per), rng_per)
//Direction Conditions
var fdir = 0.0
fdir := filt > filt[1] ? 1 : filt < filt[1] ? -1 : fdir
upward = fdir==1 ? 1 : 0
downward = fdir==-1 ? 1 : 0
//Trading Condition
longCond = rng_src > filt and rng_src > rng_src[1] and upward > 0 or rng_src > filt and rng_src < rng_src[1] and upward > 0
shortCond = rng_src < filt and rng_src < rng_src[1] and downward > 0 or rng_src < filt and rng_src > rng_src[1] and downward > 0
CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1
//Colors
filt_color = upward ? #05ff9b : downward ? #ff0583 : #cccccc
bar_color = upward and (rng_src > filt) ? (rng_src > rng_src[1] ? #05ff9b : #00b36b) :
downward and (rng_src < filt) ? (rng_src < rng_src[1] ? #ff0583 : #b8005d) : #cccccc
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Outputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Filter Plot
filt_plot = plot(filt, color=filt_color, transp=67, linewidth=3, title="Filter")
//Band Plots
h_band_plot = plot(h_band, color=color.new(#05ff9b, 100), title="High Band")
l_band_plot = plot(l_band, color=color.new(#ff0583, 100), title="Low Band")
//Band Fills
fill(h_band_plot, filt_plot, color=color.new(#00b36b, 92), title="High Band Fill")
fill(l_band_plot, filt_plot, color=color.new(#b8005d, 92), title="Low Band Fill")
//Bar Color
barcolor(use_barcolor ? bar_color : na)
//Plot Buy and Sell Labels
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = color.white, style=shape.labelup, size = size.normal, location=location.belowbar, color = color.new(color.green, 0))
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = color.white, style=shape.labeldown, size = size.normal, location=location.abovebar, color = color.new(color.red, 0))
//Alerts
alertcondition(longCondition, title="Buy Alert", message = "BUY")
alertcondition(shortCondition, title="Sell Alert", message = "SELL")
// extend
fastEmaPeriod = input(50, "fastEmaPeriod")
slowEmaPeriod = input(200, "slowEmaPeriod")
loss = input(30, "loss")
trailPoints = input(30, "trailPoints")
trailOffset = input(30, "trailOffset")
amount = input(1, "amount")
emaFast = ta.ema(close, fastEmaPeriod)
emaSlow = ta.ema(close, slowEmaPeriod)
buyCondition = longCondition and emaFast > emaSlow and close > open and close > emaFast
sellCondition = shortCondition and emaFast < emaSlow and close < open and close < emaFast
if buyCondition and strategy.position_size == 0
strategy.entry("long", strategy.long, amount)
strategy.exit("exit_long", "long", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
if sellCondition and strategy.position_size == 0
strategy.entry("short", strategy.short, amount)
strategy.exit("exit_short", "short", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
बैकटेस्ट की समय सीमा जनवरी 2022 से अक्टूबर 2022 तक है। के-लाइन अवधि 15 मिनट है और बैकटेस्ट के लिए क्लोजिंग प्राइस मॉडल का उपयोग किया जाता है। बाजार बिनेंस ईटीएच_यूएसडीटी परपीट्यूअल कॉन्ट्रैक्ट चुनता है। पैरामीटर स्रोत वीडियो में फास्ट लाइन की 50 अवधि और स्लो लाइन की 200 अवधि के अनुसार सेट किए जाते हैं। अन्य पैरामीटर डिफ़ॉल्ट रूप से अपरिवर्तित रहते हैं। मैंने स्टॉप लॉस और ट्रैकिंग स्टॉप प्रॉफिट पॉइंट्स को 30 बिंदुओं पर व्यक्तिपरक रूप से सेट किया।
बैकटेस्टिंग के परिणाम सामान्य हैं, और ऐसा लगता है कि स्टॉप-लॉस मापदंडों का बैकटेस्टिंग परिणामों पर कुछ प्रभाव पड़ता है। मुझे लगता है कि इस पहलू को अभी भी अनुकूलित और डिजाइन करने की आवश्यकता है। हालांकि, रणनीतिक संकेत ट्रेडिंग को ट्रिगर करने के बाद, जीतने की दर अभी भी ठीक है।
चलो एक अलग BTC_USDT शाश्वत अनुबंध की कोशिश करते हैंः
बीटीसी पर बैकटेस्ट का परिणाम भी बहुत लाभदायक था:
रणनीतिःhttps://www.fmz.com/strategy/385745
ऐसा लगता है कि यह ट्रेडिंग विधि प्रवृत्ति को समझने के लिए अपेक्षाकृत विश्वसनीय है, आप इस विचार के अनुसार डिजाइन को अनुकूलित करना जारी रख सकते हैं। इस लेख में, हमने न केवल डबल मूविंग एवरेज रणनीति के विचार के बारे में सीखा, बल्कि यूट्यूब पर दिग्गजों की रणनीति को संसाधित करने और सीखने का तरीका भी सीखा। ठीक है, उपरोक्त रणनीति कोड केवल मेरी ईंट और मोर्टार है, बैकटेस्ट परिणाम विशिष्ट वास्तविक बॉट परिणामों का प्रतिनिधित्व नहीं करते हैं, रणनीति कोड, डिजाइन केवल संदर्भ के लिए हैं। आपके समर्थन के लिए धन्यवाद, हम आपको अगली बार देखेंगे!