Tägliche Strategie basierend auf gleitendem Durchschnitt und Williams-Indikator


Erstellungsdatum: 2024-01-29 14:35:48 zuletzt geändert: 2024-01-29 14:35:48
Kopie: 1 Klicks: 639
1
konzentrieren Sie sich auf
1617
Anhänger

Tägliche Strategie basierend auf gleitendem Durchschnitt und Williams-Indikator

Überblick

Diese Strategie kombiniert die Verwendung der Durchschnittslinie, des ATR-Indikators und des William-Indikators für den Handel auf Tageslinie-Niveau für die GBP/JPY-Forex-Variante. Die Strategie beurteilt zunächst die Preisentwicklung und die möglichen Wendepunkte anhand der Durchschnittslinie, und verwendet dann den William-Indikator zur weiteren Bestätigung der Handelssignale, während der ATR-Indikator den Stop-Loss und die Handelsmenge berechnet.

Strategieprinzip

  1. Die Durchschnittslinie (Basislinie) der 20-Tage-Linie wird verwendet, um die Gesamttrend der Preise zu bestimmen. Die Preise werden als Kaufsignale unterhalb der Durchschnittslinie abgefegt und als Verkaufssignale oberhalb der Durchschnittslinie unterbrochen.
  2. Der William-Indikator wird verwendet, um eine Preisumkehr zu bestätigen. Der Indikator wird als Kaufbestätigung bei einem Durchschnitt von 35 und als Verkaufbestätigung bei einem Durchschnitt von 70 verwendet.
  3. Der ATR-Indikator berechnet den durchschnittlichen Schwankungsbereich der letzten 2 Tage. Dieser Wert wird mit dem Faktor multipliziert und als Stop-Loss-Distanz festgelegt.
  4. Risikokontrolle nach 50% des Konto-Ertrags. Die Transaktionsmenge wird nach Stop-Loss-Distanz-Risiko berechnet
  5. Nach dem Eintritt in die Long-Position wird der Stop-Loss-Punkt für den Preis-Low-Punkt abgezogen. Der Stop-Stop-Punkt für den Eintritt-Punkt wird um 100 Punkte erhöht. Die Exiting-Logik wird verwendet, um das Ausstiegssignal weiter zu bestätigen.
  6. Nach dem Eintritt in eine Short-Position sind Stop-Loss und Stop-Stop gleichzeitig. Die Exiting-Logik wird verwendet, um die Ausstiegssignale weiter zu bestätigen.

Analyse der Stärken

  1. Durch die Kombination von Trendbeurteilung und Kennzeichen für die Eintrittsbestätigung kann der Verlust durch falsche Durchbrüche effektiv gefiltert werden.
  2. ATR-Dynamische Stop-Loss kann eine angemessene Stop-Loss-Distanz auf Basis von Marktschwankungen festlegen
  3. Risikokontrolle und dynamische Handelsvolumen-Berechnung maximieren Einzelschäden
  4. Exiting Logic kombiniert mit Gleichschluss-Beschlüssen bestätigt den Zeitpunkt des Ausstiegs und verhindert eine vorzeitige Stilllegung

Risikoanalyse

  1. Die Wahrscheinlichkeit, dass ein durchschnittliches Urteil ein falsches Signal erzeugt, ist höher, und die Kennziffern müssen weiter bestätigt werden.
  2. Die Indikatoren selbst liefern falsche Signale und können Verluste nicht vollständig vermeiden.
  3. Die Strategie ist besser für Trendvarianten geeignet und kann weniger wirksam sein für Varianten, die in der Bandbreite schwanken
  4. Die falsche Einstellung der Risikokontrollquote kann auch die strategischen Erträge beeinträchtigen

Weitere Optimierungen und Verbesserungen können durch die Anpassung der Durchschnittszyklen, die Kombination von mehr Indikatoren oder die künstliche Intervention des Handels vorgenommen werden.

Zusammenfassen

Die Strategie kombiniert Trendbeurteilung und Indikatorfilterung, um die Methode für den Handel auf der Ebene der GBP / JPY-Sonnenlinie zu entwickeln. Gleichzeitig wird das Handelsrisiko durch die Verwendung von dynamischen Stop-Loss- und Risikokontrollen kontrolliert. Es gibt viel Optimierungsraum, der die Effektivität der Strategie durch Parameteranpassung und Kombination von Methoden weiter verbessern kann.

Strategiequellcode
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("GBPJPY DAILY FX",initial_capital = 1000,currency="USD", overlay=true)

UseHAcandles    = input(false, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

//INDICATOR---------------------------------------------------------------------    
    //Average True Range (1. RISK)
atr_period = 2
atr = atr(atr_period)



    //Ichimoku Cloud - Kijun Sen (2. BASELINE)
ks_period = 20
kijun_sen = (highest(haHigh,ks_period) + lowest(haLow,ks_period))/2
base_long = haOpen < kijun_sen and haClose > kijun_sen
base_short = haOpen > kijun_sen and haClose < kijun_sen

    //Williams Percent Range (3. Confirmation#1)
use_wpr = true
wpr_len = 4
wpr = -100*(highest(haHigh,wpr_len) - haClose)/(highest(haHigh,wpr_len) - lowest(haLow,wpr_len))
wpr_up = -35
wpr_low = -70
conf1_long = wpr >= wpr_up
conf1_short = wpr <= wpr_low
if(use_wpr == false)
    conf1_long := true
    conf1_short := true
//TRADE LOGIC-------------------------------------------------------------------
    //Long Entry
    //if -> WPR crosses below -39 AND MACD line is less than signal line
l_en = base_long and conf1_long
    //Long Exit
    //if -> WPR crosses above -14
l_ex = haClose < kijun_sen
    //Short Entry
    //if -> WPR crosses above -39 AND MACD line is greater than signal line
s_en = base_short and conf1_short
    //Short Exit
    //if -> WPR crosses under -14
s_ex = haClose > kijun_sen
    
strategy.initial_capital = 50000
//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
isTwoDigit = input(true,"Is this a 2 digit pair? (JPY, XAU, XPD...")
risk = input(50,"Risk %")/100           //risk % per trade
equity_protector = input(30,"Equity Protection %")/100  //equity protection %
stop = atr*100000*input(1,"Average True Range multiplier")    //Stop level
if(isTwoDigit)
    stop := stop/100
target = input(100, "Target TP in Points")  //TP level
    //Calculate current DD and determine if stopout is necessary
equity_stopout = false
if(floating<0 and abs(floating/balance)>equity_protector)
    equity_stopout := true
    
    //Calculate the size of the next trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1)
    size := 1            //Set min. lot size

//TRADE EXECUTION---------------------------------------------------------------
strategy.close_all(equity_stopout)      //Close all trades w/equity protector
is_open = strategy.opentrades > 0

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

if(time_cond)
    strategy.entry("l_en",true,1,oca_name="a",when=l_en and not is_open)  //Long entry
    strategy.entry("s_en",false,1,oca_name="a",when=s_en and not is_open) //Short entry
    
    strategy.exit("S/L","l_en",loss=stop, profit=target)      //Long exit (stop loss)
    strategy.close("l_en",when=l_ex)            //Long exit (exit condition)
    strategy.exit("S/L","s_en",loss=stop, profit=target)      //Short exit (stop loss)
    strategy.close("s_en",when=s_ex)            //Short exit (exit condition)