내가 작성해본 정답
//@version=5
strategy("my strategy", overlay=true)
//시간대별 값 요청
close1 = request.security(syminfo.tickerid, "60", close)
close4 = request.security(syminfo.tickerid, "240", close)
closed = request.security(syminfo.tickerid, "D", close)
//타임 프레임별 7일선 ta.sma는 이동평균계산함수
SMA1_7 = ta.sma(close, close1)
SMA4_7 = ta.sma(close, close4)
SMAD_7 = ta.sma(close, closed)
//타임 프레임별 14일선
SMA1_14 = ta.sma(close, close1)
SMA4_14 = ta.sma(close, close4)
SMAD_14 = ta.sma(close, closed)
//조건설정 crossover는 상향돌파 crossunder는 하향돌파 //시간대별로 만들기
buy_1condition = ta.crossover(SMA1_7, SMA1_14)
buy_4condition = ta.crossover(SMA4_7, SMA4_14)
buy_Dcondition = ta.crossover(SMAD_7, SMAD_14)
sell_1condition = ta.crossunder(SMA1_7, SMA1_14)
sell_4condition = ta.crossunder(SMA4_7, SMA4_14)
sell_Dcondition = ta.crossunder(SMAD_7, SMAD_14)
//추가조건 먼저 카운트 후 갯수 세기
Longcount = (buy_1condition ? 1:0) + (buy_4condition ? 1:0) + (buy_Dcondition ? 1:0)
Shortcount = (sell_1condition ? 1:0) + (sell_4coindition ? 1:0) + (sell_Dcondition ? 1:0)
//최종 조건 2개이상 작은 시그널 발생시
Buy_signal = Longcount >= 2
Sell_signal = Shortcount >= 2
//진입설정
if(Buy_signal)
strategy.entry("Buy", strategy.long)
if(Sell_signal)
strategy.entry("Buy", strategy.short)
//시각화
plotshape(series=Buy_signal, location=location.belowbar, color = color.new(color.green, 30), style=shape.labelup, text="buy" textcolor= color.white)
plotshape(series=Sell_signal, location=location.belowbar, color = color.new(color.red, 30), style=shape.labelup, text="buy" textcolor= color.white)
GPT 피드백
코드 작성의 기본 구조는 잘 되어 있지만, 몇 가지 수정해야 할 사항이 있습니다. 특히, 이동 평균 계산 부분과 매도 조건의 오타, plotshape의 위치 문제 등을 수정해야 합니다.
주요 수정 사항:
- 이동 평균 계산 함수:
- 이동 평균을 계산할 때 close1, close4, closed를 직접 사용하려는 부분에서 잘못된 부분이 있습니다. ta.sma(close1, 7)처럼 7일 이동 평균을 계산해야 합니다.
- 또한, 14일 이동 평균도 같은 방식으로 수정해야 합니다.
- 오타 수정:
- sell_4coindition → sell_4condition으로 수정해야 합니다.
- plotshape 위치 및 텍스트 오타:
- text="buy" 부분에서 텍스트 설정이 잘못되었습니다. 또한, location=location.belowbar는 매도 신호일 때는 location.abovebar로 설정하는 것이 좋습니다.
//@version=5
strategy("my strategy", overlay=true)
// 시간대별 값 요청
close1 = request.security(syminfo.tickerid, "60", close)
close4 = request.security(syminfo.tickerid, "240", close)
closed = request.security(syminfo.tickerid, "D", close)
// 타임 프레임별 7일 이동 평균 계산
SMA1_7 = ta.sma(close1, 7)
SMA4_7 = ta.sma(close4, 7)
SMAD_7 = ta.sma(closed, 7)
// 타임 프레임별 14일 이동 평균 계산
SMA1_14 = ta.sma(close1, 14)
SMA4_14 = ta.sma(close4, 14)
SMAD_14 = ta.sma(closed, 14)
// 조건 설정 (crossover는 상향 돌파, crossunder는 하향 돌파)
buy_1condition = ta.crossover(SMA1_7, SMA1_14)
buy_4condition = ta.crossover(SMA4_7, SMA4_14)
buy_Dcondition = ta.crossover(SMAD_7, SMAD_14)
sell_1condition = ta.crossunder(SMA1_7, SMA1_14)
sell_4condition = ta.crossunder(SMA4_7, SMA4_14)
sell_Dcondition = ta.crossunder(SMAD_7, SMAD_14)
// 추가 조건 - 카운트 후 개수 세기
Longcount = (buy_1condition ? 1 : 0) + (buy_4condition ? 1 : 0) + (buy_Dcondition ? 1 : 0)
Shortcount = (sell_1condition ? 1 : 0) + (sell_4condition ? 1 : 0) + (sell_Dcondition ? 1 : 0)
// 최종 조건 - 2개 이상일 때 시그널 발생
Buy_signal = Longcount >= 2
Sell_signal = Shortcount >= 2
// 진입 설정
if (Buy_signal)
strategy.entry("Buy", strategy.long)
if (Sell_signal)
strategy.entry("Sell", strategy.short) // 매도는 'Sell'로 변경
// 시각화
plotshape(series=Buy_signal, location=location.belowbar, color=color.new(color.green, 30), style=shape.labelup, text="BUY", textcolor=color.white)
plotshape(series=Sell_signal, location=location.abovebar, color=color.new(color.red, 30), style=shape.labeldown, text="SELL", textcolor=color.white)
함수하나 , 오타등이 틀렸내요 아직 많이 어렵습니다.
매매일지 무료로 작성하세요
https://geckotrade.co.kr/
- text="buy" 부분에서 텍스트 설정이 잘못되었습니다. 또한, location=location.belowbar는 매도 신호일 때는 location.abovebar로 설정하는 것이 좋습니다.