
이 전략은 여러 시간 프레임의 이동 평균 지표와 결합하여 여러 시간 프레임 사이의 동향 일관성을 판단하고, 하루 동안 스칼핑 작업을 수행하여 동향을 따라 수익을 얻습니다.
이 전략은 5분, 15분, 30분, 60분 네 시간 프레임의 8과 20기 이동 평균을 사용하여 거래 신호를 구성한다. 더 짧은 8일 이동 평균 위에 20일 이동 평균을 통과하면 구매 신호가 발생하고 8일 이동 평균 아래 20일 이동 평균을 통과하면 판매 신호가 발생한다.
이 전략은 5분, 15분, 30분, 60분 시간 프레임의 거래 신호가 일치해야 할 때 거래 지시가 발령되도록 요구합니다. 즉, 4 시간 프레임의 이동 평균이 구매 신호 또는 판매 신호와 일치하는 경우에만 구매 또는 판매 작업을 수행합니다.
포지션에 들어간 후, 전략은 고정 장점 지점으로 정지 주문을 설정하여, 일내 스칼핑 작업을 수행한다.
특히, security 함수를 호출하여 다양한 시간 프레임에 대한 이동 평균 데이터를 얻습니다. 5 분, 15 분, 30 분 및 60 분의 8 일과 20 일 평균의 차이를 계산하고 그 차이의 곡선을 그리십시오.
이차곡선 위에 0축을 통과하는지 여부에 따라 구매 및 판매 신호를 판단한다. 그리고 각 시간 프레임에 대한 거래 신호를 기록하기 위해 여러 개의 표시 비트 islong 및 isshort을 설정한다. 최종적으로 islong 및 isshort의 상태가 요구 사항을 충족하면 입출출 지시가 발령된다.
진입 후, 전략은 strategy.exit 함수를 통해 고정점 수 정지를 설정하여 스칼핑 작업을 수행한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
다중 시간 프레임 디자인은 다양한 주기적 지표의 통합 판단을 통해, 부정확한 거래를 효과적으로 필터링하고 거래 빈도를 줄일 수 있습니다.
하루 스칼핑 전략, 수익 최적화, 작은 수익을 지속적으로 누릴 수 있다.
코드 구조는 명확하고, 각 부분의 기능은 명확하고, 이해하기 쉽고, 최적화하기 쉽다.
조건 설정은 합리적이고 거래 위험을 효과적으로 통제할 수 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
다중 시간 프레임 디자인은 일부 잡음을 필터링 할 수 있지만 일부 세부 사항을 놓칠 수 있습니다.
일간 스칼핑은 거래가 빈번하게 이루어지기 때문에 거래비용에 대한 통제가 필요합니다.
고정 정지 지점 설정은 충분히 유연하지 않으며 시장 변화에 따라 조정할 수 없습니다.
지표에 의존하여 거래 신호를 생성하는 것은 속일 가능성이 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
더 많은 다른 주기적 시간 프레임에 대한 지표 판단을 추가하여 신호를 더 안정적이고 신뢰할 수 있게 한다.
ATR 역동성에 따라 정지 지점을 설정하여 정지 전략을 최적화하십시오.
추가 조건 필터로 입시 시기를 추가합니다. 예를 들어, 거래량이 증가하거나, 역사적인 최고치를 돌파하는 것 등.
이동 평균의 주기 변수를 최적화하여 최적의 변수 조합을 찾습니다.
기기 학습 모형을 사용하여 지표 신호의 신뢰성을 판단하여 중매를 피하십시오.
이 전략은 전체적으로 전형적인 다중 시간 프레임 트렌드 추적 전략으로, 일일내 스칼핑 방식으로 수익을 얻습니다. 전략 아이디어는 명확하고, 코드 구조는 합리적이며, 추가 테스트 및 최적화를 할 가치가 있습니다. 약간의 최적화 조정으로, 이 전략은 매우 실용적인 일일내 스칼핑 전략 템플릿이 될 수 있습니다.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="PeBAS $JPY Scalper 15m ",overlay=true)
zeigeallebars= input(false, title="Zeige alle (Show all) Candles/Bars?")
profitwert=input(52, title="Profit")
myatr= input(title="ATR", type=float, defval=0.00002, minval=0.00001,step=0.00001)
//Plot EMA-Differenz Aktueller Timeframe
dif=(ema(close,8)+ema(close,20))/2
mcolor=ema(close,8) > ema(close,20) ? green : red
bs = ema(close,8) > ema(close,20) ? true : false
ThisATR=atr(16)
//trans = zeigeallebars == true ? 00 : 100
//plot(dif,"dif",color=mcolor,linewidth=6,transp=trans)
//1M EMA
htf_ma1Mema8 = ema(close, 5)
htf_ma1Mema20 = ema(close, 20)
ema81m=request.security(syminfo.tickerid, "1", htf_ma1Mema8)
ema201m=request.security(syminfo.tickerid, "1", htf_ma1Mema20)
dif1M = (ema81m + ema201m) / 2
Close1M = request.security(syminfo.tickerid, "1", close)
color1=ema81m > ema201m ? green : red
//plot(dif1M,"dif",color1,linewidth=6)
//plotshape(1, style=shape.cross, color=color1,location=location.top)
ls1 = ema81m > ema201m ? 1 : 0
//5M EMA
htf_ma5Mema8 = ema(close, 8)
htf_ma5Mema20 = ema(close, 20)
ema85m=request.security(syminfo.tickerid, "5", htf_ma5Mema8)
ema205m=request.security(syminfo.tickerid, "5", htf_ma5Mema20)
dif5M = (ema85m + ema205m) / 2
color5=ema85m > ema205m ? green : red
plot(dif5M,"dif",color5,linewidth=5)
ls5 = ema85m > ema205m ? 1 : 0
alert1= ema85m > ema205m and ema85m[1] < ema205m[1] ? 1 : 0
islong5 = ema85m > ema205m ? 1 : 0
isshort5 = ema85m < ema205m ? 1 : 0
//15M EMA
htf_ma15Mema8 = ema(close, 8)
htf_ma15Mema20 = ema(close, 20)
ema815m=request.security(syminfo.tickerid, "15", htf_ma15Mema8)
ema2015m=request.security(syminfo.tickerid, "15", htf_ma15Mema20)
dif15M = (ema815m + ema2015m) / 2
color15=ema815m > ema2015m ? green : red
plot(dif15M,"dif",color15,linewidth=3)
ls15= ema815m > ema2015m ? 1 : 0
alert2= ema815m > ema2015m and ema815m[1] < ema2015m[1] ? 1 : 0
islong15 = ema815m > ema2015m ? 1 : 0
isshort15 = ema815m < ema2015m ? 1 : 0
//30M EMA
htf_ma30Mema8 = ema(close, 8)
htf_ma30Mema20 = ema(close, 20)
ema830m=request.security(syminfo.tickerid, "30", htf_ma30Mema8)
ema2030m=request.security(syminfo.tickerid, "30", htf_ma30Mema20)
dif30M = (ema830m + ema2030m) / 2
color30=ema830m > ema2030m ? green : red
ls30= ema830m > ema2030m ?1 : 0
islong30 = ema830m > ema2030m ? 1 : 0
isshort30 = ema830m < ema2030m ? 1 : 0
//60M EMA
htf_ma60Mema8 = ema(close, 8)
htf_ma60Mema20 = ema(close, 20)
ema860m=request.security(syminfo.tickerid, "60", htf_ma60Mema8)
ema2060m=request.security(syminfo.tickerid, "60", htf_ma60Mema20)
dif60M = (ema860m + ema2060m) / 2
color60=ema860m > ema2060m ? green : red
ls60= ema860m > ema2060m ?1 : 0
islong60 = ema860m > ema2060m ? 1 : 0
isshort60 = ema860m < ema2060m ? 1 : 0
plot(dif60M,"dif",color60,linewidth=3,transp=70)
islong = islong5 ==1 and islong15 ==1 and islong60 ==1 and year > 2017 ? 1 : 0
isshort = isshort5 ==1 and isshort15 ==1 and isshort60 ==1 and year > 2017 ? 1 : 0
condition2l= 0
condition2s = 0
c= alert1 == alert2 and alert1[1] != alert2[1] ? 1 : 0
alertcondition(c, title='Da tat sich was ', message='Da tat sich was!')
strategy.entry("enter long", strategy.long,1,when = islong ==1 and islong[1] == 0 )
strategy.entry("enter short", strategy.short,1,when = isshort == 1 and isshort [1] == 0)
strategy.exit("close",profit=profitwert)
strategy.exit("close",profit=profitwert)