इस रणनीति का उद्देश्य यह परीक्षण करना है कि क्या मोमबत्तियों के रंग, मात्रा और यादृच्छिक विधियों जैसे विभिन्न इनपुट चर का उपयोग साइन तरंगों के रूप में मूल्य परिवर्तन की भविष्यवाणी करने के लिए किया जा सकता है। रणनीति इन चरों को साइन तरंगों के रूप में परिवर्तित करती है। जब शिखर या घाट सेट संख्या में पहुंचते हैं, तो खरीद या बिक्री निर्णय किए जाते हैं।
रणनीति को तीन भागों में विभाजित किया गया है। पहला भाग मोमबत्ती के रंगों में परिवर्तन का पता लगाता है। जब एक ही रंग के कई मोमबत्तियों के बाद एक अलग रंग की मोमबत्ती दिखाई देती है, तो साइन तरंग दिशा बदल जाती है। दूसरा भाग यह पता लगाता है कि क्या मात्रा औसत से अधिक या कम है। जब औसत टूट जाता है, तो लहर दिशा बदल जाती है। तीसरा भाग सिक्का फ्लिपिंग का अनुकरण करने के लिए यादृच्छिक विधि का उपयोग करता है। जब यादृच्छिक परिणाम अलग होता है, तो लहर दिशा बदल जाती है। जब ये तीन तरंगें निर्धारित संख्या में बार जमा होती हैं, तो व्यापारिक निर्णय लिए जाते हैं।
यह कोड तीन लहरों के लिए वर्तमान दिशा, शिखरों की संख्या और पिछले मोमबत्ती की स्थिति को ट्रैक करके लहरों के चलने को नियंत्रित करता है। जब शिखरों की संख्या पैरामीटर सेटिंग तक पहुंच जाती है, तो यह चलने की दिशा बदल देती है। यह लूप साइन तरंगों के चलने का अनुकरण करता है।
यह सीनस वेव थ्योरी समझ में आती है, और सिमुलेटेड वेवफॉर्म का भी वास्तविक बाजार के साथ कुछ संबंध है। लेकिन इस रणनीति के परीक्षण के माध्यम से, यह पाया जा सकता है कि वे वास्तव में यादृच्छिक परिणाम हैं। चर का कौन सा संयोजन वेवफॉर्म को अधिक समान बनाता है, व्यापार परिणामों में सुधार नहीं करता है।
इसलिए इस रणनीति का एक लाभ यह है कि यह गलत धारणा खारिज कर देता है कि
इस रणनीति का सबसे बड़ा जोखिम यह है कि यादृच्छिक व्यापार में लाभ और हानि का निर्धारण करना मुश्किल है। विभिन्न मापदंडों के तहत परिणामों की भविष्यवाणी करना भी मुश्किल है, और यह निर्धारित करना असंभव है कि यह लाभदायक हो सकता है या नहीं।
इसके अतिरिक्त, साइन वेव भविष्यवाणी सिद्धांत ही गलत है। बाजार परिवर्तन सरल चक्रवात के साथ अनुकरण करने के लिए बहुत जटिल हैं। इसलिए इस रणनीति का वास्तव में वास्तविक व्यापार के लिए उपयोग नहीं किया जा सकता है।
जोखिमों को कम करने के लिए, पैरामीटर रेंज निर्धारित करने के लिए यादृच्छिक परिणामों का आगे विश्लेषण करना आवश्यक है; या ट्रेडिंग संकेतों को सत्यापित करने के लिए अन्य विश्लेषणात्मक विधियों का संयोजन करना आवश्यक है।
इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः
विभिन्न साइन तरंगों का परीक्षण करके, यह रणनीति बाजार की अप्रत्याशित प्रकृति को दर्शाता है। साथ ही, यह भविष्यवाणी करने के लिए लहर चक्रों का उपयोग करने के गलत सिद्धांत को भी खंडन करता है।
इसके बाद, रणनीति की व्यावहारिकता में वृद्धि करके सुधार किया जा सकता है चर, तरंगों के संयोजन, स्टॉप सेट, और मापदंडों का अनुकूलन। लेकिन कुंजी अभी भी यह समझना है कि बाजार के परिवर्तन जटिल और अप्रत्याशित हैं। हमें क्या करने की आवश्यकता है बाजार की भविष्यवाणी करने के बजाय यादृच्छिक जोखिमों को कम करना है।
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h 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/ // © Gentleman-Goat //@version=5 strategy("Sine Wave Theory",overlay=false, precision = 2, initial_capital = 1000,shorttitle = "SINE_W_T") var bar_change_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Bar Change") bar_change_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Bar Change") bar_change_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Bar Change") bar_change_trade = input.bool(defval=true,title="Trade",group="Bar Change") var volume_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Volume") avg_volume_length = input.int(7,title="Lookback Length",group="Volume") volume_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Volume") volume_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Volume") volume_trade = input.bool(defval=false,title="Trade",group="Volume") var coin_flip_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Coin Flip") coin_flip_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Coin Flip") coin_flip_seed = input.int(defval=1,title="Seed #",group="Coin Flip") coin_flip_trade = input.bool(defval=false,title="Trade",group="Coin Flip") avg_volume = ta.sma(volume,avg_volume_length) //Green or Red Candle bar_color = close>open ? color.green : color.red bar_color_time_adj = request.security(syminfo.tickerid, bar_change_sine_wave_res, bar_color) //Above or Below Average volume_state = (volume>avg_volume) ? color.blue : color.purple volume_state_time_adj = request.security(syminfo.tickerid, volume_sine_wave_res, volume_state) //Coinflip coin_flip = math.random(0,100,coin_flip_seed)>=50 ? color.teal : color.yellow var bar_change_wave_count = 0 var volume_wave_count = 0 var coin_flip_wave_count = 0 //Wave Counters if(volume_state_time_adj[1] != volume_state_time_adj) volume_wave_count := volume_wave_count + volume_wave_direction if(bar_color_time_adj[1] != bar_color_time_adj) bar_change_wave_count := bar_change_wave_count + bar_change_wave_direction if(coin_flip[1] != coin_flip) coin_flip_wave_count := coin_flip_wave_count + coin_flip_wave_direction //Direction changers if(math.abs(bar_change_wave_count) == bar_change_sine_wave_number and bar_color_time_adj[1] != bar_color_time_adj) bar_change_wave_direction := bar_change_wave_direction * -1 if(math.abs(volume_wave_count) == volume_sine_wave_number and volume_state_time_adj[1] != volume_state_time_adj) volume_wave_direction := volume_wave_direction * -1 if(math.abs(coin_flip_wave_count) == coin_flip_sine_wave_number and coin_flip[1] != coin_flip) coin_flip_wave_direction := coin_flip_wave_direction * -1 //Entry positions if(bar_change_wave_count==bar_change_sine_wave_number and bar_change_trade==true) strategy.entry(id="short",direction=strategy.short) if(bar_change_wave_count==bar_change_sine_wave_number*-1 and bar_change_trade==true) strategy.entry(id="long",direction=strategy.long) if(volume_wave_count==volume_sine_wave_number and volume_trade==true) strategy.entry(id="short-volume",direction=strategy.short) if(volume_wave_count==volume_sine_wave_number*-1 and volume_trade==true) strategy.entry(id="long-volume",direction=strategy.long) if(coin_flip_wave_count==coin_flip_sine_wave_number and coin_flip_trade==true) strategy.entry(id="short-coinflip",direction=strategy.short) if(coin_flip_wave_count==coin_flip_sine_wave_number*-1 and coin_flip_trade==true) strategy.entry(id="long-coinflip",direction=strategy.long) hline(0, title='Center', color=color.white, linestyle=hline.style_dashed, linewidth=1) plot(bar_change_wave_count,title="Bar Change", color=bar_color, linewidth=2) plot(volume_wave_count,title="Volume Average Change", color=volume_state, linewidth=2) plot(coin_flip_wave_count,title="Coin Flip Change", color=coin_flip, linewidth=2)