इस रणनीति का मूल विचार लंबी या छोटी स्थिति निर्धारित करने के लिए यादृच्छिक संख्याओं का उपयोग करके सिक्का फेंकने और पासा रोलिंग जैसी संभावना घटनाओं का अनुकरण करना है, इस प्रकार यादृच्छिक व्यापार को लागू करना। इस तरह की ट्रेडिंग रणनीति का उपयोग सिमुलेशन परीक्षण के लिए और अधिक जटिल रणनीति विकास के लिए एक बुनियादी ढांचे के रूप में भी किया जा सकता है।
उपयोग करेंflip
यादृच्छिक घटनाओं का अनुकरण करने के लिए चर और निर्धारित करने के लिए लंबी या छोटीcoinLabel
यादृच्छिक संख्या का आकार।
प्रयोगrisk
औरratio
स्टॉप लॉस सेट करना और लाभ रेखाएं लेना।
सेट अधिकतम चक्र संख्या के अनुसार अगले ट्रेडिंग सिग्नल को यादृच्छिक रूप से ट्रिगर करें।
बंद स्थिति बॉक्स को प्रदर्शित करने के लिए नियंत्रण करेंplotBox
variable.
stoppedOut
औरtakeProfit
चरों का उपयोग स्टॉप लॉस या ले लाभ का पता लगाने के लिए किया जाता है।
रणनीति प्रदर्शन का परीक्षण करने के लिए बैकटेस्टिंग क्षमताएं प्रदान करें।
कोड संरचना स्पष्ट और समझने में आसान है और द्वितीयक विकसित है।
यूआई इंटरैक्शन अनुकूल है और विभिन्न पैरामीटर ग्राफिकल इंटरफेस के माध्यम से समायोजित किए जा सकते हैं।
आकस्मिकता मजबूत है और उच्च विश्वसनीयता के साथ बाजार में उतार-चढ़ाव से प्रभावित नहीं होती है।
पैरामीटर अनुकूलन के माध्यम से निवेश पर बेहतर लाभ प्राप्त किया जा सकता है।
अन्य रणनीतियों के प्रदर्शन या परीक्षण के रूप में इस्तेमाल किया जा सकता है।
रैंडम ट्रेडिंग से बाजार का न्याय नहीं किया जा सकता और कुछ लाभ का जोखिम होता है।
इष्टतम पैरामीटर संयोजन निर्धारित करने में असमर्थ, दोहराए गए परीक्षण की आवश्यकता है।
अति घने यादृच्छिक संकेतों के परिणामस्वरूप सुपर सहसंबंध का खतरा हो सकता है।
जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस और लाभ लेने के तंत्र का उपयोग करने की सिफारिश की जाती है।
व्यापारिक अंतराल को उचित रूप से बढ़ाकर जोखिमों को कम किया जा सकता है।
यादृच्छिक संकेत उत्पन्न करने के लिए अधिक जटिल कारकों को शामिल करें।
परीक्षण के दायरे का विस्तार करने के लिए व्यापारिक किस्मों को बढ़ाएं।
यूआई इंटरैक्शन को अनुकूलित करें और रणनीति नियंत्रण क्षमताओं को बढ़ाएं।
पैरामीटर अनुकूलन के लिए अधिक परीक्षण उपकरण और संकेतक प्रदान करें।
इसका उपयोग ट्रेडिंग सिग्नल या स्टॉप लॉस टेक प्रॉफिट घटक के रूप में अन्य रणनीतियों में जोड़ा जा सकता है।
इस रणनीति का समग्र ढांचा पूर्ण है, उच्च विश्वसनीयता के साथ यादृच्छिक घटनाओं के आधार पर ट्रेडिंग सिग्नल उत्पन्न करता है। साथ ही, यह पैरामीटर समायोजन, बैकटेस्टिंग और चार्टिंग क्षमताएं प्रदान करता है। इसका उपयोग नौसिखिया रणनीति विकास का परीक्षण करने के लिए किया जा सकता है, और अन्य रणनीतियों के लिए एक बुनियादी मॉड्यूल के रूप में भी किया जा सकता है। उचित अनुकूलन के माध्यम से, रणनीति प्रदर्शन में और सुधार किया जा सकता है।
/*backtest start: 2022-11-30 00:00:00 end: 2023-12-06 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/ // © melodicfish //@version=4 strategy("Coin Flipper Pro",overlay=true,max_bars_back=100) // ======= User Inputs variables========= h1=input(title="------- Trade Activity -------",defval=false) maxBars=input(25.0,title="Max Bars between Coin Filps",step=1.0,minval=4.0) h2=input(title="------- Position Settings -------",defval=false) risk=input(defval=5.0,title="Risk in % ",type=input.float, minval=0.001 ,step=0.1) ratio= input(defval=1.5,title="Risk to Reward Ratio x:1 ",type=input.float, minval=0.001,step=0.1) h3=input(title="------- Plot Options -------",defval=false) showBox=input(defval=true, title="Show Position Boxes") h4=input(title="------- Back Testing -------",defval=false) runTest=input(defval=true, title="Run Strategy Back Test") customTime=input(defval=false, title="Use Custom Date Range for back test") tsYear = input(2021,minval=1000,maxval=9999,title= "Test Start Year") tsMonth = input(1,minval=1,maxval=12,title= "Test Start Month") tsDay = input(1,minval=1,maxval=31,title= "Test Start Day") start = timestamp(tsYear,tsMonth,tsDay,0,0) teYear = input(2021,minval=1000,maxval=9999,title= "Test Stop Year") teMonth = input(5,minval=1,maxval=12,title= "Test Stop Month") teDay = input(1,minval=1,maxval=31,title= "Test Stop Day") end = timestamp(teYear,teMonth,teDay,0,0) // ======= variables ========= var barsBetweenflips=25 var coinFlipResult=0.0 var flip=true var coinLabel=0.0 var stoppedOut= true var takeProfit=true var posLive=false var p1=0.0 var p2=0.0 var p3=0.0 var plotBox=false var posType=0 long=false short=false // ===== Functions ====== getColor() => round(random(1,255)) // ===== Logic ======== if barssince(flip==true)>barsBetweenflips and posLive==false flip:=true coinLabel:=random(1,10) // Candle Colors candleColor= flip==true and flip[1]==false and barstate.isconfirmed==false?color.rgb(getColor(),getColor(),getColor(),0):flip==false and close>=open?color.green:color.red candleColor:= barstate.ishistory==true and close>=open?color.green: barstate.ishistory==true and close<open? color.red:candleColor barcolor(candleColor) if flip[1]==true and posLive==false flip:=false barsBetweenflips:=round(random(3,round(maxBars))) posLive:=true long:= flip[1]==true and coinLabel[1]>=5.0 short:= flip[1]==true and coinLabel[1]<5.0 // Calculate Position Boxes if long==true and posType!=1 riskLDEC=1-(risk/100) p1:= close[1]*(1+((risk/100)*ratio)) // TargetLine p2:=close[1] p3:= close[1]*riskLDEC // StopLine plotBox:=true posType:=1 if short==true and posType!=-1 riskSDEC=1-((risk*ratio)/100) p1:= close[1]*riskSDEC // TargetLine p2:=close[1] p3:= close[1]*(1+(risk/100)) // StopLine plotBox:=true posType:=-1 // Check Trade Status stoppedOut:= posType==1 and long==false and low<= p3? true: posType==-1 and short==false and high>=p3? true: false takeProfit:= posType==1 and long == false and high>= p1? true: posType==-1 and short==false and low<=p1? true: false if stoppedOut==true or takeProfit==true posType:=0 plotBox:=false posLive:=false // ====== Plots ======== plot1=plot(plotBox and showBox? p1:na,style=plot.style_linebr,color=color.white, transp= 100) plot2=plot(plotBox and showBox? p2:na,style=plot.style_linebr,color=color.white, transp= 100) plot3=plot(plotBox and showBox? p3:na,style=plot.style_linebr,color=color.white, transp= 100) fill(plot1,plot2,color= color.green) fill(plot2,plot3,color= color.red) plotshape(flip==true and flip[1]==false and coinLabel>=5.0,style=shape.labelup,location=location.belowbar, color=color.green,size=size.tiny,title="short label",text="Heads",textcolor=color.white) plotshape(flip==true and flip[1]==false and coinLabel<5.0,style=shape.labeldown,location=location.abovebar, color=color.red,size=size.tiny,title="short label",text="Tails",textcolor=color.white) if stoppedOut==true label.new(bar_index-1, p3, style=label.style_xcross, color=color.orange) if takeProfit==true label.new(bar_index-1, p1, style=label.style_flag, color=color.blue) if runTest==true and customTime==false or runTest==true and customTime==true and time >= start and time <= end strategy.entry("Sell", strategy.short,when=short==true) strategy.close("Sell", comment="Close Short", when=stoppedOut==true or takeProfit==true) strategy.entry("Long", strategy.long,when=long==true) strategy.close("Long",comment="Close Long", when= stoppedOut==true or takeProfit==true )