Strategi ini dinamakan
Strategi ini bergantung terutamanya pada dua penunjuk teknikal:
Indikator Trend: Indikator STC untuk menentukan arah trend. STC merangkumi garis indikator MACD, Stochastic, dan STC. Penembusan ke atas dari zon 0-25 menandakan trend bullish, sementara penembusan ke bawah dari zon 75-100 menandakan trend bearish.
Crossover purata bergerak: Purata bergerak mudah pantas (periode lalai 35) melintasi di atas / di bawah SMA perlahan (periode lalai 200). Isyarat menaik dipicu apabila SMA pantas melintasi di atas SMA perlahan. Isyarat menurun dipicu pada crossover bertentangan.
Logik isyarat dagangan ditakrifkan sebagai berikut:
Isyarat panjang: STC pecah di atas garisan 25, SMA pantas di atas SMA perlahan, dan harga penutupan di atas SMA pantas.
Isyarat pendek: STC pecah di bawah garis 75, SMA pantas di bawah SMA perlahan, dan harga penutupan di bawah SMA pantas.
Kelebihan strategi ini termasuk:
Isyarat perdagangan yang boleh dipercayai daripada menggabungkan trend dan indikator purata bergerak.
Tempoh purata bergerak yang boleh disesuaikan. Tempoh MA boleh dioptimumkan untuk keadaan pasaran yang berbeza.
Risiko yang boleh dikawal. STC mengenal pasti tahap overbought / oversold untuk mengelakkan membeli puncak dan menjual bahagian bawah. Henti sasaran menetapkan julat keuntungan / kerugian 400 mata.
Terdapat beberapa risiko yang perlu dipertimbangkan:
Potensi untuk STC palsu breakouts. perlu disahkan oleh tindakan harga.
Lebih banyak isyarat palsu dari persimpangan MA.
Hanya berdagang dalam satu arah pada satu masa. Mengehadkan ruang untuk kedudukan terbuka.
Tidak ada penanganan risiko spread dalam perdagangan FX margin. Spread boleh menjadi besar dalam perdagangan langsung.
Laluan pengoptimuman yang mungkin termasuk:
Sesuaikan STC overbought / oversold parameter.
Mengoptimumkan tempoh MA untuk meningkatkan kebolehpercayaan isyarat silang.
Tambah penapis tambahan seperti Bollinger Bands untuk mengurangkan perdagangan pecah palsu.
Melaksanakan logik perdagangan dua arah untuk meningkatkan kapasiti.
Tambah logik stop loss untuk mengawal kerugian setiap perdagangan.
Ringkasnya, strategi ini menggabungkan trend dan indikator crossover purata bergerak untuk menentukan arah trend dan masa kemasukan. Dengan kawalan risiko yang betul, ia dapat mencapai pulangan yang baik. Logik yang mudah membuatnya mudah difahami dan dioptimumkan di pelbagai keadaan pasaran, sesuai untuk pemula.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Shaff Trend Cycle coded by Alex Orekhov (everget) // Strategy and its additional conditions provided by greenmask // Schaff Trend Cycle script may be freely distributed under the MIT license. strategy("STC", shorttitle="STC") fastLength = input(title="MACD Fast Length", type=input.integer, defval=23) slowLength = input(title="MACD Slow Length", type=input.integer, defval=50) cycleLength = input(title="Cycle Length", type=input.integer, defval=10) d1Length = input(title="1st %D Length", type=input.integer, defval=3) d2Length = input(title="2nd %D Length", type=input.integer, defval=3) src = close highlightBreakouts = input(title="Highlight Breakouts ?", type=input.bool, defval=true) macd = ema(src, fastLength) - ema(src, slowLength) k = nz(fixnan(stoch(macd, macd, macd, cycleLength))) d = ema(k, d1Length) kd = nz(fixnan(stoch(d, d, d, cycleLength))) stc = ema(kd, d2Length) stc := stc > 100 ? 100 : stc < 0 ? 0 : stc stcColor = not highlightBreakouts ? (stc > stc[1] ? color.green : color.red) : #ff3013 stcPlot = plot(stc, title="STC", color=stcColor, transp=0) upper = 75 lower = 25 transparent = color.new(color.white, 100) upperLevel = plot(upper, title="Upper", color=color.gray) hline(50, title="Middle", linestyle=hline.style_dotted) lowerLevel = plot(lower, title="Lower", color=color.gray) fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90) upperFillColor = stc > upper and highlightBreakouts ? color.green : transparent lowerFillColor = stc < lower and highlightBreakouts ? color.red : transparent fill(upperLevel, stcPlot, color=upperFillColor, transp=80) fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80) strategy.initial_capital = 50000 ordersize=floor(strategy.initial_capital/close) targetvalue = input(title="Target/stop", type=input.integer, defval=400) ma1length = input(title="SMA1", type=input.integer, defval=35) ma2length = input(title="SMA2", type=input.integer, defval=200) ma1 = ema(close,ma1length) ma2 = ema(close,ma2length) bullbuy = crossover(stc, lower) and ma1>ma2 and close>ma1 bearsell = crossunder(stc, upper) and ma1<ma2 and close<ma1 if (bullbuy) strategy.entry("Riposte", strategy.long, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) if (bearsell) strategy.entry("Riposte", strategy.short, ordersize) strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue) //plotshape(bullbuy, title= "Purple", location=location.belowbar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte") //plotshape(bearsell, title= "Purple", location=location.abovebar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")