커뮤니티

부탁드립니다

프로필 이미지
파생돌이
2025-10-19 23:53:02
117
글번호 227020
답변완료

수고하십니다 아래수식을 오류 없게 수정부탁드립니다 Inputs: ChannelLength(150), // 채널 길이 ChannelWidth(1.5), // 채널 폭 ShowMidLine(true), // 50선 표시 RSILength(14), // RSI 길이 RSIOpacity(70), // RSI 선 투명도 (0~100) UpperThreshold(70), // Scale ShowThresholdLabels(true), // 기준선 라벨 표시 ShowSignalLine(true), // Signal Line 표시 SignalLength(14); // Signal 길이 Variables: SumX(0), SumY(0), SumXSqr(0), SumXY(0), Slope(0), Intercept(0), RegStart(0), RegEnd(0), Deviation(0), UpperStart(0), UpperEnd(0), LowerStart(0), LowerEnd(0), RSIValue(0), SmaRSI(0), LowerThreshold(0), StepValue(0), SlopeValue(0), i(0), Val(0), Per(0), LowerVal(0), RSIPlotValue(0), SigPlotValue(0); // 로그 회귀 계산 SumX = 0; SumY = 0; SumXSqr = 0; SumXY = 0; For i = 0 to ChannelLength - 1 Begin Val = Log(Close[i]); Per = i + 1; SumX = SumX + Per; SumY = SumY + Val; SumXSqr = SumXSqr + (Per * Per); SumXY = SumXY + (Val * Per); End; Slope = (ChannelLength * SumXY - SumX * SumY) / (ChannelLength * SumXSqr - SumX * SumX); Intercept = (SumY - Slope * SumX) / ChannelLength; // 회귀선 시작과 끝 RegStart = ExpValue(Intercept + Slope * ChannelLength); RegEnd = ExpValue(Intercept); // 표준편차 Deviation = StandardDev(Close, ChannelLength, 1); // 채널 상단/하단 UpperStart = RegStart + Deviation * ChannelWidth; UpperEnd = RegEnd + Deviation * ChannelWidth; LowerStart = RegStart - Deviation * ChannelWidth; LowerEnd = RegEnd - Deviation * ChannelWidth; // RSI 계산 RSIValue = RSI(Close, RSILength); SmaRSI = Average(RSIValue, SignalLength); // 스케일 계산 LowerThreshold = 100 - UpperThreshold; SlopeValue = (RegStart - RegEnd) / ChannelLength; StepValue = (UpperEnd - LowerEnd) / (UpperThreshold - LowerThreshold); // RSI를 채널에 매핑 LowerVal = LowerEnd + SlopeValue * 0; RSIPlotValue = LowerVal + StepValue * (RSIValue - LowerThreshold); SigPlotValue = LowerVal + StepValue * (SmaRSI - LowerThreshold); // 채널 라인 플롯 Plot1(UpperEnd, "Upper Channel", RGB(167, 171, 185), default, 2); Plot2(LowerEnd, "Lower Channel", RGB(167, 171, 185), default, 2); // 중앙선 (옵션) If ShowMidLine Then Plot3(RegEnd, "Mid Line", Yellow, Dash, 1); // RSI 라인 플롯 Plot4(RSIPlotValue, "RSI", RGB(161, 0, 182), default, 4); // Signal 라인 (옵션) If ShowSignalLine Then Plot5(SigPlotValue, "Signal", Red, default, 2); // 배경색 (옵션 - EasyLanguage는 제한적) // SetPlotBGColor 또는 Plot6-8을 활용하여 영역 표시 가능 // 텍스트 표시 (옵션) If ShowThresholdLabels and BarNumber = CurrentBar Then Begin Value1 = Text_New(Date, Time, UpperEnd, " " + NumToStr(UpperThreshold, 2)); Value2 = Text_New(Date, Time, LowerEnd, " " + NumToStr(LowerThreshold, 2)); Value3 = Text_New(Date, Time, RSIPlotValue, " RSI: " + NumToStr(RSIValue, 2)); Text_SetColor(Value1, White); Text_SetColor(Value2, White); Text_SetColor(Value3, White); End;

RSI채널Text_new
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-10-20 14:33:51

Inputs: ChannelLength(150), // 채널 길이 ChannelWidth(1.5), // 채널 폭 ShowMidLine(true), // 50선 표시 RSILength(14), // RSI 길이 RSIOpacity(70), // RSI 선 투명도 (0~100) UpperThreshold(70), // Scale ShowThresholdLabels(true), // 기준선 라벨 표시 ShowSignalLine(true), // Signal Line 표시 SignalLength(14); // Signal 길이 Variables: SumX(0), SumY(0), SumXSqr(0), SumXY(0), Slope(0), Intercept(0), RegStart(0), RegEnd(0), Deviation(0), UpperStart(0), UpperEnd(0), LowerStart(0), LowerEnd(0), RSIValue(0), SmaRSI(0), LowerThreshold(0), StepValue(0), SlopeValue(0), i(0), Val(0), Per(0), LowerVal(0), RSIPlotValue(0), SigPlotValue(0); // 로그 회귀 계산 SumX = 0; SumY = 0; SumXSqr = 0; SumXY = 0; For i = 0 to ChannelLength - 1 Begin Val = Log(Close[i]); Per = i + 1; SumX = SumX + Per; SumY = SumY + Val; SumXSqr = SumXSqr + (Per * Per); SumXY = SumXY + (Val * Per); End; Slope = (ChannelLength * SumXY - SumX * SumY) / (ChannelLength * SumXSqr - SumX * SumX); Intercept = (SumY - Slope * SumX) / ChannelLength; // 회귀선 시작과 끝 RegStart = ExpValue(Intercept + Slope * ChannelLength); RegEnd = ExpValue(Intercept); // 표준편차 Deviation = Std(Close, ChannelLength); // 채널 상단/하단 UpperStart = RegStart + Deviation * ChannelWidth; UpperEnd = RegEnd + Deviation * ChannelWidth; LowerStart = RegStart - Deviation * ChannelWidth; LowerEnd = RegEnd - Deviation * ChannelWidth; // RSI 계산 RSIValue = RSI(RSILength); SmaRSI = ma(RSIValue, SignalLength); // 스케일 계산 LowerThreshold = 100 - UpperThreshold; SlopeValue = (RegStart - RegEnd) / ChannelLength; StepValue = (UpperEnd - LowerEnd) / (UpperThreshold - LowerThreshold); // RSI를 채널에 매핑 LowerVal = LowerEnd + SlopeValue * 0; RSIPlotValue = LowerVal + StepValue * (RSIValue - LowerThreshold); SigPlotValue = LowerVal + StepValue * (SmaRSI - LowerThreshold); // 채널 라인 플롯 Plot1(UpperEnd, "Upper Channel", RGB(167, 171, 185), Def, 2); Plot2(LowerEnd, "Lower Channel", RGB(167, 171, 185), Def, 2); // 중앙선 (옵션) If ShowMidLine Then Plot3(RegEnd, "Mid Line", Yellow, Def, 1); // RSI 라인 플롯 Plot4(RSIPlotValue, "RSI", RGB(161, 0, 182), Def, 4); // Signal 라인 (옵션) If ShowSignalLine Then Plot5(SigPlotValue, "Signal", Red, Def, 2); // 배경색 (옵션 - EasyLanguage는 제한적) // SetPlotBGColor 또는 Plot6-8을 활용하여 영역 표시 가능 // 텍스트 표시 (옵션) Text_Delete(value1); Text_Delete(value2); Text_Delete(value3); If ShowThresholdLabels Then Begin Value1 = Text_New(Date, Time, UpperEnd, " " + NumToStr(UpperThreshold, 2)); Value2 = Text_New(Date, Time, LowerEnd, " " + NumToStr(LowerThreshold, 2)); Value3 = Text_New(Date, Time, RSIPlotValue, " RSI: " + NumToStr(RSIValue, 2)); Text_SetColor(Value1, White); Text_SetColor(Value2, White); Text_SetColor(Value3, White); End;