예스스탁
예스스탁 답변
2025-03-17 15:10:46
안녕하세요
예스스탁입니다.
// 추가 지표 플롯 (선택적)
plot(MACDLine, "MACD", color.blue);
plot(SignalLine, "Signal", color.red);
plot(RSIVal, "RSI", color.purple);
plot(OBVVal, "OBV", color.teal);
위 내용은 봉차트와 괴리가 있는 지표들입니다.
해당 지표도 Y축 범위가 다릅니다.
2번식으로 별도로 작성해 드립니다.
1.
// 입력값 설정
input : Period(18); // 이동평균 주기
input : MultiD(0.5); // 초기 표준편차 배수
input : RSILength(14); // RSI 주기
input : MACDFast(12); // MACD 빠른 선
input : MACDSlow(26); // MACD 느린 선
input : MACDSignal(9); // MACD 신호선
// 변수 선언
var : MAv(0); // 이동평균선
var : BBup(0); var : BBdn(0); // 볼밴 0.5σ
var : BBup1(0); var : BBdn1(0); // 볼밴 1σ
var : BBup1_5(0); var : BBdn1_5(0); // 볼밴 1.5σ
var : BBup2(0); var : BBdn2(0); // 볼밴 2σ
var : BBup2_5(0); var : BBdn2_5(0); // 볼밴 2.5σ
var : BBup3(0); var : BBdn3(0); // 볼밴 3σ
var : BBWidth(0); // 볼밴 폭 (스퀴즈 감지용)
var : MACDLine(0); var : SignalLine(0); var : MACDHist(0); // MACD 변수
var : RSIVal(0); // RSI 값
var : OBVVal(0); // OBV 값
var : VolumeSpike(False); // 거래량 급증 여부
// 계산
MAv = ma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (std(close, Period) * MultiD);
BBdn = MAv - (std(close, Period) * MultiD);
BBup1 = MAv + (std(close, Period) * 1);
BBdn1 = MAv - (std(close, Period) * 1);
BBup1_5 = MAv + (std(close, Period) * 1.5);
BBdn1_5 = MAv - (std(close, Period) * 1.5);
BBup2 = MAv + (std(close, Period) * 2);
BBdn2 = MAv - (std(close, Period) * 2);
BBup2_5 = MAv + (std(close, Period) * 2.5);
BBdn2_5 = MAv - (std(close, Period) * 2.5);
BBup3 = MAv + (std(close, Period) * 3);
BBdn3 = MAv - (std(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (ma(volume, 5) * 2);
// 매매 신호 조건
var : LongEntry(False); // 롱 진입 신호
var : PartialExit(False); // 일부 청산 신호
var : FullExit(False); // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and CrossUp(MACDLine,SignalLine));
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
// 시각화
plot1(MAv, "이평", blue);
plot2(BBup, "0.5", gray);
plot3(BBdn, "0.5", gray);
plot4(BBup1, "1", gray);
plot5(BBdn1, "1", gray);
plot6(BBup1_5, "1.5", orange);
plot7(BBdn1_5, "1.5", orange);
plot8(BBup2, "2", red);
plot9(BBdn2, "2", red);
plot10(BBup2_5, "2.5", purple);
plot11(BBdn2_5, "2.5", purple);
plot12(BBup3, "3", black);
plot13(BBdn3, "3", black);
// 매매 신호 시각화
var : tx1(0),tx2(0),tx3(0);
if LongEntry Then
{
tx1 = Text_New(sDate,sTime,L,"▲");
Text_SetStyle(tx1,2,0);
Text_SetColor(tx1,Green);
}
if PartialExit Then
{
tx2 = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx2,2,1);
Text_SetColor(tx2,yellow);
}
if FullExit Then
{
tx3 = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx3,2,1);
Text_SetColor(tx3,red);
}
2
// 입력값 설정
input : Period(18); // 이동평균 주기
input : MultiD(0.5); // 초기 표준편차 배수
input : RSILength(14); // RSI 주기
input : MACDFast(12); // MACD 빠른 선
input : MACDSlow(26); // MACD 느린 선
input : MACDSignal(9); // MACD 신호선
// 변수 선언
var : MAv(0); // 이동평균선
var : BBup(0); var : BBdn(0); // 볼밴 0.5σ
var : BBup1(0); var : BBdn1(0); // 볼밴 1σ
var : BBup1_5(0); var : BBdn1_5(0); // 볼밴 1.5σ
var : BBup2(0); var : BBdn2(0); // 볼밴 2σ
var : BBup2_5(0); var : BBdn2_5(0); // 볼밴 2.5σ
var : BBup3(0); var : BBdn3(0); // 볼밴 3σ
var : BBWidth(0); // 볼밴 폭 (스퀴즈 감지용)
var : MACDLine(0); var : SignalLine(0); var : MACDHist(0); // MACD 변수
var : RSIVal(0); // RSI 값
var : OBVVal(0); // OBV 값
var : VolumeSpike(False); // 거래량 급증 여부
// 계산
MAv = ma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (std(close, Period) * MultiD);
BBdn = MAv - (std(close, Period) * MultiD);
BBup1 = MAv + (std(close, Period) * 1);
BBdn1 = MAv - (std(close, Period) * 1);
BBup1_5 = MAv + (std(close, Period) * 1.5);
BBdn1_5 = MAv - (std(close, Period) * 1.5);
BBup2 = MAv + (std(close, Period) * 2);
BBdn2 = MAv - (std(close, Period) * 2);
BBup2_5 = MAv + (std(close, Period) * 2.5);
BBdn2_5 = MAv - (std(close, Period) * 2.5);
BBup3 = MAv + (std(close, Period) * 3);
BBdn3 = MAv - (std(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (ma(volume, 5) * 2);
// 매매 신호 조건
var : LongEntry(False); // 롱 진입 신호
var : PartialExit(False); // 일부 청산 신호
var : FullExit(False); // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and CrossUp(MACDLine,SignalLine));
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
plot1(MACDLine, "MACD", blue);
plot2(SignalLine, "Signal", red);
plot3(RSIVal, "RSI", purple);
plot4(OBVVal, "OBV", teal);
즐거운 하루되세요
> feelyen 님이 쓴 글입니다.
> 제목 : 식을 예스랭귀지로 변환 부탁드립니다.
> 아래식을 예스랭귀지로 변환 부탁드립니다.
// 입력값 설정
input Period = 18; // 이동평균 주기
input MultiD = 0.5; // 초기 표준편차 배수
input RSILength = 14; // RSI 주기
input MACDFast = 12; // MACD 빠른 선
input MACDSlow = 26; // MACD 느린 선
input MACDSignal = 9; // MACD 신호선
// 변수 선언
var MAv = 0; // 이동평균선
var BBup = 0; var BBdn = 0; // 볼밴 0.5σ
var BBup1 = 0; var BBdn1 = 0; // 볼밴 1σ
var BBup1_5 = 0; var BBdn1_5 = 0; // 볼밴 1.5σ
var BBup2 = 0; var BBdn2 = 0; // 볼밴 2σ
var BBup2_5 = 0; var BBdn2_5 = 0; // 볼밴 2.5σ
var BBup3 = 0; var BBdn3 = 0; // 볼밴 3σ
var BBWidth = 0; // 볼밴 폭 (스퀴즈 감지용)
var MACDLine = 0; var SignalLine = 0; var MACDHist = 0; // MACD 변수
var RSIVal = 0; // RSI 값
var OBVVal = 0; // OBV 값
var VolumeSpike = 0; // 거래량 급증 여부
// 계산
MAv = sma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (stdev(close, Period) * MultiD);
BBdn = MAv - (stdev(close, Period) * MultiD);
BBup1 = MAv + (stdev(close, Period) * 1);
BBdn1 = MAv - (stdev(close, Period) * 1);
BBup1_5 = MAv + (stdev(close, Period) * 1.5);
BBdn1_5 = MAv - (stdev(close, Period) * 1.5);
BBup2 = MAv + (stdev(close, Period) * 2);
BBdn2 = MAv - (stdev(close, Period) * 2);
BBup2_5 = MAv + (stdev(close, Period) * 2.5);
BBdn2_5 = MAv - (stdev(close, Period) * 2.5);
BBup3 = MAv + (stdev(close, Period) * 3);
BBdn3 = MAv - (stdev(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(close, RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (sma(volume, 5) * 2);
// 매매 신호 조건
var LongEntry = 0; // 롱 진입 신호
var PartialExit = 0; // 일부 청산 신호
var FullExit = 0; // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and MACDLine crosses above SignalLine);
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
// 시각화
plot(MAv, "이평", color.blue);
plot(BBup, "0.5", color.gray);
plot(BBdn, "0.5", color.gray);
plot(BBup1, "1", color.gray);
plot(BBdn1, "1", color.gray);
plot(BBup1_5, "1.5", color.orange);
plot(BBdn1_5, "1.5", color.orange);
plot(BBup2, "2", color.red);
plot(BBdn2, "2", color.red);
plot(BBup2_5, "2.5", color.purple);
plot(BBdn2_5, "2.5", color.purple);
plot(BBup3, "3", color.black);
plot(BBdn3, "3", color.black);
// 매매 신호 시각화
plotshape(LongEntry, "롱 진입", shape.triangleup, location.belowbar, color.green, size.small);
plotshape(PartialExit, "일부 청산", shape.triangledown, location.abovebar, color.yellow, size.small);
plotshape(FullExit, "전량 매도", shape.triangledown, location.abovebar, color.red, size.small);
// 추가 지표 플롯 (선택적)
plot(MACDLine, "MACD", color.blue);
plot(SignalLine, "Signal", color.red);
plot(RSIVal, "RSI", color.purple);
plot(OBVVal, "OBV", color.teal);
feelyen
2025-03-19 16:40:24
2번식으로 검증 했을 때 첨부파일처럼 에러가 발생합니다!
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 식을 예스랭귀지로 변환 부탁드립니다.
>
안녕하세요
예스스탁입니다.
// 추가 지표 플롯 (선택적)
plot(MACDLine, "MACD", color.blue);
plot(SignalLine, "Signal", color.red);
plot(RSIVal, "RSI", color.purple);
plot(OBVVal, "OBV", color.teal);
위 내용은 봉차트와 괴리가 있는 지표들입니다.
해당 지표도 Y축 범위가 다릅니다.
2번식으로 별도로 작성해 드립니다.
1.
// 입력값 설정
input : Period(18); // 이동평균 주기
input : MultiD(0.5); // 초기 표준편차 배수
input : RSILength(14); // RSI 주기
input : MACDFast(12); // MACD 빠른 선
input : MACDSlow(26); // MACD 느린 선
input : MACDSignal(9); // MACD 신호선
// 변수 선언
var : MAv(0); // 이동평균선
var : BBup(0); var : BBdn(0); // 볼밴 0.5σ
var : BBup1(0); var : BBdn1(0); // 볼밴 1σ
var : BBup1_5(0); var : BBdn1_5(0); // 볼밴 1.5σ
var : BBup2(0); var : BBdn2(0); // 볼밴 2σ
var : BBup2_5(0); var : BBdn2_5(0); // 볼밴 2.5σ
var : BBup3(0); var : BBdn3(0); // 볼밴 3σ
var : BBWidth(0); // 볼밴 폭 (스퀴즈 감지용)
var : MACDLine(0); var : SignalLine(0); var : MACDHist(0); // MACD 변수
var : RSIVal(0); // RSI 값
var : OBVVal(0); // OBV 값
var : VolumeSpike(False); // 거래량 급증 여부
// 계산
MAv = ma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (std(close, Period) * MultiD);
BBdn = MAv - (std(close, Period) * MultiD);
BBup1 = MAv + (std(close, Period) * 1);
BBdn1 = MAv - (std(close, Period) * 1);
BBup1_5 = MAv + (std(close, Period) * 1.5);
BBdn1_5 = MAv - (std(close, Period) * 1.5);
BBup2 = MAv + (std(close, Period) * 2);
BBdn2 = MAv - (std(close, Period) * 2);
BBup2_5 = MAv + (std(close, Period) * 2.5);
BBdn2_5 = MAv - (std(close, Period) * 2.5);
BBup3 = MAv + (std(close, Period) * 3);
BBdn3 = MAv - (std(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (ma(volume, 5) * 2);
// 매매 신호 조건
var : LongEntry(False); // 롱 진입 신호
var : PartialExit(False); // 일부 청산 신호
var : FullExit(False); // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and CrossUp(MACDLine,SignalLine));
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
// 시각화
plot1(MAv, "이평", blue);
plot2(BBup, "0.5", gray);
plot3(BBdn, "0.5", gray);
plot4(BBup1, "1", gray);
plot5(BBdn1, "1", gray);
plot6(BBup1_5, "1.5", orange);
plot7(BBdn1_5, "1.5", orange);
plot8(BBup2, "2", red);
plot9(BBdn2, "2", red);
plot10(BBup2_5, "2.5", purple);
plot11(BBdn2_5, "2.5", purple);
plot12(BBup3, "3", black);
plot13(BBdn3, "3", black);
// 매매 신호 시각화
var : tx1(0),tx2(0),tx3(0);
if LongEntry Then
{
tx1 = Text_New(sDate,sTime,L,"▲");
Text_SetStyle(tx1,2,0);
Text_SetColor(tx1,Green);
}
if PartialExit Then
{
tx2 = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx2,2,1);
Text_SetColor(tx2,yellow);
}
if FullExit Then
{
tx3 = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx3,2,1);
Text_SetColor(tx3,red);
}
2
// 입력값 설정
input : Period(18); // 이동평균 주기
input : MultiD(0.5); // 초기 표준편차 배수
input : RSILength(14); // RSI 주기
input : MACDFast(12); // MACD 빠른 선
input : MACDSlow(26); // MACD 느린 선
input : MACDSignal(9); // MACD 신호선
// 변수 선언
var : MAv(0); // 이동평균선
var : BBup(0); var : BBdn(0); // 볼밴 0.5σ
var : BBup1(0); var : BBdn1(0); // 볼밴 1σ
var : BBup1_5(0); var : BBdn1_5(0); // 볼밴 1.5σ
var : BBup2(0); var : BBdn2(0); // 볼밴 2σ
var : BBup2_5(0); var : BBdn2_5(0); // 볼밴 2.5σ
var : BBup3(0); var : BBdn3(0); // 볼밴 3σ
var : BBWidth(0); // 볼밴 폭 (스퀴즈 감지용)
var : MACDLine(0); var : SignalLine(0); var : MACDHist(0); // MACD 변수
var : RSIVal(0); // RSI 값
var : OBVVal(0); // OBV 값
var : VolumeSpike(False); // 거래량 급증 여부
// 계산
MAv = ma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (std(close, Period) * MultiD);
BBdn = MAv - (std(close, Period) * MultiD);
BBup1 = MAv + (std(close, Period) * 1);
BBdn1 = MAv - (std(close, Period) * 1);
BBup1_5 = MAv + (std(close, Period) * 1.5);
BBdn1_5 = MAv - (std(close, Period) * 1.5);
BBup2 = MAv + (std(close, Period) * 2);
BBdn2 = MAv - (std(close, Period) * 2);
BBup2_5 = MAv + (std(close, Period) * 2.5);
BBdn2_5 = MAv - (std(close, Period) * 2.5);
BBup3 = MAv + (std(close, Period) * 3);
BBdn3 = MAv - (std(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (ma(volume, 5) * 2);
// 매매 신호 조건
var : LongEntry(False); // 롱 진입 신호
var : PartialExit(False); // 일부 청산 신호
var : FullExit(False); // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and CrossUp(MACDLine,SignalLine));
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
plot1(MACDLine, "MACD", blue);
plot2(SignalLine, "Signal", red);
plot3(RSIVal, "RSI", purple);
plot4(OBVVal, "OBV", teal);
즐거운 하루되세요
> feelyen 님이 쓴 글입니다.
> 제목 : 식을 예스랭귀지로 변환 부탁드립니다.
> 아래식을 예스랭귀지로 변환 부탁드립니다.
// 입력값 설정
input Period = 18; // 이동평균 주기
input MultiD = 0.5; // 초기 표준편차 배수
input RSILength = 14; // RSI 주기
input MACDFast = 12; // MACD 빠른 선
input MACDSlow = 26; // MACD 느린 선
input MACDSignal = 9; // MACD 신호선
// 변수 선언
var MAv = 0; // 이동평균선
var BBup = 0; var BBdn = 0; // 볼밴 0.5σ
var BBup1 = 0; var BBdn1 = 0; // 볼밴 1σ
var BBup1_5 = 0; var BBdn1_5 = 0; // 볼밴 1.5σ
var BBup2 = 0; var BBdn2 = 0; // 볼밴 2σ
var BBup2_5 = 0; var BBdn2_5 = 0; // 볼밴 2.5σ
var BBup3 = 0; var BBdn3 = 0; // 볼밴 3σ
var BBWidth = 0; // 볼밴 폭 (스퀴즈 감지용)
var MACDLine = 0; var SignalLine = 0; var MACDHist = 0; // MACD 변수
var RSIVal = 0; // RSI 값
var OBVVal = 0; // OBV 값
var VolumeSpike = 0; // 거래량 급증 여부
// 계산
MAv = sma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (stdev(close, Period) * MultiD);
BBdn = MAv - (stdev(close, Period) * MultiD);
BBup1 = MAv + (stdev(close, Period) * 1);
BBdn1 = MAv - (stdev(close, Period) * 1);
BBup1_5 = MAv + (stdev(close, Period) * 1.5);
BBdn1_5 = MAv - (stdev(close, Period) * 1.5);
BBup2 = MAv + (stdev(close, Period) * 2);
BBdn2 = MAv - (stdev(close, Period) * 2);
BBup2_5 = MAv + (stdev(close, Period) * 2.5);
BBdn2_5 = MAv - (stdev(close, Period) * 2.5);
BBup3 = MAv + (stdev(close, Period) * 3);
BBdn3 = MAv - (stdev(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(close, RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (sma(volume, 5) * 2);
// 매매 신호 조건
var LongEntry = 0; // 롱 진입 신호
var PartialExit = 0; // 일부 청산 신호
var FullExit = 0; // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and MACDLine crosses above SignalLine);
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
// 시각화
plot(MAv, "이평", color.blue);
plot(BBup, "0.5", color.gray);
plot(BBdn, "0.5", color.gray);
plot(BBup1, "1", color.gray);
plot(BBdn1, "1", color.gray);
plot(BBup1_5, "1.5", color.orange);
plot(BBdn1_5, "1.5", color.orange);
plot(BBup2, "2", color.red);
plot(BBdn2, "2", color.red);
plot(BBup2_5, "2.5", color.purple);
plot(BBdn2_5, "2.5", color.purple);
plot(BBup3, "3", color.black);
plot(BBdn3, "3", color.black);
// 매매 신호 시각화
plotshape(LongEntry, "롱 진입", shape.triangleup, location.belowbar, color.green, size.small);
plotshape(PartialExit, "일부 청산", shape.triangledown, location.abovebar, color.yellow, size.small);
plotshape(FullExit, "전량 매도", shape.triangledown, location.abovebar, color.red, size.small);
// 추가 지표 플롯 (선택적)
plot(MACDLine, "MACD", color.blue);
plot(SignalLine, "Signal", color.red);
plot(RSIVal, "RSI", color.purple);
plot(OBVVal, "OBV", color.teal);
예스스탁
예스스탁 답변
2025-03-24 14:15:59
안녕하세요
예스스탁입니다.
수식을 EL모드로 작성하신거 같습니다.
EL모드로는 작성해 드리지 않으므로
새로작성창에서 EL에 체크하지 않고 작성하셔야 합니다.
즐거운 하루되세요
> feelyen 님이 쓴 글입니다.
> 제목 : Re : Re : 식을 예스랭귀지로 변환 부탁드립니다.
> 2번식으로 검증 했을 때 첨부파일처럼 에러가 발생합니다!
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 식을 예스랭귀지로 변환 부탁드립니다.
>
안녕하세요
예스스탁입니다.
// 추가 지표 플롯 (선택적)
plot(MACDLine, "MACD", color.blue);
plot(SignalLine, "Signal", color.red);
plot(RSIVal, "RSI", color.purple);
plot(OBVVal, "OBV", color.teal);
위 내용은 봉차트와 괴리가 있는 지표들입니다.
해당 지표도 Y축 범위가 다릅니다.
2번식으로 별도로 작성해 드립니다.
1.
// 입력값 설정
input : Period(18); // 이동평균 주기
input : MultiD(0.5); // 초기 표준편차 배수
input : RSILength(14); // RSI 주기
input : MACDFast(12); // MACD 빠른 선
input : MACDSlow(26); // MACD 느린 선
input : MACDSignal(9); // MACD 신호선
// 변수 선언
var : MAv(0); // 이동평균선
var : BBup(0); var : BBdn(0); // 볼밴 0.5σ
var : BBup1(0); var : BBdn1(0); // 볼밴 1σ
var : BBup1_5(0); var : BBdn1_5(0); // 볼밴 1.5σ
var : BBup2(0); var : BBdn2(0); // 볼밴 2σ
var : BBup2_5(0); var : BBdn2_5(0); // 볼밴 2.5σ
var : BBup3(0); var : BBdn3(0); // 볼밴 3σ
var : BBWidth(0); // 볼밴 폭 (스퀴즈 감지용)
var : MACDLine(0); var : SignalLine(0); var : MACDHist(0); // MACD 변수
var : RSIVal(0); // RSI 값
var : OBVVal(0); // OBV 값
var : VolumeSpike(False); // 거래량 급증 여부
// 계산
MAv = ma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (std(close, Period) * MultiD);
BBdn = MAv - (std(close, Period) * MultiD);
BBup1 = MAv + (std(close, Period) * 1);
BBdn1 = MAv - (std(close, Period) * 1);
BBup1_5 = MAv + (std(close, Period) * 1.5);
BBdn1_5 = MAv - (std(close, Period) * 1.5);
BBup2 = MAv + (std(close, Period) * 2);
BBdn2 = MAv - (std(close, Period) * 2);
BBup2_5 = MAv + (std(close, Period) * 2.5);
BBdn2_5 = MAv - (std(close, Period) * 2.5);
BBup3 = MAv + (std(close, Period) * 3);
BBdn3 = MAv - (std(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (ma(volume, 5) * 2);
// 매매 신호 조건
var : LongEntry(False); // 롱 진입 신호
var : PartialExit(False); // 일부 청산 신호
var : FullExit(False); // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and CrossUp(MACDLine,SignalLine));
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
// 시각화
plot1(MAv, "이평", blue);
plot2(BBup, "0.5", gray);
plot3(BBdn, "0.5", gray);
plot4(BBup1, "1", gray);
plot5(BBdn1, "1", gray);
plot6(BBup1_5, "1.5", orange);
plot7(BBdn1_5, "1.5", orange);
plot8(BBup2, "2", red);
plot9(BBdn2, "2", red);
plot10(BBup2_5, "2.5", purple);
plot11(BBdn2_5, "2.5", purple);
plot12(BBup3, "3", black);
plot13(BBdn3, "3", black);
// 매매 신호 시각화
var : tx1(0),tx2(0),tx3(0);
if LongEntry Then
{
tx1 = Text_New(sDate,sTime,L,"▲");
Text_SetStyle(tx1,2,0);
Text_SetColor(tx1,Green);
}
if PartialExit Then
{
tx2 = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx2,2,1);
Text_SetColor(tx2,yellow);
}
if FullExit Then
{
tx3 = Text_New(sDate,sTime,H,"▼");
Text_SetStyle(tx3,2,1);
Text_SetColor(tx3,red);
}
2
// 입력값 설정
input : Period(18); // 이동평균 주기
input : MultiD(0.5); // 초기 표준편차 배수
input : RSILength(14); // RSI 주기
input : MACDFast(12); // MACD 빠른 선
input : MACDSlow(26); // MACD 느린 선
input : MACDSignal(9); // MACD 신호선
// 변수 선언
var : MAv(0); // 이동평균선
var : BBup(0); var : BBdn(0); // 볼밴 0.5σ
var : BBup1(0); var : BBdn1(0); // 볼밴 1σ
var : BBup1_5(0); var : BBdn1_5(0); // 볼밴 1.5σ
var : BBup2(0); var : BBdn2(0); // 볼밴 2σ
var : BBup2_5(0); var : BBdn2_5(0); // 볼밴 2.5σ
var : BBup3(0); var : BBdn3(0); // 볼밴 3σ
var : BBWidth(0); // 볼밴 폭 (스퀴즈 감지용)
var : MACDLine(0); var : SignalLine(0); var : MACDHist(0); // MACD 변수
var : RSIVal(0); // RSI 값
var : OBVVal(0); // OBV 값
var : VolumeSpike(False); // 거래량 급증 여부
// 계산
MAv = ma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (std(close, Period) * MultiD);
BBdn = MAv - (std(close, Period) * MultiD);
BBup1 = MAv + (std(close, Period) * 1);
BBdn1 = MAv - (std(close, Period) * 1);
BBup1_5 = MAv + (std(close, Period) * 1.5);
BBdn1_5 = MAv - (std(close, Period) * 1.5);
BBup2 = MAv + (std(close, Period) * 2);
BBdn2 = MAv - (std(close, Period) * 2);
BBup2_5 = MAv + (std(close, Period) * 2.5);
BBdn2_5 = MAv - (std(close, Period) * 2.5);
BBup3 = MAv + (std(close, Period) * 3);
BBdn3 = MAv - (std(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (ma(volume, 5) * 2);
// 매매 신호 조건
var : LongEntry(False); // 롱 진입 신호
var : PartialExit(False); // 일부 청산 신호
var : FullExit(False); // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and CrossUp(MACDLine,SignalLine));
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
plot1(MACDLine, "MACD", blue);
plot2(SignalLine, "Signal", red);
plot3(RSIVal, "RSI", purple);
plot4(OBVVal, "OBV", teal);
즐거운 하루되세요
> feelyen 님이 쓴 글입니다.
> 제목 : 식을 예스랭귀지로 변환 부탁드립니다.
> 아래식을 예스랭귀지로 변환 부탁드립니다.
// 입력값 설정
input Period = 18; // 이동평균 주기
input MultiD = 0.5; // 초기 표준편차 배수
input RSILength = 14; // RSI 주기
input MACDFast = 12; // MACD 빠른 선
input MACDSlow = 26; // MACD 느린 선
input MACDSignal = 9; // MACD 신호선
// 변수 선언
var MAv = 0; // 이동평균선
var BBup = 0; var BBdn = 0; // 볼밴 0.5σ
var BBup1 = 0; var BBdn1 = 0; // 볼밴 1σ
var BBup1_5 = 0; var BBdn1_5 = 0; // 볼밴 1.5σ
var BBup2 = 0; var BBdn2 = 0; // 볼밴 2σ
var BBup2_5 = 0; var BBdn2_5 = 0; // 볼밴 2.5σ
var BBup3 = 0; var BBdn3 = 0; // 볼밴 3σ
var BBWidth = 0; // 볼밴 폭 (스퀴즈 감지용)
var MACDLine = 0; var SignalLine = 0; var MACDHist = 0; // MACD 변수
var RSIVal = 0; // RSI 값
var OBVVal = 0; // OBV 값
var VolumeSpike = 0; // 거래량 급증 여부
// 계산
MAv = sma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (stdev(close, Period) * MultiD);
BBdn = MAv - (stdev(close, Period) * MultiD);
BBup1 = MAv + (stdev(close, Period) * 1);
BBdn1 = MAv - (stdev(close, Period) * 1);
BBup1_5 = MAv + (stdev(close, Period) * 1.5);
BBdn1_5 = MAv - (stdev(close, Period) * 1.5);
BBup2 = MAv + (stdev(close, Period) * 2);
BBdn2 = MAv - (stdev(close, Period) * 2);
BBup2_5 = MAv + (stdev(close, Period) * 2.5);
BBdn2_5 = MAv - (stdev(close, Period) * 2.5);
BBup3 = MAv + (stdev(close, Period) * 3);
BBdn3 = MAv - (stdev(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(close, RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (sma(volume, 5) * 2);
// 매매 신호 조건
var LongEntry = 0; // 롱 진입 신호
var PartialExit = 0; // 일부 청산 신호
var FullExit = 0; // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and MACDLine crosses above SignalLine);
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
// 시각화
plot(MAv, "이평", color.blue);
plot(BBup, "0.5", color.gray);
plot(BBdn, "0.5", color.gray);
plot(BBup1, "1", color.gray);
plot(BBdn1, "1", color.gray);
plot(BBup1_5, "1.5", color.orange);
plot(BBdn1_5, "1.5", color.orange);
plot(BBup2, "2", color.red);
plot(BBdn2, "2", color.red);
plot(BBup2_5, "2.5", color.purple);
plot(BBdn2_5, "2.5", color.purple);
plot(BBup3, "3", color.black);
plot(BBdn3, "3", color.black);
// 매매 신호 시각화
plotshape(LongEntry, "롱 진입", shape.triangleup, location.belowbar, color.green, size.small);
plotshape(PartialExit, "일부 청산", shape.triangledown, location.abovebar, color.yellow, size.small);
plotshape(FullExit, "전량 매도", shape.triangledown, location.abovebar, color.red, size.small);
// 추가 지표 플롯 (선택적)
plot(MACDLine, "MACD", color.blue);
plot(SignalLine, "Signal", color.red);
plot(RSIVal, "RSI", color.purple);
plot(OBVVal, "OBV", color.teal);