Bu, giriş sinyali oluşturabilmek amacıyla trendin ve MACD 'nin yönünü belirlemek için EMA ve SMA kesişimini kullanan trend tabanlı bir stratejidir. Aynı zamanda strateji, takip eden zarar kes olarak çalışan ATR'yi kullanır.
Trend şeridi yeşile döndüğünde ve MACD hattı sinyal hattını geçtiğinde strateji girişi çalışacaktır. Bu strateji aynı zamanda piramidi de hesaba katar ve sinyal kendini tekrar edecekse ikinci kez girmesine izin verir.
3 çıkış noktası vardır. Pozisyonun ilk %10'u, fiyat %2 arttığında kapanacaktır. %50'lik ikinci kısım, fiyat %5 Kâr Al hedefine ulaştığında kapatılacaktır. Pozisyonun kalan %40'ı, fiyat ATR çizgisinin altında kapandığında oluşacak çıkış sinyalini bekleyecektir.
Strateji, dolar cinsinden sabit bir miktar kullanıyor, giriş her gerçekleştiğinde strateji sırayla 100$ ile girecek.
Strateji, diğer kripto varlıklarına uygulanabilir. Ancak, girdi değişiklikleri gerektirecektir.
ÖNEMLİ
Bu bir trend stratejisidir ve trend olan pazarda daha iyi çalışır
Bu Sadece Uzun stratejisidir
EMA ve SMA etkileşimini kullanarak trend tanımlayıcıyı ekledik
Kar al ve zararı kes seviyelerini ekledik
Stratejinin aylık olarak nasıl performans gösterdiğini görebilmeniz için dönem seçimi için girdiler ekledik.
30 dakika ETH-USD için geçerlidir
| Bitmex | FTX |
Input | Value | Value |
Period | 39 | 38 |
Fast Length | 7 | 7 |
Slow Length | 14 | 16 |
Source | Close | Close |
Signal Smoothing | 3 | 3 |
Simple MA (Oscillator) | False (NA) | False (NA) |
Simple MA (Signal Line) | True | True |
Long Take Profit 1 % | 2 | 2.5 |
Long Take Profit 1 Qty | 10 | 10 |
Long Take Profit 2% | 5 | 5 |
Long Take Profit 2 Qty | 50 | 40 |
SL Multiplier | 3.5 | 3.5 |
ATR Period | 6 | 5 |
Strateji komut dosyası kodu
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Wunderbit Trading
//@version=4
strategy("MACD Strategy", overlay=true, pyramiding=2, commission_type=strategy.commission.percent, commission_value=0.04, initial_capital=100, default_qty_type = strategy.cash, default_qty_value = 100, currency = currency.USD)
// FUNCTIONS
Ema(src,p) =>
ema = 0.
sf = 2/(p+1)
ema := nz(ema[1] + sf*(src - ema[1]),src)
Sma(src,p) => a = cum(src), (a - a[max(p,0)])/max(p,0)
Atr(p) =>
atr = 0.
Tr = max(high - low, max(abs(high - close[1]), abs(low - close[1])))
atr := nz(atr[1] + (Tr - atr[1])/p,Tr)
/// TREND
ribbon_period = input(39, "Period", step=1)
leadLine1 = ema(close, ribbon_period)
leadLine2 = sma(close, ribbon_period)
p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1)
p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1)
fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)
// MACD
fast_length = input(title="Fast Length", type=input.integer, defval=7)
slow_length = input(title="Slow Length", type=input.integer, defval=14)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 3)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? Sma(src, fast_length) : Ema(src, fast_length)
slow_ma = sma_source ? Sma(src, slow_length) : Ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? Sma(macd, signal_length) : Ema(macd, signal_length)
hist = macd - signal
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
// plot(macd, title="MACD", color=col_macd, transp=0)
// plot(signal, title="Signal", color=col_signal, transp=0)
// TAKE PROFIT AND STOP LOSS
long_tp1_inp = input(2, title='Long Take Profit 1 %', step=0.1)/100
long_tp1_qty = input(10, title="Long Take Profit 1 Qty", step=1)
long_tp2_inp = input(5, title='Long Take Profit 2%', step=0.1)/100
long_tp2_qty = input(50, title="Long Take Profit 2 Qty", step=1)
long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)
// Stop Loss
multiplier = input(3.5, "SL Mutiplier", minval=1, step=0.1)
ATR_period=input(6,"ATR period", minval=1, step=1)
// Strategy
entry_long=crossover(macd,signal) and leadLine2 < leadLine1
entry_price_long=valuewhen(entry_long,close,0)
SL_floating_long = entry_price_long - multiplier*Atr(ATR_period)
exit_long= close < SL_floating_long
///// BACKTEST PERIOD ///////
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(9999, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
if testPeriod()
strategy.entry("long", strategy.long, comment="Insert Enter Long Comment", when=entry_long)
strategy.exit("TP1","long", qty_percent=long_tp1_qty, limit=long_take_level_1)//, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
strategy.exit("TP2", qty_percent=long_tp2_qty, limit=long_take_level_2) //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
strategy.close("long", when=exit_long, comment="Insert Exit Long comment" )
// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit")
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit")
plot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")