Die Kernidee dieser Strategie besteht darin, Wahrscheinlichkeitsereignisse wie Münzwerfen und Würfelrollen mit zufälligen Zahlen zu simulieren, um lange oder kurze Positionen zu bestimmen, wodurch ein zufälliger Handel implementiert wird.
Verwendenflip
Diese Variablen werden von den einzelnencoinLabel
Zufallszahlgröße.
Verwendungrisk
undratio
um Stop-Loss- und Gewinnlinien zu setzen.
Auslösen des nächsten Handelssignals nach dem festgelegten maximalen Zyklus.
Steuern Sie, ob das Schließfeld über dieplotBox
variable.
stoppedOut
undtakeProfit
Variablen werden verwendet, um Stop Loss oder Take Profit zu erkennen.
Bereitstellung von Backtesting-Fähigkeiten zur Prüfung der Strategieleistung.
Die Code-Struktur ist klar und leicht verständlich und zweitrangig zu entwickeln.
Die Benutzeroberfläche ist freundlich und verschiedene Parameter können über die grafische Schnittstelle angepasst werden.
Die Zufälligkeit ist stark und nicht von Marktschwankungen beeinflusst, mit hoher Zuverlässigkeit.
Durch die Optimierung der Parameter kann eine bessere Kapitalrendite erzielt werden.
Kann als Demonstration oder Test für andere Strategien verwendet werden.
Zufälliges Handeln kann den Markt nicht beurteilen, und es besteht ein gewisses Gewinnrisiko.
Da die optimale Parameterkombination nicht ermittelt werden kann, ist eine wiederholte Prüfung erforderlich.
Es besteht die Gefahr einer Superkorrelation, die durch zu dichte Zufallssignale entstehen kann.
Es wird empfohlen, Stopp-Loss- und Gewinnmechanismen zur Risikokontrolle zu verwenden.
Die Risiken können durch eine angemessene Verlängerung des Handelsintervalls verringert werden.
Komplexere Faktoren einbeziehen, um zufällige Signale zu erzeugen.
Erhöhen Sie den Handel mit Sorten, um den Testumfang zu erweitern.
Optimieren Sie die Interaktion mit der Benutzeroberfläche und erhöhen Sie die Fähigkeiten zur Strategiekontrolle.
Bereitstellung weiterer Prüfwerkzeuge und Indikatoren für die Optimierung von Parametern.
Kann als Handelssignal oder Stop Loss Take Profit-Komponente verwendet werden, die anderen Strategien hinzugefügt wird.
Der Gesamtrahmen dieser Strategie ist vollständig, er erzeugt Handelssignale basierend auf zufälligen Ereignissen, mit hoher Zuverlässigkeit. Gleichzeitig bietet es Parameteranpassung, Backtesting und Charting-Fähigkeiten. Es kann verwendet werden, um Anfängerstrategieentwicklung zu testen, und auch als Basismodul für andere Strategien. Durch eine angemessene Optimierung kann die Strategieleistung weiter verbessert werden.
/*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 )