
EMA Gold Cross Trading Strategy Dengan Mengira Rata-Rata EMA Periode Yang Berlainan, Mencari Kesan Persaingan Mereka Untuk Menerbitkan Isyarat Beli Dan Jual. Apabila EMA Periode Yang Pendek Menerbitkan Isyarat Beli Apabila EMA Periode Yang Panjang Menerbitkan Isyarat Jual Apabila EMA Periode Yang Pendek Menerbitkan Isyarat Jual Apabila EMA Periode Yang Panjang Menerbitkan Isyarat Jual
Strategi ini berpusat pada pengiraan purata EMA untuk dua tempoh yang berbeza, termasuk purata EMA untuk tempoh yang lebih pendek, dengan tempoh lalai 9, dan purata EMA untuk tempoh yang lebih lama, dengan tempoh lalai 20. Kod dikira kedua-dua garis secara berasingan dengan memanggil fungsi terbina dalam EMA dalam skrip pin. Kemudian menghasilkan dagangan dengan menilai sama ada dua garis EMA bersilang.
Penentuan isyarat silang dilakukan melalui dua fungsi terbina dalam dalam skrip pin iaitu crossover dan crossunder. Fungsi crossover menentukan sama ada garis cepat melalui garis lambat dari bawah, mengembalikan nilai bull; fungsi crossunder menentukan sama ada garis cepat melalui garis lambat dari atas ke bawah, mengembalikan nilai bull. Berdasarkan nilai pulangan kedua-dua fungsi ini, kod menyampaikan arahan beli atau jual yang sesuai.
Selain itu, kod ini juga menyediakan beberapa syarat tambahan, seperti menetapkan tarikh permulaan dan akhir, sekatan hanya untuk melakukan lebih banyak atau hanya untuk melakukan kosong, yang membantu untuk melakukan pengukuran atau pengoptimuman yang lebih halus.
Kelebihan terbesar strategi ini adalah sangat mudah, mudah difahami dan dilaksanakan, sesuai untuk pelajar pemula. Selain itu, rata-rata bergerak itu sendiri sebagai satu trend pengesanan petunjuk, boleh mengesan trend pasaran dengan berkesan, menggunakan trend untuk menghasilkan pendapatan tambahan. Akhirnya, strategi ini mempunyai sedikit parameter, mudah disesuaikan, yang merupakan salah satu kelebihan.
Strategi ini kebanyakannya menghadapi risiko perdagangan bising dan pembalikan trend. Garis EMA mudah dipengaruhi oleh turun naik pasaran jangka pendek, yang mungkin menghasilkan isyarat yang salah, yang menyebabkan perdagangan yang tidak perlu, yang akan meningkatkan frekuensi dan kos perdagangan. Di sisi lain, apabila isyarat silang dikeluarkan, trend mungkin sudah mendekati titik pembalikan, di mana risiko perdagangan lebih besar.
Anda boleh mengurangkan perdagangan bising dengan cara seperti menyesuaikan kitaran EMA, atau menambah syarat penapisan lain. Pada masa yang sama, anda boleh menetapkan stop loss untuk mengawal kerugian tunggal. Parameter pengoptimuman dapat menjadikan strategi lebih stabil.
Strategi ini boleh dioptimumkan dalam beberapa arah:
EMA Gold Cross adalah strategi trend-following yang mudah dan berkesan. Ia menggunakan EMA Cross untuk menghasilkan isyarat perdagangan yang dapat menangkap trend harga secara automatik, profit from trends in price. Strategi ini mudah difahami dan disesuaikan, sangat sesuai untuk dipelajari oleh pemula, tetapi juga boleh diintegrasikan sebagai modul ke dalam strategi yang lebih kompleks.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
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/
// This strategy has been created for illustration purposes only and should not be relied upon as a basis for buying, selling, or holding any asset or security.
// © kirilov
//@version=4
strategy(
"EMA Cross Strategy",
overlay=true,
calc_on_every_tick=true,
currency=currency.USD
)
// INPUT:
// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input(title="Fast EMA", type=input.integer, defval=9, minval=1, maxval=9999)
emaSlow = input(title="Slow EMA", type=input.integer, defval=20, minval=1, maxval=9999)
// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")
// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 1970 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2170 23:59"))
// CALCULATIONS:
// Use the built-in function to calculate two EMA lines
fastEMA = ema(close, emaFast)
slowEMA = ema(close, emaSlow)
// PLOT:
// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.black, linewidth=2)
plot(series=slowEMA, color=color.red, linewidth=2)
// CONDITIONS:
// Check if the close time of the current bar falls inside the date range
inDateRange = true
// Translate input into trading conditions
longOK = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")
// Decide if we should go long or short using the built-in functions
longCondition = crossover(fastEMA, slowEMA)
shortCondition = crossunder(fastEMA, slowEMA)
// ORDERS:
// Submit entry (or reverse) orders
if (longCondition and inDateRange)
strategy.entry(id="long", long=true, when = longOK)
if (shortCondition and inDateRange)
strategy.entry(id="short", long=false, when = shortOK)
// Submit exit orders in the cases where we trade only long or only short
if (strategy.position_size > 0 and shortCondition)
strategy.exit(id="exit long", stop=close)
if (strategy.position_size < 0 and longCondition)
strategy.exit(id="exit short", stop=close)