
Strategi ini adalah strategi persilangan rata-rata bergerak yang tipikal, yang menggunakan dua kumpulan rata-rata, satu kumpulan rata-rata cepat, dan satu kumpulan rata-rata perlahan pada masa yang sama. Ia menghasilkan isyarat beli apabila ia melintasi rata-rata perlahan di atas rata-rata pantas; ia menghasilkan isyarat menjual apabila ia melintasi rata-rata perlahan di bawah rata-rata pantas.
Logik utama strategi ini adalah berdasarkan pada persilangan dua kumpulan garis rata-rata pantas untuk menilai masa masuk dan keluar.
Pertama, kita mengira dua set garis purata perlahan:
Kemudian, tentukan sama ada EMA pantas adalah EMA emas atau EMA lambat adalah EMA mati:
Untuk menyaring isyarat palsu, kumpulan kedua EMA ditambah dengan pengesahan SMA:
Oleh itu, dengan dua set pengesahan garis lurus yang cepat dan perlahan, banyak isyarat palsu dapat disaring, yang meningkatkan kebolehpercayaan isyarat.
Apabila keputusan menghasilkan isyarat beli, masuk lebih banyak; apabila keputusan menghasilkan isyarat jual, masuk kosong.
Selain itu, strategi ini juga menetapkan logik stop stop loss. Apabila memegang kedudukan, harga stop dan stop loss akan dikesan berdasarkan peratusan keuntungan dan kerugian yang ditetapkan.
Strategi ini mempunyai beberapa kelebihan:
Strategi ini mempunyai beberapa risiko:
Untuk mengawal risiko, disarankan untuk:
Strategi ini juga boleh dioptimumkan dalam beberapa aspek:
Secara keseluruhannya, strategi binari ini mempunyai ciri-ciri yang sederhana, intuitif, mudah dilaksanakan, dan mempunyai ciri-ciri seperti signal perdagangan yang dibentuk oleh persilangan garis lurus yang cepat dan perlahan, menetapkan risiko kawalan hentikan dan hentikan. Strategi ini dapat dioptimumkan mengikut parameter pasaran dan permintaan, dan juga boleh digunakan dengan indikator teknikal atau kombinasi strategi lain, dan mempunyai kegunaan yang baik dalam perdagangan kuantitatif.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JMLSlop
//@version=4
src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)
// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len)
//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)
//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)
//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)
// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01
plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")
// Orders config
takeProfitPrice =
(strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na
longStopPrice = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)
longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
strategy.entry("Enter L", strategy.long)
shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
strategy.entry("Enter S", strategy.short)
if (strategy.position_size > 0)
strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)