
이 전략은 시장의 주요 추세 방향을 판단하기 위해 쌍방향 EMA 지표를 사용하며, RSI 지표와 결합하여 입시 시기를 선택합니다.
위의 전략은 주로 쌍 EMA 지표를 사용하여 주 트렌드 방향을 판단하고 RSI 지표를 입문 신호로 선택하며, 전형적인 트렌드를 따르는 알고리즘 거래 전략에 속한다.
이 전략의 가장 큰 장점은 시장의 주요 트렌드 방향을 명확하게 판단하고 RSI 지표에 따라 가장 좋은 진입 시점을 선택할 수 있다는 것입니다. 구체적인 장점은 다음과 같습니다:
이 전략에는 다음과 같은 몇 가지 측면에서 위험성이 있습니다.
위와 같은 위험에는 다음과 같은 관점에서 최적화할 수 있습니다.
이 전략의 장점과 위험에서 우리는 다음과 같은 몇 가지 최적화 방향을 얻을 수 있습니다.
더 많은 지표, 예측 모델, 변수 최적화, 위험 제어 모듈 등을 도입함으로써 이 전략은 더욱 복잡하고 변화하는 시장 상황에 적응할 수 있도록 더욱 향상될 수 있습니다.
이 글은 양방향 EMA 교차량 거래 전략의 주요 내용을 자세히 소개한다. 우선, 전략의 주요 아이디어와 작동 원리를 개괄한다. 그 다음, 전략의 장점에 대한 전체적인 분석이 이루어진다. 동시에, 전략에 존재하는 주요 위험점을 분석한다. 이를 바탕으로, 몇 가지 중요한 최적화 방향이 주어진다.
/*backtest
start: 2023-01-23 00:00:00
end: 2024-01-23 00:00:00
period: 4h
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/
// © Investoz
// Indikatorn är byggd som ett utbildningsyfte och är därför ingen rekommendation för köp/sälj av aktier. Tanken är att skapa en visuell form i en graf
// som visar om det finns någon trend såväl positiv som negativ. En dialogruta med en varning talar om vilken trend som råder. I koden finns en möjlighet
// att ta position eller gå ur position om man vill skapa en startegi kring denna trendindikator. Rekommenderar dock starkt att inte enbart förlita sig på denna
// indikator som beslut för köp/sälj då resultaten blir negativa om man köper på psoitiv trend och säljer på negativ trend. Det måste kombineras med andra idéer
// och därför fungerar denna skript mer som ett komplement till sin egen strategi.
// Det är fritt fram för vem som helst att använda sig av denna indikator.
//@version=4
//Skapar en strategiskript med 5 % av eget kapital som ett exempel. Detta går att ändra i skriptets inställningar, välj egenskaper och sedan ändra orderstorlek
//till ett annat värde av % på eget kapital.
strategy("© Investoz trendvarningar", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=5)
//Lägger till inmatningar till skriptindikatorn. Användaren kan se och redigera inmatningar i objektdialogen efter eget val.
ema1 = input(21, minval=1, maxval=500, title="Lila linje")
valema1=input(true, title="Visa lila linje")
ema2 = input(34, minval=1, maxval=500, title="Blå linje")
valema2=input(true, title="Visa blå linje")
ema3 = input(55, minval=1, maxval=500, title="Grön linje")
valema3=input(true, title="Visa grön linje")
ema4 = input(89, minval=1, maxval=500, title="Gul linje")
valema4=input(true, title="Visa gul linje")
ema5 = input(141, minval=1, maxval=500, title="Orange linje")
valema5=input(true, title="Visa orange linje")
ema6 = input(230, minval=1, maxval=500, title="Röd linje")
valema6=input(true, title="Visa röd linje")
ema7 = input(371, minval=1, maxval=500, title="Röd linje")
valema7=input(true, title="Visa röd linje")
//Inmatningar för antal staplar
startbar = input(1, minval=1, maxval=1, title="Första stapeln")
Endbar = bar_index
//Källa input, stängning. Användaren kan själv byta till vilken källa som önskas.
src = input(close, title="Source")
//Antal staplar sedan den längsta ema började och framåt.
tid=Endbar + startbar - 371
//EMA loop
aema1 = ema(src, ema1)
bema2 = ema(src, ema2)
cema3 = ema(src, ema3)
dema4 = ema(src, ema4)
eema5 = ema(src, ema5)
fema6 = ema(src, ema6)
gema7 = ema(src, ema7)
//Skriver ut linjer i diagrammet om förhållandet är sant, annars falskt.
h=plot(valema1 ? aema1 : na, title="Lila linje", style=plot.style_line, linewidth=1, color=color.purple)
i=plot(valema2 ? bema2 : na, title="Blå linje", style=plot.style_line, linewidth=1, color=color.blue)
j=plot(valema3 ? cema3 : na, title="Grön linje", style=plot.style_line, linewidth=1, color=color.green)
k=plot(valema4 ? dema4 : na, title="Gul linje", style=plot.style_line, linewidth=1, color=color.yellow)
l=plot(valema5 ? eema5 : na, title="Orange linje", style=plot.style_line, linewidth=1, color=color.orange)
m=plot(valema6 ? fema6 : na, title="Röd linje", style=plot.style_line, linewidth=1, color=color.red)
n=plot(valema7 ? gema7 : na, title="Brun linje", style=plot.style_line, linewidth=1, color=color.maroon)
//Fyller bakgrunden mellan två linjer med en viss färg.
fill(h, i, color = color.purple,transp=34)
fill(i, j, color = color.blue,transp=34)
fill(j, k, color = color.green,transp=34)
fill(k, l, color = color.yellow,transp=34)
fill(l, m, color = color.orange,transp=34)
fill(m, n, color = color.red,transp=34)
//Skapa en algoritm för positiv trend
PositivTrend = crossover(aema1,gema7)?1:0
TrendPositiv = ema(close,1) > aema1 and aema1 > bema2?1:0
//Skapa en algoritm för negativ trend
NegativTrend = crossunder(aema1,gema7)?1:0
TrendNegativ = ema(close,1) < aema1 and aema1 < bema2?1:0
//Skapar en textruta med varningstext för positiv trend
varningtextpositiv = "Varning för positiv trend."+"\n" + "Leta efter att ta position!"
// if PositivTrend
// varningpositiv=label.new(
// bar_index,
// low,
// xloc=xloc.bar_index,
// yloc=yloc.price,
// color=color.black,
// textcolor=color.green,
// text=varningtextpositiv,
// style=label.style_label_down,
// textalign=text.align_left)
//Skapar en textruta med varningstext för negativ trend
varningtextnegativ = "Varning för negativ trend."+"\n" + "Leta efter utgången!"
// if NegativTrend
// varningnegativ=label.new(
// bar_index,
// low,
// xloc=xloc.bar_index,
// yloc=yloc.price,
// color=color.black,
// textcolor=color.red,
// text=varningtextnegativ,
// style=label.style_label_up,
// textalign=text.align_left)
//Köp om positiv trend
if (PositivTrend)
strategy.entry("Ta position", strategy.long, when = PositivTrend)
//Sälj om negativ trend
if (NegativTrend)
strategy.close("Ta position", when = NegativTrend, comment="Gå ur position")
//Beräkning av positiv trend
vspositiv(positiv)=>valuewhen(Endbar==startbar,positiv,0)
vepositiv(positiv)=>valuewhen(Endbar==Endbar,positiv,0)
positivmean(TrendPositiv)=>
csumpositiv = cum(TrendPositiv)
//Slut//
a = vepositiv(csumpositiv)
//Start//
b = vspositiv(csumpositiv)
//Slut - Start//
(a - b)/(tid)
positivmeanpositiv = positivmean(TrendPositiv)
//Beräkning av negativ trend
vsnegativ(negativ)=>valuewhen(Endbar==startbar,negativ,0)
venegativ(negativ)=>valuewhen(Endbar==Endbar,negativ,0)
negativmean(TrendNegativ)=>
csumnegativ = cum(TrendNegativ)
//Slut//
a = venegativ(csumnegativ)
//Start//
b = vsnegativ(csumnegativ)
//Slut - Start//
(a - b)/(tid)
negativmeannegativ = negativmean(TrendNegativ)
//Inmatning av text som ska in i texruta som visar antal staplar i trend
logga = "© Investoz: Trend i tid"+ "\n"
streck = "--------------------------------------------------------"
totalastaplar = "\n" + "Dagar totalt: " + tostring(tid)+ " dagar "+"\n"+ streck + "\n"
totalpositiv = "Dagar totalt i positiv trend "+" 📈 : " +tostring(positivmeanpositiv*tid, "##.##") +" dagar " + "\n"
totalnegativ = "\n" + "Dagar totalt i negativ trend" + " 📉 : " +tostring(negativmeannegativ*tid, "##.##") +" dagar "
//Textruta för antal staplar i trend
// if barstate.ishistory
// barcountlbl=label.new(
// bar_index,
// low,
// xloc=xloc.bar_index,
// yloc=yloc.price,
// color=color.black,
// textcolor=color.yellow,
// text=logga+streck+totalastaplar+totalpositiv+streck+totalnegativ,
// style=label.style_label_lower_left,
// textalign=text.align_left)
// label.delete(barcountlbl[1])
//////////////////////////////////