
Die Gold-Split-Moving-Average-Handelsstrategie ist eine quantitative Handelsstrategie, die versucht, Gold-Kreuzungen mit langfristigen Moving-Averagen als Handelssignal zu nutzen. Die Strategie wird in Verbindung mit dem RSI verwendet, um Positionen in lokalen Höhen zu vermeiden, um das Risiko zu kontrollieren.
Die Strategie basiert hauptsächlich auf zwei beweglichen Durchschnittswerten: Die 200-Tage-Linie als langfristige Durchschnittslinie und die 10-Tage-Linie als kurzfristige Durchschnittslinie. Sie erzeugt ein Kaufsignal, wenn die kurzfristige Durchschnittslinie die langfristige Durchschnittslinie überschreitet.
Insbesondere wird eine Mehrkopfposition eröffnet, wenn die folgenden Bedingungen erfüllt sind:
Die Ausgleichsbedingungen sind wie folgt:
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Um diese Risiken zu verringern, können folgende Optimierungsmaßnahmen in Betracht gezogen werden:
Die Strategie kann noch weiter optimiert werden:
Die Gold-Split-Moving-Average-Trading-Strategie ist insgesamt eine einfache und effektive Trend-Tracking-Strategie. Sie nutzt die klassischen linearen Kreuzungssignale, um Handelschancen zu erzeugen, und hat einen Stop-Loss-Stop, um das Risiko zu kontrollieren. Die Strategie kann durch mehrere Indikatoren, Parameteroptimierung und Maschinelles Lernen weiter verbessert werden, um eine bessere Strategiewirkung zu erzielen.
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 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/
// © tsujimoto0403
//@version=5
strategy("聖杯", overlay=true,default_qty_type=strategy.percent_of_equity,
default_qty_value=100)
//ユーザーインプットの準備
malongperiod=input.int(200,"長期移動平均BASE200",group = "パラメータ")
mashortperiod=input.int(10,"長期移動平均BASE10",group = "パラメータ")
stop=input.int(20,title = "損切の割合%",group = "パラメータ")
profit=input.int(5,title = "利食いの割合%",group = "パラメータ")
startday=input(title="バックテストを始める日", defval=timestamp("01 Jan 2018 13:30 +0000"), group="期間")
endday=input(title="バックテスを終わる日", defval=timestamp("1 Jan 2099 19:30 +0000"), group="期間")
//使う変数
var float stopprice=0
var float takeprofit=0
//とりあえず使うインジケーターをプロット
malong=ta.sma(close,malongperiod)
mashort=ta.sma(close,mashortperiod)
plot(malong,color=color.aqua,linewidth = 2)
plot(mashort,color=color.yellow,linewidth = 2)
bgcolor(ta.rsi(close,3)<30?color.rgb(229, 86, 86, 48):na)
//期間条件
datefilter = true
//エントリー条件
if close>malong and close<mashort and strategy.position_size == 0 and datefilter and ta.rsi(close,3)<30
strategy.entry(id="long", direction=strategy.long)
if strategy.position_size>0
strategy.exit(id="long",stop=(1-0.01*stop)*strategy.position_avg_price)
//売り
if strategy.position_size > 0 and close>mashort and close<low[1]
strategy.close(id ="long")