커뮤니티

문의

프로필 이미지
레전드
2025-04-01 02:28:01
468
글번호 189740
답변완료
strategy(title="MACD 다이버전스 + 골든 크로스 지표", overlay=false, initial_capital = 100000, default_qty_type=strategy.percent_of_equity, default_qty_value=90) // 사용자 입력 shortMaPeriod = input.int(defval=10, title="단기 이동평균선") longMaPeriod = input.int(defval=20, title="장기 이동평균선") shortMaColor = input.color(defval=color.blue, title="단기 이평선 컬러") longMaColor = input.color(defval=color.yellow, title="장기 이평선 컬러") shortLineWidth = input.int(defval=1, minval=1, maxval=5, title="단기 라인 굵기") longLineWidth = input.int(defval=2, minval=1, maxval=5, title="장기 라인 굵기") pivotLeft = input.int(defval=5, minval=1, maxval=10, title="피봇 왼쪽") pivotRight = input.int(defval=5, minval=1, maxval=10, title="피봇 오른쪽") // MACD 다이버전스를 찾아 내기 위한 코드 // MACD 변수 선언 [macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) plot(macdLine, color=color.red) pivotLowMACD = ta.pivotlow(macdLine, pivotLeft, pivotRight) divLowPrice = not na(pivotLowMACD) ? low[pivotRight] : na // 저점으로 이동하기 위한 변수를 따로 선언 prevLowPricePoint = ta.valuewhen(not na(divLowPrice), divLowPrice, 0) prevPivotLowMACD = ta.valuewhen(not na(pivotLowMACD), pivotLowMACD, 0) // MACD 다이버전스 조건 isDivergence = prevLowPricePoint[1] > prevLowPricePoint[0] and prevPivotLowMACD[1] < prevPivotLowMACD[0] plot(divLowPrice, color=isDivergence ? color.new(color.green, 30) : na, style=plot.style_line, linewidth=5, offset=-pivotRight, force_overlay=true) plot(pivotLowMACD, color=isDivergence ? color.new(color.green, 30) : na, style=plot.style_line, linewidth=5, offset=-pivotRight) // 이동평균선 관련하여 장기와 단기 이동평균선을 선언해 놓았습니다. maShort = ta.sma(close, shortMaPeriod) maLong = ta.sma(close, longMaPeriod) // 이동평균선을 차트에 직접 그리는 코드 plot(maShort, color=shortMaColor, force_overlay=true) plot(maLong, color=longMaColor, force_overlay=true) // 조건 1: 골든 크로스 검출 -> 위 변수를 활용하여 골든 크로스 시점을 저장합니다. goldenCross = ta.crossover(maShort, maLong) // 최종 거래 조건 변수 var bool hasLastDivergence = false var float divAfterLowPrice = na if isDivergence hasLastDivergence := true divAfterLowPrice := low[pivotRight] // bgcolor(color = hasLastDivergence? color.aqua: na) enterLong = hasLastDivergence and goldenCross exitLong = ta.crossunder(close, maLong) plotshape(maShort, color=enterLong ? color.new(color.green, 0) : na, location=location.absolute, style=shape.triangleup, size=size.small, force_overlay=true) // 거래 실행 if enterLong strategy.entry("매수진입", strategy.long) if exitLong strategy.close("매수진입") deadCross = ta.crossunder(maShort, maLong) if enterLong or divAfterLowPrice > low or deadCross hasLastDivergence := false divAfterLowPrice := na 예스로 부탁드립니다
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-04-01 13:36:35

안녕하세요 예스스탁입니다. 예스랭귀지에서는 하나의 편집창에서 지표출력과 신호출력이 가능하지 않아 지표식과 시스템식 2개 작성해 드립니다. 1. 지표 input : shortMaPeriod(10); input : longMaPeriod(20); input : shortMaColor(blue); input : longMaColor(yellow); input : shortLineWidth(1); input : longLineWidth(2); input : pivotLeft(5); input : pivotRight(5); var : macdline(0),signalline(0),histLine(0); var : pivotLowMACD(0),divLowPrice(0); var : prevPivotLowMACD(0),prevLowPricePoint(0); var : isDivergence(False); var : D1(0),T1(0),D2(0),T2(0),TL1(0),TL2(0); macdLine = macd(12,26); signalLine = Ema(macdLine,9); histLine = macdLine-signalLine; plot1(macdLine); if SwingLowBar(1,macdLine,pivotLeft,pivotRight,pivotLeft+pivotRight+1) != -1 Then { pivotLowMACD = macdLine[pivotRight]; divLowPrice = low[pivotRight]; prevLowPricePoint = divLowPrice; prevPivotLowMACD = pivotLowMACD; d1 = sDate[pivotRight]; t1 = sTime[pivotRight]; d2 = d1[1]; t2 = t1[1]; } // MACD 다이버전스 조건 isDivergence = prevLowPricePoint[1] > prevLowPricePoint[0] and prevPivotLowMACD[1] < prevPivotLowMACD[0]; var : maShort(0),maLong(0),goldenCross(False); var : hasLastDivergence(False),divAfterLowPrice(Nan); var : enterLong(False),exLong(False),TX(0),deadCross(False); maShort = ma(close, shortMaPeriod); maLong = ma(close, longMaPeriod); goldenCross = crossup(maShort, maLong); deadCross = CrossDown(maShort, maLong); if isDivergence == true Then { TL1 = TL_New_Self(D2,T2,prevPivotLowMACD[1],D1,T2,prevPivotLowMACD); TL_SetColor(TL1,Green); TL2 = TL_New(D2,T2,prevLowPricePoint[1],D1,T2,prevLowPricePoint); TL_SetColor(TL2,Green); hasLastDivergence = true; divAfterLowPrice = low[pivotRight]; } enterLong = hasLastDivergence and goldenCross; exLong = CrossDown(close, maLong); if enterLong == true Then { TX = text_new(sDate,sTime,L,"▲"); Text_SetStyle(TX,2,0); Text_SetColor(TX,Green); } if enterLong or divAfterLowPrice > low or deadCross Then { hasLastDivergence = false; divAfterLowPrice = Nan; } 2 시스템 input : shortMaPeriod(10); input : longMaPeriod(20); input : shortMaColor(blue); input : longMaColor(yellow); input : shortLineWidth(1); input : longLineWidth(2); input : pivotLeft(5); input : pivotRight(5); var : macdline(0),signalline(0),histLine(0); var : pivotLowMACD(0),divLowPrice(0); var : prevPivotLowMACD(0),prevLowPricePoint(0); var : isDivergence(False); var : D1(0),T1(0),D2(0),T2(0),TL1(0),TL2(0); macdLine = macd(12,26); signalLine = Ema(macdLine,9); histLine = macdLine-signalLine; if SwingLowBar(1,macdLine,pivotLeft,pivotRight,pivotLeft+pivotRight+1) != -1 Then { pivotLowMACD = macdLine[pivotRight]; divLowPrice = low[pivotRight]; prevLowPricePoint = divLowPrice; prevPivotLowMACD = pivotLowMACD; d1 = sDate[pivotRight]; t1 = sTime[pivotRight]; d2 = d1[1]; t2 = t1[1]; } // MACD 다이버전스 조건 isDivergence = prevLowPricePoint[1] > prevLowPricePoint[0] and prevPivotLowMACD[1] < prevPivotLowMACD[0]; var : maShort(0),maLong(0),goldenCross(False); var : hasLastDivergence(False),divAfterLowPrice(Nan); var : enterLong(False),exLong(False),TX(0),deadCross(False); maShort = ma(close, shortMaPeriod); maLong = ma(close, longMaPeriod); goldenCross = crossup(maShort, maLong); deadCross = CrossDown(maShort, maLong); if isDivergence == true Then { hasLastDivergence = true; divAfterLowPrice = low[pivotRight]; } enterLong = hasLastDivergence and goldenCross; exLong = CrossDown(close, maLong); if enterLong or divAfterLowPrice > low or deadCross Then { hasLastDivergence = false; divAfterLowPrice = Nan; } if enterLong == true Then Buy("매수진입",AtMarket); if MarketPosition == 1 and exLong == true Then ExitLong("매수청산",AtMarket); 즐거운 하루되세요 > 레전드 님이 쓴 글입니다. > 제목 : 문의 > strategy(title="MACD 다이버전스 + 골든 크로스 지표", overlay=false, initial_capital = 100000, default_qty_type=strategy.percent_of_equity, default_qty_value=90) // 사용자 입력 shortMaPeriod = input.int(defval=10, title="단기 이동평균선") longMaPeriod = input.int(defval=20, title="장기 이동평균선") shortMaColor = input.color(defval=color.blue, title="단기 이평선 컬러") longMaColor = input.color(defval=color.yellow, title="장기 이평선 컬러") shortLineWidth = input.int(defval=1, minval=1, maxval=5, title="단기 라인 굵기") longLineWidth = input.int(defval=2, minval=1, maxval=5, title="장기 라인 굵기") pivotLeft = input.int(defval=5, minval=1, maxval=10, title="피봇 왼쪽") pivotRight = input.int(defval=5, minval=1, maxval=10, title="피봇 오른쪽") // MACD 다이버전스를 찾아 내기 위한 코드 // MACD 변수 선언 [macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) plot(macdLine, color=color.red) pivotLowMACD = ta.pivotlow(macdLine, pivotLeft, pivotRight) divLowPrice = not na(pivotLowMACD) ? low[pivotRight] : na // 저점으로 이동하기 위한 변수를 따로 선언 prevLowPricePoint = ta.valuewhen(not na(divLowPrice), divLowPrice, 0) prevPivotLowMACD = ta.valuewhen(not na(pivotLowMACD), pivotLowMACD, 0) // MACD 다이버전스 조건 isDivergence = prevLowPricePoint[1] > prevLowPricePoint[0] and prevPivotLowMACD[1] < prevPivotLowMACD[0] plot(divLowPrice, color=isDivergence ? color.new(color.green, 30) : na, style=plot.style_line, linewidth=5, offset=-pivotRight, force_overlay=true) plot(pivotLowMACD, color=isDivergence ? color.new(color.green, 30) : na, style=plot.style_line, linewidth=5, offset=-pivotRight) // 이동평균선 관련하여 장기와 단기 이동평균선을 선언해 놓았습니다. maShort = ta.sma(close, shortMaPeriod) maLong = ta.sma(close, longMaPeriod) // 이동평균선을 차트에 직접 그리는 코드 plot(maShort, color=shortMaColor, force_overlay=true) plot(maLong, color=longMaColor, force_overlay=true) // 조건 1: 골든 크로스 검출 -> 위 변수를 활용하여 골든 크로스 시점을 저장합니다. goldenCross = ta.crossover(maShort, maLong) // 최종 거래 조건 변수 var bool hasLastDivergence = false var float divAfterLowPrice = na if isDivergence hasLastDivergence := true divAfterLowPrice := low[pivotRight] // bgcolor(color = hasLastDivergence? color.aqua: na) enterLong = hasLastDivergence and goldenCross exitLong = ta.crossunder(close, maLong) plotshape(maShort, color=enterLong ? color.new(color.green, 0) : na, location=location.absolute, style=shape.triangleup, size=size.small, force_overlay=true) // 거래 실행 if enterLong strategy.entry("매수진입", strategy.long) if exitLong strategy.close("매수진입") deadCross = ta.crossunder(maShort, maLong) if enterLong or divAfterLowPrice > low or deadCross hasLastDivergence := false divAfterLowPrice := na 예스로 부탁드립니다