
Strategi ini adalah strategi lintas rata-rata bergerak yang khas, yang menggunakan dua set rata-rata, satu set rata-rata cepat, dan satu set rata-rata lambat secara bersamaan. Ketika rata-rata cepat melewati rata-rata lambat, sinyal beli dihasilkan; Ketika rata-rata cepat melewati rata-rata lambat, sinyal jual dihasilkan. Strategi ini menggunakan kedua rata-rata EMA dan SMA secara bersamaan, membentuk dua set rata-rata cepat dan lambat.
Logika utama dari strategi ini adalah berdasarkan pada persilangan dua set garis rata-rata cepat dan lambat untuk menilai waktu masuk dan keluar.
Pertama, perhitungkan dua set rata-rata cepat dan lambat:
Kemudian, pertimbangkan apakah EMA cepat adalah Gold Fork atau SMA lambat adalah Dead Fork:
Untuk menyaring sinyal palsu, kelompok kedua dari EMA dan SMA dikonfirmasi:
Dengan demikian, dengan dua set konfirmasi garis lurus cepat dan lambat, banyak sinyal palsu dapat disaring, sehingga meningkatkan keandalan sinyal.
Ketika penilaian menghasilkan sinyal beli, masuk lebih banyak; Ketika penilaian menghasilkan sinyal jual, masuk kosong.
Selain itu, strategi ini juga menyertakan logika stop loss. Saat memegang posisi, harga stop loss dan stop loss akan dilacak berdasarkan rasio untung rugi yang telah disetel.
Strategi ini memiliki beberapa keuntungan:
Strategi ini juga memiliki beberapa risiko:
Untuk mengendalikan risiko, disarankan:
Strategi ini juga dapat dioptimalkan dalam beberapa hal:
Secara keseluruhan, strategi biner linear Forex ini memiliki beberapa fitur sederhana, intuitif, dan mudah diterapkan. Strategi ini dapat dioptimalkan berdasarkan parameter pasar dan kebutuhan, dan dapat digunakan dengan indikator teknis lainnya atau kombinasi strategi.
/*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)