Strategi Beli/Jual pada Candle Close

Penulis:ChaoZhang, Tarikh: 2024-01-08 11:11:18
Tag:

img

Ringkasan

Strategi ini mencetuskan isyarat beli / jual dengan membandingkan harga penutupan lilin semasa dan lilin sebelumnya.

Secara khusus, jika lilin semasa ditutup di atas harga tertinggi lilin sebelumnya, isyarat beli dicetuskan.

Logika Strategi

  1. Dapatkan harga tertinggi dan terendah sejarah dalam jangka masa yang ditentukan (contohnya harian, setiap jam)
  2. Mengira jarak stop loss dan mengambil keuntungan
    • Jarak Stop Loss = Candle Terdahulu tertinggi - Candle Terdahulu terendah
    • Jarak keuntungan = Jarak Stop Loss * 3 (1:3 nisbah risiko-balasan)
  3. Tentukan hubungan antara penutupan semasa dan tinggi/rendah sebelumnya
    • Jika penutupan semasa > lilin teratas sebelumnya, isyarat beli pencetus
    • Jika penutupan semasa < lilin terendah sebelum ini, mencetuskan isyarat jual
  4. Tetapkan stop loss dan mengambil keuntungan selepas masuk
    • Selepas membeli, tetapkan stop loss pada lilin sebelumnya terendah - jarak stop loss, mengambil keuntungan pada lilin sebelumnya tertinggi + mengambil keuntungan jarak
    • Selepas menjual, tetapkan stop loss pada lilin sebelumnya tertinggi + jarak stop loss, mengambil keuntungan pada lilin sebelumnya terendah - mengambil keuntungan jarak

Yang di atas adalah logik perdagangan asas strategi ini.

Analisis Kelebihan

  • Idea strategi yang mudah dan jelas, mudah difahami dan dilaksanakan
  • Gunakan maklumat candlestick untuk menentukan arah trend
  • Mempunyai mekanisme stop loss dan mengambil keuntungan untuk mengawal risiko

Analisis Risiko

  • Penghakiman berdasarkan satu jangka masa sahaja boleh menghasilkan lebih banyak isyarat palsu
  • Tidak mengambil kira lebih banyak faktor seperti perubahan jumlah, turun naik dan lain-lain
  • Tetapan stop loss dan mengambil keuntungan mungkin tidak sesuai, terlalu luas atau terlalu ketat adalah kedua-duanya berisiko

Arahan pengoptimuman

  • Gabungkan lebih banyak faktor untuk mengesahkan isyarat kemasukan, seperti jumlah, purata bergerak dan lain-lain.
  • Mengoptimumkan algorithm stop loss dan mengambil keuntungan untuk mempunyai lebih wajar stop loss dan mengambil keuntungan yang mencukupi
  • Penyesuaian parameter mungkin diperlukan untuk produk yang berbeza
  • Jangka masa yang lebih lama boleh diuji

Ringkasan

Idea strategi adalah mudah dan jelas secara keseluruhan, menggunakan harga penutupan lilin untuk menentukan arah trend dan juga mempunyai stop loss / mengambil keuntungan untuk mengawal risiko, ia boleh berfungsi sebagai strategi asas untuk saham dan perdagangan crypto.


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

//@version=5
strategy("Buy/Sell on Candle Close", overlay=true)

var float prevLowest = na
var float prevHighest = na
var float slDistance = na
var float tpDistance = na

// Specify the desired timeframe here (e.g., "D" for daily, "H" for hourly, etc.)
timeframe = "D"

// Fetching historical data for the specified timeframe
pastLow = request.security(syminfo.tickerid, timeframe, low, lookahead=barmerge.lookahead_on)
pastHigh = request.security(syminfo.tickerid, timeframe, high, lookahead=barmerge.lookahead_on)

if bar_index > 0
    prevLowest := pastLow[1]
    prevHighest := pastHigh[1]

currentClose = close

if not na(prevLowest) and not na(prevHighest)
    slDistance := prevHighest - prevLowest
    tpDistance := 3 * slDistance // Adjusted for 1:3 risk-reward ratio

// Buy trigger when current close is higher than previous highest
if not na(prevLowest) and not na(prevHighest) and currentClose > prevHighest
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy TP/SL", "Buy", stop=prevLowest - slDistance, limit=prevHighest + tpDistance)

// Sell trigger when current close is lower than previous lowest
if not na(prevLowest) and not na(prevHighest) and currentClose < prevLowest
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell TP/SL", "Sell", stop=prevHighest + slDistance, limit=prevLowest - tpDistance)

plot(prevLowest, color=color.blue, title="Previous Lowest")
plot(prevHighest, color=color.red, title="Previous Highest")







Lebih lanjut