Menggerakkan strategi volum merentas tempoh masa


Tarikh penciptaan: 2023-11-03 16:35:15 Akhirnya diubah suai: 2023-11-03 16:35:15
Salin: 0 Bilangan klik: 621
1
fokus pada
1617
Pengikut

Menggerakkan strategi volum merentas tempoh masa

Gambaran keseluruhan

Strategi ini menghasilkan isyarat dagangan berdasarkan pergerakan kuantiti yang bergerak, idea utamanya adalah untuk melihat pergerakan harga dalam tempoh masa yang ditetapkan dan menilai perubahan trend harga berdasarkan pergerakan kuantiti yang bergerak.

Prinsip Strategi

Strategi ini menilai pergerakan harga dengan mengira harga tertinggi dan terendah dalam tempoh masa tertentu, iaitu tinggi dan rendah.

Khususnya, strategi akan mengira harga tertinggi pada garis N-root K yang lalu sebagai pivot high, dan harga terendah pada garis M-root K yang lalu sebagai pivot low. Apabila titik tertinggi pada garis K semasa melebihi pivot high, ia akan menghasilkan isyarat melakukan banyak; apabila titik rendah pada garis K semasa jatuh di bawah pivot low, ia akan menghasilkan isyarat melakukan kosong.

Selepas melakukan over dan short, strategi akan menggunakan ATR untuk menetapkan stop loss, dan berhenti secara beransur-ansur dalam hari. Pada masa yang sama, strategi juga akan membersihkan semua kedudukan dalam tempoh masa tertentu (misalnya 14:55).

Strategi ini mudah dan berkesan menggunakan harga untuk menangkap trend dalam jangka masa tertentu, sangat sesuai untuk perdagangan jangka pendek dalam sehari.

Kelebihan Strategik

  • Meneroka pergerakan harga, menangkap perubahan trend, dan memberi isyarat yang lebih dipercayai
  • Hanya memerlukan data K-line asas, mudah untuk dilaksanakan
  • Hentikan kerosakan yang munasabah, hentikan kerosakan dalam sehari, mengawal risiko dengan berkesan
  • Untuk laluan pendek pada waktu siang, untuk mengelakkan risiko bermalam
  • Parameter yang lebih sedikit dan mudah dioptimumkan

Risiko Strategik dan Penyelesaian

  • Terdapat sedikit ketinggalan dan mungkin kehilangan peluang untuk memulakan trend

Tempoh masa boleh diselaraskan dengan sewajarnya, atau gabungan penunjuk lain untuk menentukan masa masuk

  • Lebih banyak isyarat palsu apabila trend tidak jelas

Anda boleh menyesuaikan parameter atau menambah syarat penapisan seperti trend indicator, volume transaksi dan sebagainya.

  • Transaksi dalam talian pendek memerlukan kos modal yang lebih tinggi

Anda boleh menyesuaikan saiz kedudukan anda atau memanjangkan tempoh kedudukan anda dengan sewajarnya.

  • Bergantung pada parameter yang dioptimumkan, keadaan pasaran yang berbeza mungkin berbeza

Parameter harus disesuaikan mengikut keadaan pasaran yang berbeza, atau mengoptimumkan secara automatik dengan kaedah pembelajaran mesin

Arah pengoptimuman strategi

  • Cuba data harga lain seperti harga tipikal, harga purata dan sebagainya

  • Syarat penapisan seperti peningkatan jumlah atau kadar turun naik

  • Cuba kombinasi parameter yang berbeza

  • Menentukan arah trend dengan menggunakan penunjuk trend

  • Mengoptimumkan parameter secara automatik menggunakan kaedah pembelajaran mesin

  • Meluas ke beberapa tempoh masa, gantikan masa masuk ke tempat

ringkaskan

Strategi ini mempunyai pemikiran keseluruhan yang jelas dan ringkas, dengan memanfaatkan harga yang bergerak untuk menangkap trend jangka pendek, faktor keuntungan yang lebih tinggi dicapai. Terdapat sedikit parameter strategi, mudah diuji dan dioptimumkan, sesuai untuk operasi garis pendek dalam sehari. Walaupun terdapat beberapa tahap ketinggalan dan masalah isyarat palsu, tetapi dapat diperbaiki dengan cara seperti penyesuaian parameter, penambahan syarat penapis, dan banyak ruang untuk pengoptimuman.

Kod sumber strategi
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//   ____________        _________           _____________
//  |____________|      ||________|          ||__________|
//       ||             ||        ||         ||
//       ||             ||________||         ||
//       ||     H E     ||________   U L L   ||       H A R T I S T
//       ||             ||        ||         ||
//       ||             ||________||         ||__________
//       ||             ||________|          ||__________|
  
//@version=5
// strategy("PIVOT STRATEGY [5MIN TF]",overlay=true ,commission_type = strategy.cash, commission_value = 30 , slippage = 2, default_qty_value = 60, currency = currency.NONE, pyramiding = 0)
leftbars = input(defval = 10)
rightbars = input(defval = 15)

// ═══════════════════════════ //
// ——————————> INPUTS <——————— //
// ═══════════════════════════ //

EMA1 = input.int(title='PRICE CROSS EMA', defval = 150, minval = 10 ,maxval = 400)
factor1 = input.float(title='_ATR LONG',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL LONG")
factor2 = input.float(title='_ATR SHORT',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL SHORT")
risk = input.float(title='RISK',defval = 200 , minval = 1 , maxval = 5000 , step = 50, tooltip = "RISK PER TRADE")

var initialCapital = strategy.equity
t = time(timeframe.period, '0935-1400:1234567')
time_cond = true

// ══════════════════════════════════ //
// ———————————> EMA DATA <——————————— //
// ══════════════════════════════════ //
ema1 = ta.ema(close, EMA1)

plot(ema1, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema1')

// ══════════════════════════════════ //
// ————————> TRAIL DATA <———————————— //
// ══════════════════════════════════ //
// *******Calculate LONG TRAIL data*****
ATR_LO = ta.atr(14)*factor1

// *******Calculate SHORT TRAIL data*****
ATR_SH = ta.atr(14)*factor2

longStop = close - ATR_LO
shortStop = close + ATR_SH

// Plot atr data
//plot(longStop, color=color.new(color.green, 0), style=plot.style_linebr, title='Long Trailing Stop')
//plot(shortStop , color=color.new(color.red, 0), style=plot.style_linebr, title='Short Trailing Stop')

// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //
// ————————————————————————————————————————————————————————> PIVOT DATA <———————————————————————————————————————————————————————————————————————————————————————————————————— //
// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //

ph = ta.pivothigh(close,leftbars, rightbars)
pl = ta.pivotlow(close,leftbars, rightbars)

pvt_condition1 = not na(ph)

upper_price = 0.0
upper_price := pvt_condition1 ? ph : upper_price[1]

pvt_condition2 = not na(pl)

lower_price = 0.0
lower_price := pvt_condition2 ? pl : lower_price[1]

// Signals
long  = ta.crossover(high, upper_price + syminfo.mintick)
short = ta.crossunder(low, lower_price - syminfo.mintick)

plot(upper_price, color= close > ema1  ? color.green : na, style=plot.style_line, title='PH')

plot(lower_price,  color= close <  ema1  ? color.red : na, style=plot.style_line, title='PL')


// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( long and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close >= ema1 )
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "B")
    
//plot(longStop , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = longStop ,comment='S')
 

// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( short and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close <= ema1 )
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "S") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" ,  stop = shortStop ,comment='B')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 55)

// ════════════════════════════════════════//
// ————————> MAX INTRADAY LOSS  <————————— //
// ════════════════════════════════════════//
// strategy.risk.max_intraday_loss(type = strategy.cash, value = risk)