Strategi ini didasarkan pada ide perdagangan yang berputar dengan momentum, menilai tren saat ini melalui tiga indikator RSI, Stoch, dan MACD, dan dalam kombinasi dengan ATR, pengaturan stop loss stop loss, dan strategi perdagangan otomatis untuk menangkap tren yang berputar dengan sangat efisien.
Strategi ini menggunakan tiga indikator RSI, Stoch, dan MACD untuk menilai arah tren saat ini. Logika spesifiknya adalah:
Bar diatur menjadi hijau ketika tiga indikator naik pada saat yang sama; Bar diatur menjadi merah ketika tiga indikator turun pada saat yang sama; Bar diatur menjadi hitam jika ada sinyal indikator yang berbeda.
Aturan perdagangannya adalah sebagai berikut:
Strategi ini juga menggunakan ATR (rata-rata 7 hari) untuk mengatur posisi stop loss. Stop loss adalah 1,5 kali ATR dan stop loss adalah 3 kali ATR.
Strategi ini memiliki keuntungan sebagai berikut:
Menggunakan beberapa indikator untuk menilai tren, Anda dapat secara efektif menyaring penipuan palsu. Ketika tiga indikator RSI, Stoch, dan MACD pada saat yang sama naik atau turun, kemungkinan besar adalah titik balik tren.
ATR dapat secara efektif melacak tingkat fluktuasi pasar, menggunakan beberapa kali lipat dari ATR untuk mengatur stop loss, dan dapat menyesuaikan stop loss sesuai dengan situasi pasar yang dinamis, untuk mencegah stop loss terlalu longgar atau terlalu ketat.
Logika trading yang sederhana dan jelas, mudah dipahami, cocok untuk digunakan sebagai strategi trading otomatis.
Strategi ini juga memiliki risiko sebagai berikut:
Pengadilan kombinasi multi-indikator mungkin ada indikator yang mengirimkan sinyal yang salah, sehingga mempengaruhi waktu masuk. Anda dapat mempertimbangkan untuk menyesuaikan parameter indikator atau menambahkan indikator lain untuk verifikasi, mengurangi tingkat sinyal yang salah.
Ukuran ATR berpengaruh besar pada stop loss. Jika ATR dihitung tidak akurat, dapat menyebabkan stop loss terlalu besar atau stop loss terlalu kecil. Dapat dipertimbangkan untuk menambahkan indikator lain untuk membantu mengkonfirmasi ukuran ATR.
Kurangnya penilaian tren. Strategi ini berfokus pada perdagangan berbalik, kurang penilaian tren, mudah terkurung dalam situasi yang bergolak.
Ada risiko overfit. Perlu dilakukan pengujian ulang yang memadai untuk memverifikasi parameter dan keandalan aturan.
Strategi ini dapat dioptimalkan dengan:
Menyesuaikan atau menambah indikator, meningkatkan akurasi penilaian pada saat perubahan tren. Misalnya, menambahkan garis Brin untuk menilai status overbought dan oversold.
Mengoptimalkan metode perhitungan ATR, sehingga lebih baik untuk melacak pergerakan pasar.
Menambahkan indikator penilaian tren untuk menghindari terjerat dalam situasi yang bergejolak. Misalnya, menambahkan rata-rata bergerak untuk menilai arah tren.
Mengoptimalkan pengelolaan dana, misalnya menyesuaikan posisi sesuai dengan penarikan.
Untuk melakukan optimasi siklus, verifikasi stabilitas parameter periode waktu yang berbeda.
Dengan melakukan retrospeksi pada lebih banyak varietas dan periode waktu, kita dapat memeriksa keandalan strategi yang stabil.
Strategi ini didasarkan pada desain pola pikir reversal momentum, menggunakan RSI, Stoch dan MACD kombinasi untuk menentukan saat reversal tren, bekerja sama dengan ATR pengaturan stop loss stop, membentuk satu set yang lebih lengkap dari strategi perdagangan reversal tren. Strategi ini memiliki logika perdagangan yang jelas, stop loss stop stop setting yang masuk akal, tetapi juga memiliki indikator kesalahan sinyal, kurangnya penilaian tren dan kekurangan lainnya. Di masa depan dapat melakukan perbaikan dari parameter indikator optimasi, bergabung dengan penilaian tren, menyesuaikan manajemen dana, dan lain-lain, membuat strategi lebih stabil dan dapat diandalkan.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 2h
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/
// © jwitt98
//The PowerX strategy - based on the rules outlined in the book "The PowerX Strategy: How to Trade Stocks and Options in Only 15 Minutes a Day" by Markus Heitkoetter
//@version=5
strategy("PowerX", overlay=true)
strategy.initial_capital = 50000
longEntry = "Enter long"
shortEntry = "Enter short"
longExit = "Exit long"
shortExit = "Exit short"
//*********************************Begin inputs*********************************
//get time range inputs and set time range bool
timeRangeGroup = "Select the trading range"
startDate = input(timestamp("1 Jan 2021 00:00 +0000"), "Start date", "Select the start date for the trading range", "", timeRangeGroup)
endDate = input(timestamp("1 Jan 2050 00:00 +0000"), "End date", "Select the end date for the trading range", "", timeRangeGroup)
isInTimeRange = true
//get long/short inputs
positionsAllowedGroup = "Select the direction(s) of trades to allow"
isLongsAllowed = input.bool(true, "Allow long positions", "Check the box if you want to allow long positions", "", positionsAllowedGroup)
isShortsAllowed = input.bool(true, "Allow short positions", "Check the box if you want to allow short positions", "", positionsAllowedGroup)
//get the stop loss and profit target multiples. Per the PowerX rules the ratio shoud be 1:2. 1.5 and 3 are defaults
adrMultuplesGroup="Select the multipliers for the stop loss and profit targets"
stopLossMultiple = input.float(1.5, "Stop loss multiple", 0.1, 10, 0.1, "The ADR is multiplied by the stop loss multiple to calculate the stop loss", group=adrMultuplesGroup)
profitTargetMultiple=input.float(3.0, "Profit target multiple", 0.1, 10, 0.1, "The ADR is multiplied by the profit target multiple to calculate the profit target", group=adrMultuplesGroup)
//get the option to use the money management stategy or not. This is a fixed ratio type management system
moneyManagementGroup="Money management"
isUsingMoneyManagement=input.bool(false, "Use money management", "Check the box if you want to use a fixed ratio type money management system, such as the type described in PowerX", group=moneyManagementGroup)
initial_riskPercent=input.float(2.0, "Percent risk per trade", .1, 100, .1, "The percentage of capital you want to risk when starting out. This will increase or decrease base on the money management rules. Only applicable if money managent is used", group=moneyManagementGroup)/100
isRiskDowsideLimited=input.bool(false, "Keep risk at or above the set point", "Check the box if you don't want the risk to fall below the set \"risk per trade\" percentage, for example, when your equity is underwater. Only applicable if money management is used", "", moneyManagementGroup)
initial_riskPerTrade=initial_riskPercent * strategy.initial_capital
riskFactor = 0.0
currentProfit = 0.0
currentRisk = 0.0
//*********************************End inputs*********************************
//*********************************Begin money management*********************************
if(isUsingMoneyManagement)
currentProfit := strategy.equity - strategy.initial_capital
if(currentProfit < 0)
currentProfit:=math.abs(currentProfit)
riskFactor := 0.5*(math.pow(1+8*currentProfit/(2*initial_riskPerTrade), 0.5)+1)
currentRisk := 1/riskFactor * initial_riskPercent * strategy.initial_capital
if(isRiskDowsideLimited)
currentRisk := initial_riskPerTrade
else
riskFactor := 0.5*(math.pow(1+8*currentProfit/(2*initial_riskPerTrade), 0.5)+1)
currentRisk := riskFactor * initial_riskPercent * strategy.initial_capital
plot(strategy.equity, "Strategy equity")
plot(currentRisk, "Current risk")
plot(riskFactor, "Risk Factor")
//*********************************End money management*********************************
//*********************************Begin indicators*********************************
//4 indicators are used in this strategy, RSI(7), Stochastics(14, 3, 3), MACD(12, 26, 9), and ADR(7)
rsiVal = ta.rsi(close, 7)//this checks out
plot(rsiVal, "RSI(7)", color.lime)
stochKVal = ta.sma(ta.sma(ta.stoch(close, high, low, 14),3),3)//this formula checks out
plot(stochKVal, "Stoch %K", color.lime)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
plot(histLine, "MACD Hist", color.lime)
adr = ta.sma(high, 7) - ta.sma(low, 7)
plot(adr, "Average daily range", color.orange)
//*********************************End indicators*********************************
//*********************************Define the bar colors*********************************
greenBar = rsiVal > 50 and stochKVal > 50 and histLine > 0
redBar = rsiVal < 50 and stochKVal < 50 and histLine < 0
blackBar = not greenBar and not redBar
color currentBarColor = switch
greenBar => color.green
redBar => color.red
blackBar => color.gray //because black is too hard to see in dark mmode
=> color.yellow
barcolor(currentBarColor)
//*********************************End defining the bar colors*********************************
//*********************************Define the entry, stop loss and profit target*********************************
longStopLimit = high + .01
longProfitTarget = high + (profitTargetMultiple * adr)
longStopLoss = high - (stopLossMultiple * adr)
shortStopLimit = low - .01
shortProfitTarget = low - (profitTargetMultiple * adr)
shortStopLoss = low + (stopLossMultiple * adr)
qtyToTrade= math.floor(currentRisk / (stopLossMultiple * adr))//only if using money management
if(qtyToTrade * high > strategy.equity)
qtyToTrade := math.floor(strategy.equity / high)
//*********************************End defining stop loss and profit targets*********************************
//*********************************Execute trades, set rules, stop loss and profit targets*********************************
if (greenBar and not greenBar[1] and isInTimeRange and isLongsAllowed)
if(isUsingMoneyManagement)
strategy.order(longEntry, strategy.long, qtyToTrade, limit=longStopLimit, stop=longStopLimit)
//strategy.order(longEntry, strategy.long, qtyToTrade, stop=longStopLimit)
else
strategy.order(longEntry, strategy.long, limit=longStopLimit,stop=longStopLimit)
//strategy.order(longEntry, strategy.long, stop=longStopLimit)
strategy.exit("Long limit/stop", from_entry=longEntry, limit=longProfitTarget, stop=longStopLoss)
if(blackBar or redBar)
strategy.cancel(longEntry)
strategy.close(longEntry, longExit)
if (redBar and not redBar[1] and isInTimeRange and isShortsAllowed)
if(isUsingMoneyManagement)
strategy.order(shortEntry, strategy.short, qtyToTrade, limit=shortStopLimit, stop=shortStopLimit)
//strategy.order(shortEntry, strategy.short, qtyToTrade, stop=shortStopLimit)
else
strategy.order(shortEntry, strategy.short, limit=shortStopLimit, stop=shortStopLimit)
//strategy.order(shortEntry, strategy.short, stop=shortStopLimit)
strategy.exit("Short limit/stop", from_entry=shortEntry, limit=shortProfitTarget, stop=shortStopLoss)
if(blackBar or greenBar)
strategy.cancel(shortEntry)
strategy.close(shortEntry, shortExit)
//*********************************End execute trades, set rules, stop loss and profit targets*********************************