
この策略は,黄金のクロスフィンチ策略と呼ばれるもので,移動平均の技術指標MACD,相対的に強い指標RSI,および黄金の分割線原理のフィボナッチ・リトラクション/拡大理論を組み合わせ,ビットコインなどの暗号通貨に対する量的な取引を実現する.
この戦略の最大の利点は,全天候で稼働でき,人手操作コストを大幅に削減できることです.また,複数の指標の組み合わせによって勝利率を上げることができ,特に牛市で効果が顕著です.具体的利点は以下の通りです.
この戦略にはいくつかのリスクも存在し,主に大幅の市場情勢の逆転から生じ,このとき止損は効果を発揮することが困難である.さらに,長期間ポジションを保持することにも一定のリスクがある.主なリスクポイントは以下のとおりである.
対応方法は以下の通りです.
この戦略は以下の方向から最適化できます.
この戦略は,購入や売却のタイミングを判断する複数の定量指標を統合し,暗号通貨市場の取引を24時間自動化することができる.各指標のパラメータを最適化し,より多くの補助指標を追加することにより,戦略の収益性をさらに向上させることが期待される.この戦略は,ユーザーに大量の人工操作時間のコストを節約することができ,定量化トレーダーは深入な研究と適用に値する.
/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 10m
basePeriod: 1m
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/
// © onurenginogutcu
//@version=4
strategy("STRATEGY R18-F-BTC", overlay=true, margin_long=100, margin_short=100)
///////////default girişler 1 saatlik btc grafiği için geçerli olmak üzere - stop loss'lar %2.5 - long'da %7.6 , short'ta %8.1
sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT") /////////btc'yi indikatör olarak alıyoruz
lsl = input(title="Long Stop Loss (%)",
minval=0.0, step=0.1, defval=2.5) * 0.01
ssl = input(title="Short Stop Loss (%)",
minval=0.0, step=0.1, defval=2.5) * 0.01
longtp = input(title="Long Take Profit (%)",
minval=0.0, step=0.1, defval=7.6) * 0.01
shorttp = input(title="Short Take Profit (%)",
minval=0.0, step=0.1, defval=7.5) * 0.01
capperc = input(title="Capital Percentage to Invest (%)",
minval=0.0, maxval=100, step=0.1, defval=90) * 0.01
choice = input(title="Reverse ?", type=input.bool, defval=false)
symClose = security(sym, "", close)
symHigh = security(sym, "", high)
symLow = security(sym, "", low)
i = ema (symClose , 15) - ema (symClose , 30) ///////// ema close 15 ve 30 inanılmaz iyi sonuç verdi (macd standartı 12 26)
r = ema (i , 9)
sapust = highest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
sapalt = lowest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
///////////highx = highest (close , 365) * 0.72 fibo belki dahiledilebilir
///////////lowx = lowest (close , 365) * 1.272 fibo belki dahil edilebilir
simRSI = rsi (symClose , 50 ) /////// RSI DAHİL EDİLDİ "50 MUMLUK RSI EN İYİ SONUCU VERİYOR"
//////////////fibonacci seviyesi eklenmesi amacı ile koyuldu fakat en iyi sonuç %50 seviyesinin altı ve üstü (low ve high 38 barlık) en iyi sonuç verdi
fibvar = 38
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
///////////////////////////////////////////////////////////// INDICATOR CONDITIONS
longCondition = crossover(i, r) and i < sapalt and symClose < sma (symClose , 50) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and symClose > sma (symClose , 50) and simRSI > sma (simRSI , 50) and symClose > fibtop
////////////////////////////////////////////////////////////////
///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////stratejilerde kalan capital için strategy.equity kullan (bunun üzerinden işlem yap)
if (choice == false and longCondition)
strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close , when = strategy.position_size == 0)
if (choice == false and shortCondition)
strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close , when = strategy.position_size == 0)
if (choice == true and longCondition)
strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close , when = strategy.position_size == 0)
if (choice == true and shortCondition)
strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close , when = strategy.position_size == 0)
if (strategy.position_size > 0)
strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price*(1 - lsl) , limit=strategy.position_avg_price*(1 + longtp))
if (strategy.position_size < 0)
strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price*(1 + ssl) , limit=strategy.position_avg_price*(1 - shorttp))
////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)