
Die Kernidee der Strategie ist es, mit einer Zufallszahl Wahrscheinlichkeitsereignisse wie die Simulation eines Münzkorons zu simulieren, wobei die Entscheidung, ob ein Mehrkopf oder ein Leerkopf zu machen, basierend auf den Ergebnissen der Ereignisse getroffen wird. Diese Handelsstrategie kann als Simulationstest verwendet werden, aber auch als Basisrahmen für die Entwicklung von komplexeren Strategien.
passierenflipVariablen simulieren Zufallsereignisse, basierend aufcoinLabelDie Zufallszahl entscheidet, ob man mehr oder weniger macht.
NutzungriskUndratioSetzen Sie die Stop-Loss-Strahlungsleine.
Die maximale Anzahl der eingestellten Zyklen, um das nächste Handelssignal zu lösen.
passierenplotBoxOb die Variablen-Kontrolle die Haltestelle anzeigt oder nicht
stoppedOutUndtakeProfitDie Variablen werden verwendet, um Verlust oder Stillstand zu ermitteln.
Die Funktion Feedback liefert eine Teststrategie für die Leistung.
Der Code ist klar strukturiert, leicht zu verstehen und zweitzuentwickeln.
Die Benutzeroberfläche ist interaktiv und die Parameter können über die grafische Oberfläche angepasst werden.
Das System ist sehr zuverlässig, unbeeinflusst von Marktschwankungen und sehr zuverlässig.
Durch die Optimierung von Parametern kann eine bessere Rendite erzielt werden.
Es kann als Demonstration oder Test für andere Strategien verwendet werden.
Der Random-Trading-Prozess kann nicht über den Markt urteilen, und es besteht ein gewisses Gewinnrisiko.
Die optimale Kombination der Parameter ist nicht festzustellen und muss wiederholt getestet werden.
Es besteht die Gefahr, dass ein zu starkes Zufallssignal zu übermäßig relevant ist.
Es wird empfohlen, die Risiken in Kombination mit Stop-Loss-Stopp-Mechanismen zu kontrollieren.
Das Risiko kann durch eine angemessene Verlängerung des Handelsintervalls verringert werden.
In Kombination mit komplexeren Faktoren entstehen zufällige Signale.
Erweiterung der Tests und Erweiterung der Handelsarten.
Optimierte UI-Interaktionen und zusätzliche Strategie-Kontrollfunktionen.
Es werden weitere Testwerkzeuge und Kennzahlen zur Optimierung der Parameter bereitgestellt.
Sie können als Handelssignal oder Stop-Loss-Komponente in andere Strategien aufgenommen werden.
Das Gesamtkonzept der Strategie ist vollständig, erzeugt Handelssignale auf Basis von zufälligen Ereignissen und ist sehr zuverlässig. Es bietet auch Parameteranpassungen, Rückmessungen und Grafikfunktionen. Es kann sowohl als Testmodul für neu entwickelte Strategien als auch als Basismodul für andere Strategien verwendet 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 )