Dalam edisi ini, kami akan membahas "strategi EMA dua arah yang ajaib" yang berasal dari YouTube, yang dikenal sebagai strategi pembunuh pasar saham dan mata uang kripto. Saya menonton video dan mengetahui bahwa strategi ini adalah strategi bahasa pine untuk trading view, menggunakan dua indikator trading view.
Indikator EMA 1.
Untuk desain yang sederhana, kita tidak menggunakan Moving Average Exponential yang tercantum di video ini. Kita menggunakan ta.ema built-in di trading view sebagai gantinya.
2, Indikator VuManChu Swing Free
Ini adalah indikator di Trading View, dan kita harus pergi ke Trading View dan mengunduh kode sumbernya.
Kode VuManChu Swing Free:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Credits to the original Script - Range Filter DonovanWall https://www.tradingview.com/script/lut7sBgG-Range-Filter-DW/
// This version is the old version of the Range Filter with less settings to tinker with
//@version=4
study(title="Range Filter - B&S Signals", shorttitle="RF - B&S Signals", overlay=true)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Functions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Size Function
rng_size(x, qty, n)=>
// AC = Cond_EMA(abs(x - x[1]), 1, n)
wper = (n*2) - 1
avrng = ema(abs(x - x[1]), n)
AC = ema(avrng, wper)*qty
rng_size = AC
//Range Filter Function
rng_filt(x, rng_, n)=>
r = rng_
var rfilt = array.new_float(2, x)
array.set(rfilt, 1, array.get(rfilt, 0))
if x - r > array.get(rfilt, 1)
array.set(rfilt, 0, x - r)
if x + r < array.get(rfilt, 1)
array.set(rfilt, 0, x + r)
rng_filt1 = array.get(rfilt, 0)
hi_band = rng_filt1 + r
lo_band = rng_filt1 - r
rng_filt = rng_filt1
[hi_band, lo_band, rng_filt]
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Source
rng_src = input(defval=close, type=input.source, title="Swing Source")
//Range Period
rng_per = input(defval=20, minval=1, title="Swing Period")
//Range Size Inputs
rng_qty = input(defval=3.5, minval=0.0000001, title="Swing Multiplier")
//Bar Colors
use_barcolor = input(defval=false, type=input.bool, title="Bar Colors On/Off")
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Definitions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Filter Values
[h_band, l_band, filt] = rng_filt(rng_src, rng_size(rng_src, rng_qty, rng_per), rng_per)
//Direction Conditions
var fdir = 0.0
fdir := filt > filt[1] ? 1 : filt < filt[1] ? -1 : fdir
upward = fdir==1 ? 1 : 0
downward = fdir==-1 ? 1 : 0
//Trading Condition
longCond = rng_src > filt and rng_src > rng_src[1] and upward > 0 or rng_src > filt and rng_src < rng_src[1] and upward > 0
shortCond = rng_src < filt and rng_src < rng_src[1] and downward > 0 or rng_src < filt and rng_src > rng_src[1] and downward > 0
CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1
//Colors
filt_color = upward ? #05ff9b : downward ? #ff0583 : #cccccc
bar_color = upward and (rng_src > filt) ? (rng_src > rng_src[1] ? #05ff9b : #00b36b) :
downward and (rng_src < filt) ? (rng_src < rng_src[1] ? #ff0583 : #b8005d) : #cccccc
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Outputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Filter Plot
filt_plot = plot(filt, color=filt_color, transp=67, linewidth=3, title="Filter")
//Band Plots
h_band_plot = plot(h_band, color=color.new(#05ff9b, 100), title="High Band")
l_band_plot = plot(l_band, color=color.new(#ff0583, 100), title="Low Band")
//Band Fills
fill(h_band_plot, filt_plot, color=color.new(#00b36b, 92), title="High Band Fill")
fill(l_band_plot, filt_plot, color=color.new(#b8005d, 92), title="Low Band Fill")
//Bar Color
barcolor(use_barcolor ? bar_color : na)
//Plot Buy and Sell Labels
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = color.white, style=shape.labelup, size = size.normal, location=location.belowbar, color = color.new(color.green, 0))
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = color.white, style=shape.labeldown, size = size.normal, location=location.abovebar, color = color.new(color.red, 0))
//Alerts
alertcondition(longCondition, title="Buy Alert", message = "BUY")
alertcondition(shortCondition, title="Sell Alert", message = "SELL")
Indikator EMA: Strategi menggunakan dua EMA rata-rata, satu garis cepat (parameter siklus kecil) dan satu garis lambat (parameter siklus besar). Peran EMA ganda adalah untuk membantu kita menentukan arah tren pasar.
Peringkat multi-head Di sini, Anda dapat melihat beberapa gambar yang menarik.
Peringkat kosong Di bawah jalur lambat ada jalur cepat.
Indikator VuManChu Swing Free: Indikator VuManChu Swing Free digunakan untuk mengirim sinyal, kemudian dikombinasikan dengan kondisi lain untuk menentukan apakah akan melakukan perdagangan. Dari sumber indikator VuManChu Swing Free dapat dilihat: variabel longCondition mewakili sinyal beli, variabel shortCondition mewakili sinyal jual.
Sekarang kita akan membahas kondisi pemicu sinyal perdagangan yang spesifik dalam strategi:
1, Aturan untuk masuk ke beberapa halaman: Harga penutupan garis K harus berada di atas garis cepat EMA, dua garis rata EMA harus menampilkan array multi-head (garis cepat di atas garis lambat), dan indikator VuManChu Swing Free harus muncul sinyal beli (long Condition true). Tiga kondisi berlaku, garis K adalah garis K kunci untuk melakukan banyak masuk, dan harga penutupan garis K adalah posisi masuk.
2, aturan untuk masuk dengan kepala kosong (sebagai kebalikan dari kepala banyak): Harga penutupan garis K harus berada di bawah garis cepat EMA, dua EMA rata-rata harus menunjukkan urutan kosong (garis cepat di bawah garis lambat), dan indikator VuManChu Swing Free harus menunjukkan sinyal jual (kondisi pendek benar). Tiga kondisi berlaku, harga penutupan garis K adalah posisi masuk kosong.
Logika trading tidak terlalu sederhana, karena tidak ada penjelasan khusus tentang stop loss di video yang muncul, penulis bebas bermain di sini menggunakan metode stop loss yang membandingkan, menggunakan stop loss titik tetap, dan melacak stop loss.
Di sini kita bisa melihat beberapa contoh dari kode indikator VuManChu Swing Free yang kita masukkan langsung ke dalam kode strategi kita.
Setelah itu, kami menulis kode dalam bahasa Pine untuk melakukan transaksi:
// extend
fastEmaPeriod = input(50, "fastEmaPeriod") // 快线周期
slowEmaPeriod = input(200, "slowEmaPeriod") // 慢线周期
loss = input(30, "loss") // 止损点数
trailPoints = input(30, "trailPoints") // 移动止盈触发点数
trailOffset = input(30, "trailOffset") // 移动止盈偏移量(点数)
amount = input(1, "amount") // 下单量
emaFast = ta.ema(close, fastEmaPeriod) // 计算快线EMA
emaSlow = ta.ema(close, slowEmaPeriod) // 计算慢线EMA
buyCondition = longCondition and emaFast > emaSlow and close > open and close > emaFast // 做多入场条件
sellCondition = shortCondition and emaFast < emaSlow and close < open and close < emaFast // 做空入场条件
if buyCondition and strategy.position_size == 0
strategy.entry("long", strategy.long, amount)
strategy.exit("exit_long", "long", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
if sellCondition and strategy.position_size == 0
strategy.entry("short", strategy.short, amount)
strategy.exit("exit_short", "short", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
A.可以看到,当buyCondition为真时即:
Variabel 1, longCondition adalah benar (VuManChu Swing Free menunjukkan lebih banyak sinyal). 2, emaFast > emaSlow (EMA berulangkali disusun). 3, close > open (menunjukkan bahwa BAR saat ini adalah garis matahari), close > emaFast (menunjukkan bahwa harga penutupan berada di atas garis cepat EMA).
Ada tiga kondisi yang harus dipenuhi.
B.当sellCondition为真时,则做空的三个条件成立(这里不再赘述)。
Kemudian, jika sinyal if-condition judgment dipicu, gunakan strategi.entry untuk masuk dan buka, dan atur strategi.exit untuk stop loss, track stop.
/*backtest
start: 2022-01-01 00:00:00
end: 2022-10-08 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
args: [["ZPrecision",0,358374]]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Credits to the original Script - Range Filter DonovanWall https://www.tradingview.com/script/lut7sBgG-Range-Filter-DW/
// This version is the old version of the Range Filter with less settings to tinker with
//@version=4
study(title="Range Filter - B&S Signals", shorttitle="RF - B&S Signals", overlay=true)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Functions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Size Function
rng_size(x, qty, n)=>
// AC = Cond_EMA(abs(x - x[1]), 1, n)
wper = (n*2) - 1
avrng = ema(abs(x - x[1]), n)
AC = ema(avrng, wper)*qty
rng_size = AC
//Range Filter Function
rng_filt(x, rng_, n)=>
r = rng_
var rfilt = array.new_float(2, x)
array.set(rfilt, 1, array.get(rfilt, 0))
if x - r > array.get(rfilt, 1)
array.set(rfilt, 0, x - r)
if x + r < array.get(rfilt, 1)
array.set(rfilt, 0, x + r)
rng_filt1 = array.get(rfilt, 0)
hi_band = rng_filt1 + r
lo_band = rng_filt1 - r
rng_filt = rng_filt1
[hi_band, lo_band, rng_filt]
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Source
rng_src = input(defval=close, type=input.source, title="Swing Source")
//Range Period
rng_per = input(defval=20, minval=1, title="Swing Period")
//Range Size Inputs
rng_qty = input(defval=3.5, minval=0.0000001, title="Swing Multiplier")
//Bar Colors
use_barcolor = input(defval=false, type=input.bool, title="Bar Colors On/Off")
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Definitions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Filter Values
[h_band, l_band, filt] = rng_filt(rng_src, rng_size(rng_src, rng_qty, rng_per), rng_per)
//Direction Conditions
var fdir = 0.0
fdir := filt > filt[1] ? 1 : filt < filt[1] ? -1 : fdir
upward = fdir==1 ? 1 : 0
downward = fdir==-1 ? 1 : 0
//Trading Condition
longCond = rng_src > filt and rng_src > rng_src[1] and upward > 0 or rng_src > filt and rng_src < rng_src[1] and upward > 0
shortCond = rng_src < filt and rng_src < rng_src[1] and downward > 0 or rng_src < filt and rng_src > rng_src[1] and downward > 0
CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1
//Colors
filt_color = upward ? #05ff9b : downward ? #ff0583 : #cccccc
bar_color = upward and (rng_src > filt) ? (rng_src > rng_src[1] ? #05ff9b : #00b36b) :
downward and (rng_src < filt) ? (rng_src < rng_src[1] ? #ff0583 : #b8005d) : #cccccc
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Outputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Filter Plot
filt_plot = plot(filt, color=filt_color, transp=67, linewidth=3, title="Filter")
//Band Plots
h_band_plot = plot(h_band, color=color.new(#05ff9b, 100), title="High Band")
l_band_plot = plot(l_band, color=color.new(#ff0583, 100), title="Low Band")
//Band Fills
fill(h_band_plot, filt_plot, color=color.new(#00b36b, 92), title="High Band Fill")
fill(l_band_plot, filt_plot, color=color.new(#b8005d, 92), title="Low Band Fill")
//Bar Color
barcolor(use_barcolor ? bar_color : na)
//Plot Buy and Sell Labels
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = color.white, style=shape.labelup, size = size.normal, location=location.belowbar, color = color.new(color.green, 0))
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = color.white, style=shape.labeldown, size = size.normal, location=location.abovebar, color = color.new(color.red, 0))
//Alerts
alertcondition(longCondition, title="Buy Alert", message = "BUY")
alertcondition(shortCondition, title="Sell Alert", message = "SELL")
// extend
fastEmaPeriod = input(50, "fastEmaPeriod")
slowEmaPeriod = input(200, "slowEmaPeriod")
loss = input(30, "loss")
trailPoints = input(30, "trailPoints")
trailOffset = input(30, "trailOffset")
amount = input(1, "amount")
emaFast = ta.ema(close, fastEmaPeriod)
emaSlow = ta.ema(close, slowEmaPeriod)
buyCondition = longCondition and emaFast > emaSlow and close > open and close > emaFast
sellCondition = shortCondition and emaFast < emaSlow and close < open and close < emaFast
if buyCondition and strategy.position_size == 0
strategy.entry("long", strategy.long, amount)
strategy.exit("exit_long", "long", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
if sellCondition and strategy.position_size == 0
strategy.entry("short", strategy.short, amount)
strategy.exit("exit_short", "short", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset)
Rentang waktu uji coba retargeting dipilih dari Januari 2022 hingga Oktober 2022, siklus garis K adalah 15 menit, menggunakan model retargeting harga penutupan. Pasar memilih kontrak permanen ETH_USDT Binance. Parameter pengaturan sesuai dengan garis cepat 50 siklus, garis lambat 200 siklus, dan parameter lainnya tidak berubah secara default.
Hasil retesting Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma Ma
Jika Anda ingin membeli Bitcoin, Anda harus membeli Bitcoin dengan harga yang lebih murah.
Hasilnya di BTC juga meledak:
Alamat kebijakan:https://www.fmz.com/strategy/385745
Tampaknya metode perdagangan ini masih lebih dapat diandalkan untuk menangkap tren, dan dapat terus mengoptimalkan desain berdasarkan gagasan ini. Dalam artikel ini, kita tidak hanya memahami ide strategi garis lurus ganda, tetapi juga memahami cara menggunakan strategi minyak untuk memproses dan belajar.
Boneka es krim"Kalau kita tidak melakukan apa yang kita inginkan, kita tidak akan bisa melakukan apa yang kita inginkan", kata dia, seperti dilansir Reuters.
fantadongApakah strategi ini juga untuk parameter yang sama?
hyc1743Dream Big, kenapa sinyalnya ada di ikon, tapi tidak ada kartu nyata? /upload/asset/23cc031609caa7a896da3.jpg /upload/asset/23cae1c5d5b26ec763ea6.jpg /upload/asset/23d49ff4aec3475793e5e.jpg
Awan ringanMengharukan, menyarankan untuk mencari dua atau tiga strategi yang lebih representatif dari pipa minyak, yang sulit ditulis ulang, fungsi, parameter, dan metode operasi yang lebih banyak untuk membuat beberapa versi teks tutorial, seperti yang mirip dengan
HaykoSaatnya 21 April - 10 Oktober, BTC lebih buruk.
yingjunJika Anda tidak mengerti apa yang dimaksud dengan stop loss, apakah Anda bisa menjelaskan? misalnya, 30 secara default berarti BTC turun 30 inci? stop loss?
Awan ringanDreamDa, tolong, apakah PINE bisa menulis cara yang agak rumit untuk menghentikan jerawat? Jika PINE dapat dikombinasikan dengan JS, misalnya menulis indikator dengan PINE, maka bagian transaksi JS akan lebih mudah ditulis.
yingjunDisk nyata akan mengalami kesalahan pada tahun 2022
FmzeroKebijakan Menyimpan Slogan Ini REST: sql: no rows in result set (tidak ada baris dalam result set)
FmzeroMimpi yang keras kepala
Penemu Kuantitas - Mimpi KecilBaiklah, cobalah di sini.
Boneka es krimYa /upload/asset/101a198b65be7e8fe8487.png
Penemu Kuantitas - Mimpi KecilApakah itu strategi yang Anda bicarakan?
Penemu Kuantitas - Mimpi KecilHa ha, strategi tren itu sendiri adalah "Ya, jika pasar di masa depan memiliki tren, jika tidak, itu akan menjadi strategi guncangan".
Penemu Kuantitas - Mimpi KecilTidak sopan.
hyc1743Terima kasih banyak.
Penemu Kuantitas - Mimpi KecilHalo, ini karena tanda BUY yang ditampilkan pada grafik hanya menunjukkan tanda indikator dalam artikel, dan di belakangnya juga ada garis lurus. `` /Plot Beli dan Jual Label plotshape ((longCondition, title = "Buy Signal", text ="BUY", textcolor = color.white, style=shape.labelup, size = size.normal, location=location.belowbar, color = color.new(color.green, 0)) plotshape ((shortCondition, title = "Sell Signal", text ="SELL", textcolor = color.white, style=shape.labeldown, size = size.normal, location=location.abovebar, color = color.new(color.red, 0)) `` plotshape ((longCondition, title = "Buy Signal", text ="BUY Gambar menunjukkan bahwa hanya kondisi longCondition yang sesuai. Kondisi berikut di bagian ini: `` if buyKondisi dan strategi.position_size == 0 strategi.entry (untuk "panjang", strategi.panjang, jumlah) strategi.exit (("exit_long", "long", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset) if sellKondisi dan strategi.position_size == 0 strategi.entry (untuk short, strategy.short, amount) strategi.exit (("exit_short", "short", amount, loss=loss, trail_points=trailPoints, trail_offset=trailOffset) ``
Awan ringanTidak mengherankan, saya mengerti, terima kasih.
Penemu Kuantitas - Mimpi Kecilline belum didukung di FMZ, jadi beberapa garis mungkin tidak dapat diubah. Beberapa kebijakan menggunakan obyek ini untuk berpartisipasi dalam perhitungan.
Penemu Kuantitas - Mimpi Kecil"Saya tidak tahu apa yang akan terjadi", katanya, "tapi saya pikir itu mungkin karena waktu retesting terlalu lama dan terlalu banyak data".
Penemu Kuantitas - Mimpi KecilTutorial bahasa Pine memiliki bagian dan deskripsi yang dapat Anda lihat di sini: https://www.fmz.com/bbs-topic/9390#%E5%B8%A6%E8%B7%F%E8%B8%AA%E6%AD%A2%E6%8D%9F%E6%AD%A2%E7%9B%88%E7%9A%84%E8%B6%85%E7%BA%A7%E8%B6%8B%E5%8A%BF%E7%AD%96%E7%95%A5
Awan ringanOh, saya mengaturnya dalam setahun atau 10 bulan, dan pada dasarnya saya bisa menyelesaikannya, dan setelah setahun saya akan memiliki tip ini atau banyak lagi.
Penemu Kuantitas - Mimpi KecilTidak ada batasan, kesalahan ini seharusnya terlalu besar.
Awan ringanBaiklah, terima kasih, dan apakah ada batasan waktu untuk memeriksa PINE? Saya memilih 1 Januari 2021 hingga 11 Oktober 2022, dan ini menunjukkan kesalahan:
RunError: abort(undefined) at Error at StackTrace (eval at self.onmessage (https://www.fmz.com/scripts/worker_detours.393054f7.js:1:147),
Penemu Kuantitas - Mimpi KecilPine seharusnya dapat merancang penghentian yang lebih kompleks, yang belum ada di dalam kode JS.
Penemu Kuantitas - Mimpi KecilAnda dapat mengirim screenshot untuk melihat laporan kesalahan tertentu.
Penemu Kuantitas - Mimpi KecilOh, maaf, alamat kebijakan yang salah, sudah diubah.