답변완료
지표 변환 문의드립니다.
성실한 대답에 매번 감사하고 있습니다,
트레이딩 지표입니다.
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// KivancOzbilgic
//@version=4
study("Quantitative Qualitative Estimation", shorttitle="QQE",precision=4, resolution="")
src=input(close)
length = input(14,"RSI Length", minval=1)
SSF=input(5, "SF RSI SMoothing Factor", minval=1)
showsignals = input(title="Show Crossing Signals?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
RSII=ema(rsi(src,length),SSF)
TR=abs(RSII-RSII[1])
wwalpha = 1/ length
WWMA = 0.0
WWMA := wwalpha*TR + (1-wwalpha)*nz(WWMA[1])
ATRRSI=0.0
ATRRSI := wwalpha*WWMA + (1-wwalpha)*nz(ATRRSI[1])
QQEF=ema(rsi(src,length),SSF)
QUP=QQEF+ATRRSI*4.236
QDN=QQEF-ATRRSI*4.236
QQES=0.0
QQES:=QUP<nz(QQES[1]) ? QUP : QQEF>nz(QQES[1]) and QQEF[1]<nz(QQES[1]) ? QDN : QDN>nz(QQES[1]) ? QDN : QQEF<nz(QQES[1]) and QQEF[1]>nz(QQES[1]) ? QUP : nz(QQES[1])
QQF=plot(QQEF,"FAST",color.maroon,2)
QQS=plot(QQES,"SLOW",color=color.blue, linewidth=1)
plot(50,color=color.gray,style=6)
longFillColor = highlighting ? (QQEF>QQES ? color.green : na) : na
shortFillColor = highlighting ? (QQEF<QQES ? color.red : na) : na
fill(QQF, QQS, title="UpTrend Highligter", color=longFillColor)
fill(QQF, QQS, title="DownTrend Highligter", color=shortFillColor)
buySignalr = crossover(QQEF, QQES)
plotshape(buySignalr and showsignals ? QQES*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
sellSignallr = crossunder(QQEF, QQES)
plotshape(sellSignallr and showsignals ? QQES*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
alertcondition(cross(QQEF, QQES), title="Cross Alert", message="QQE Crossing Signal!")
alertcondition(crossover(QQEF, QQES), title="Crossover Alarm", message="QQE BUY SIGNAL!")
alertcondition(crossunder(QQEF, QQES), title="Crossunder Alarm", message="QQE SELL SIGNAL!")
alertcondition(crossover(QQEF, 50), title="Cross 50 Up Alert", message="QQE FAST Crossing 50 UP!")
alertcondition(crossunder(QQEF, 50), title="Cross 50 Down Alert", message="QQE FAST Crossing 50 DOWN!")
지표로 변환 부탁드립니다.
2025-05-20
281
글번호 190988
지표
답변완료
부탁드립니다 항상 감사합니다
Input: P(0), length(10);
Var: j(0), lastHiVal(0), lastLoVal(0), sBar(0), eBar(0), TL1(0), TL2(0),
Text1(0), 처리구분(""), T(0), TL3(0), TL4(0), TL5(0), color(0),
waveCount(0), waveText(0);
Array: 고점 , 저점 ; // 가격, 위치
// 처리구분 결정
처리구분 = "";
If Highest(H, length) == H and lastHiVal <> H and
Lowest(L, length) == L and lastLoVal <> L Then
Begin
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
End
Else If Highest(H, length) == H and lastHiVal <> H Then
처리구분 = "고점처리";
Else If Lowest(L, length) == L and lastLoVal <> L Then
처리구분 = "저점처리";
// 고점 처리
If 처리구분 == "고점처리" Then
Begin
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
Begin
For j = 10 Downto 2
Begin
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
End;
End;
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
Begin
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
Begin
TL_Delete(TL1);
Text_Delete(Text1);
End;
TL1 = TL_New(sDate[sBar], sTime[sBar], 저점[1,1], sDate[eBar], sTime[eBar], 고점[1,1]);
TL2 = TL_New(sDate[sBar], sTime[sBar], 저점[1,1], sDate[eBar], sTime[eBar], 저점[1,1]);
TL3 = TL_New(sDate[sBar], sTime[sBar], 저점[1,1]+(고점[1,1]-저점[1,1])*0.382, sDate[eBar], sTime[eBar], 저점[1,1]+(고점[1,1]-저점[1,1])*0.382);
TL4 = TL_New(sDate[sBar], sTime[sBar], 저점[1,1]+(고점[1,1]-저점[1,1])*0.500, sDate[eBar], sTime[eBar], 저점[1,1]+(고점[1,1]-저점[1,1])*0.500);
TL5 = TL_New(sDate[sBar], sTime[sBar], 저점[1,1]+(고점[1,1]-저점[1,1])*0.618, sDate[eBar], sTime[eBar], 저점[1,1]+(고점[1,1]-저점[1,1])*0.618);
Text1 = Text_New(sDate[eBar], sTime[eBar], 고점[1,1], NumToStr(고점[1,1], P));
Text_SetStyle(Text1, 2, 1);
Text_SetColor(Text1, Blue);
color = -1;
waveCount += 1;
waveText = Text_New(sDate[eBar], sTime[eBar], 고점[1,1], ""Wave " + NumToStr(waveCount, 0) + """);
Text_SetStyle(waveText, 1, 0);
Text_SetColor(waveText, Blue);
End;
End;
// 저점 처리
If 처리구분 == "저점처리" Then
Begin
lastLoVal = L;
If 저점[1,2] < 고점[1,2] Then
Begin
For j = 10 Downto 2
Begin
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
End;
End;
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
Begin
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
Begin
TL_Delete(TL1);
Text_Delete(Text1);
End;
TL1 = TL_New(sDate[sBar], sTime[sBar], 고점[1,1], sDate[eBar], sTime[eBar], 저점[1,1]);
TL2 = TL_New(sDate[sBar], sTime[sBar], 고점[1,1], sDate[eBar], sTime[eBar], 고점[1,1]);
TL3 = TL_New(sDate[sBar], sTime[sBar], 고점[1,1]-(고점[1,1]-저점[1,1])*0.382, sDate[eBar], sTime[eBar], 고점[1,1]-(고점[1,1]-저점[1,1])*0.382);
TL4 = TL_New(sDate[sBar], sTime[sBar], 고점[1,1]-(고점[1,1]-저점[1,1])*0.500, sDate[eBar], sTime[eBar], 고점[1,1]-(고점[1,1]-저점[1,1])*0.500);
TL5 = TL_New(sDate[sBar], sTime[sBar], 고점[1,1]-(고점[1,1]-저점[1,1])*0.618, sDate[eBar], sTime[eBar], 고점[1,1]-(고점[1,1]-저점[1,1])*0.618);
Text1 = Text_New(sDate[eBar], sTime[eBar], 저점[1,1], NumToStr(저점[1,1], P));
Text_SetStyle(Text1, 2, 8);
Text_SetColor(Text1, Red);
color = 1;
waveCount += 1;
waveText = Text_New(sDate[eBar], sTime[eBar], 저점[1,1], ""Wave " + NumToStr(waveCount, 0) + """);
Text_SetStyle(waveText, 1, 0);
Text_SetColor(waveText, Red);
End;
End;
TL_SetSize(TL1, 0);
TL_SetColor(TL1, GRAY);
Plot1(color);
마찬가지로 오류가 나서요 예스트레이더
차트에 구현될수있게 수정 부탁드립니다 오늘도 화이팅이십니다
2025-05-20
240
글번호 190982
지표
답변완료
부탁드립니다 항상 감사합니다
// ? RSI + MACD 숏 + 다중 목표가 TP3 + 손익비 박스 + 거래량 급증 + 텍스트 + 시간 제한
Input:
rsiLen(14), rsiCut(50),
macdFastLen(12), macdSlowLen(26), macdSignalLen(9),
tp1Ratio(0.995), tp2Ratio(0.990), tp3Ratio(0.985), slRatio(1.01),
volumeMultiplier(2.0), 평균거래량기간(20),
시작시간(93000), 종료시간(150000);
Var:
rsiVal(0), macdFastEMA(0), macdSlowEMA(0),
macdMain(0), macdSignal(0), macdHist(0),
진입가(0), TP1(0), TP2(0), TP3(0), SL(0),
거래량기준(0), 텍스트ID(0),
TL1(0), TL2(0), TL3(0), TL4(0),
박스상(0), 박스하(0),
매도조건(false);
// ▶? 1. RSI 계산
rsiVal = RSI(rsiLen);
// ▶? 2. MACD 수동 계산 (Index 기준 초기화 제거)
If CurrentBar = 1 Then
Begin
macdFastEMA = Close;
macdSlowEMA = Close;
macdMain = 0;
macdSignal = 0;
macdHist = 0;
End
Else
Begin
macdFastEMA = (Close * (2 / (macdFastLen + 1))) + macdFastEMA[1] * (1 - (2 / (macdFastLen + 1)));
macdSlowEMA = (Close * (2 / (macdSlowLen + 1))) + macdSlowEMA[1] * (1 - (2 / (macdSlowLen + 1)));
macdMain = macdFastEMA - macdSlowEMA;
macdSignal = (macdMain * (2 / (macdSignalLen + 1))) + macdSignal[1] * (1 - (2 / (macdSignalLen + 1)));
macdHist = macdMain - macdSignal;
End;
// ▶? 3. 평균 거래량 계산
거래량기준 = Average(Volume, 평균거래량기간);
// ▶? 4. 진입 조건 + 시간 필터
If Time >= 시작시간 and Time <= 종료시간 Then
Begin
If rsiVal < rsiCut and macdHist < 0 and macdHist[1] > 0 and Volume > 거래량기준 * volumeMultiplier Then
Begin
매도조건 = true;
진입가 = Close;
// 목표가 / 손절가 계산
TP1 = 진입가 * tp1Ratio;
TP2 = 진입가 * tp2Ratio;
TP3 = 진입가 * tp3Ratio;
SL = 진입가 * slRatio;
박스상 = SL;
박스하 = TP3;
// ?? 손익비 박스 (TL 선 4개)
TL1 = TL_New(Date, Time, 박스상, Date, Time, 박스하);
TL2 = TL_New(Date[1], Time[1], 박스상, Date[1], Time[1], 박스하);
TL3 = TL_New(Date[1], Time[1], 박스상, Date, Time, 박스상);
TL4 = TL_New(Date[1], Time[1], 박스하, Date, Time, 박스하);
TL_SetColor(TL1, RGB(255, 200, 200)); TL_SetSize(TL1, 1);
TL_SetColor(TL2, RGB(255, 200, 200)); TL_SetSize(TL2, 1);
TL_SetColor(TL3, RGB(255, 200, 200)); TL_SetSize(TL3, 1);
TL_SetColor(TL4, RGB(255, 200, 200)); TL_SetSize(TL4, 1);
// ?? 텍스트 알림
텍스트ID = Text_New(Date, Time, High, "*진입조건만족");
Text_SetColor(텍스트ID, RGB(255, 0, 0));
End;
End;
// ▶? 5. 목표가 / 손절가 Plot 시각화
If 매도조건 Then
Begin
Plot1(TP1, "TP1"); SetPlotColor(1, RGB(0, 150, 255));
Plot2(TP2, "TP2"); SetPlotColor(2, RGB(0, 100, 200));
Plot3(TP3, "TP3"); SetPlotColor(3, RGB(0, 50, 150));
Plot4(SL, "손절"); SetPlotColor(4, RGB(255, 0, 0));
End;
2.
Input : per(100), mult(3.0), 익절비율(1.01), 손절비율(0.995);
Var : upColor(Red), midColor(Green), downColor(Blue);
Var : src(0), filt(0), T(0), tx(0);
Var : wper(0), avrng(0), smrng(0);
Var : upward(0), downward(0), hband(0), lband(0), filtColor(0);
Var : 진입가(0), 박스ID(0), 텍스트ID(0), 거래량기준(0);
// 원본 데이터
src = Close;
// 필터 길이 및 스무딩
wper = per * 2 - 1;
avrng = EMA(AbsValue(src - src[1]), per);
smrng = EMA(avrng, wper) * mult;
// 필터 계산
filt = IFF(IsNaN(filt[1]) == true, src, filt[1]);
filt = IFF(src > filt,
IFF(src - smrng < filt, filt, src - smrng),
IFF(src + smrng > filt, filt, src + smrng));
// 방향 계산
upward = IFF(filt > filt[1],
IFF(IsNaN(upward[1]) == true, 0, upward[1]) + 1,
IFF(filt < filt[1], 0, IFF(IsNaN(upward[1]) == true, 0, upward[1])));
downward = IFF(filt < filt[1],
IFF(IsNaN(downward[1]) == true, 0, downward[1]) + 1,
IFF(filt > filt[1], 0, IFF(IsNaN(downward[1]) == true, 0, downward[1])));
// 상단/하단 밴드
hband = filt + smrng;
lband = filt - smrng;
// 색상
filtColor = IFF(upward > 0, upColor, IFF(downward > 0, downColor, midColor));
// 거래량 필터
거래량기준 = Average(Volume, 20);
// 차트 출력
Plot1(filt, "Range Filter", filtColor);
Plot2(hband, "High Band", upColor);
Plot3(lband, "Low Band", downColor);
// 시그널 조건 + 거래량 필터
If 거래량 > 거래량기준 Then
Begin
If (src > filt and upward > 0) Then
T = 1;
Else If (src < filt and downward > 0) Then
T = -1;
Else
T = 0;
End
Else
T = 0;
// 시그널 발생 시 텍스트 및 박스 출력
If T == 1 and T[1] != 1 Then
Begin
tx = Text_New(Date, Time, Low, "▲");
Text_SetColor(tx, upColor);
Text_SetStyle(tx, 2, 0);
진입가 = Close;
박스ID = Box_New(Date, Time, 진입가 * 익절비율, Date, Time + 10, 진입가 * 손절비율);
Box_SetColor(박스ID, upColor);
Box_SetBGColor(박스ID, RGB(255, 0, 0, 50)); // 투명도 50
End;
If T == -1 and T[1] != -1 Then
Begin
tx = Text_New(Date, Time, High, "▼");
Text_SetColor(tx, downColor);
Text_SetStyle(tx, 2, 0);
진입가 = Close;
박스ID = Box_New(Date, Time, 진입가 * 손절비율, Date, Time + 10, 진입가 * 익절비율);
Box_SetColor(박스ID, downColor);
Box_SetBGColor(박스ID, RGB(0, 0, 255, 50));
End;
3.// ============ 교차 함수 정의 ============
Function Cross(A, B)
Begin
Cross = (A > B and A[1] <= B[1]) or (A < B and A[1] >= B[1]);
End;
// ============ 변수 선언 ============
VAR: VALUE1(0), VALUE2(0), VALUE3(0),
VALUE4(0), VALUE5(0), VALUE6(0), VALUE7(0),
VAR13(0), VAR14(0), VAR15(0), VAR16(0);
// ============ 체결강도 계산 ============
VALUE1 = 0;
VALUE2 = 0;
If C > C[1] Then
VALUE1 = V;
Else If C < C[1] Then
VALUE2 = V;
VALUE3 = ACCUM(VALUE1 - VALUE2); // 체결강도 누적
// 이동평균선 기준선
VAR13 = EMA(VALUE3, 10);
VAR14 = EMA(VALUE3, 20);
VAR15 = EMA(VALUE3, 64);
VAR16 = EMA(VALUE3, 128);
// 교차 발생 시 시가 저장
If Cross(VALUE3, VAR13) Then VALUE4 = C;
If Cross(VALUE3, VAR14) Then VALUE5 = C;
If Cross(VALUE3, VAR15) Then VALUE6 = C;
If Cross(VALUE3, VAR16) Then VALUE7 = C;
// ============ 시각화 ============
Plot12(VALUE4, "OI_10", Yellow);
Plot13(VALUE5, "OI_20", Cyan);
Plot14(VALUE6, "OI_64", Green);
Plot15(VALUE7, "OI_128", Red);
4. // 체결강도 구분 초기화
VALUE1 = 0;
VALUE2 = 0;
If C > C[1] Then
VALUE1 = V; // 매수 체결로 간주
Else If C < C[1] Then
VALUE2 = V; // 매도 체결로 간주
VALUE3 = ACCUM(VALUE1 - VALUE2); // 체결강도 누적 (순매수량)
// 기준선(평균선)
VAR13 = EMA(VALUE3, 10);
VAR14 = EMA(VALUE3, 20);
VAR15 = EMA(VALUE3, 64);
VAR16 = EMA(VALUE3, 128);
// 교차 시가 출력
If Cross(VALUE3, VAR13) Then VALUE4 = C;
If Cross(VALUE3, VAR14) Then VALUE5 = C;
If Cross(VALUE3, VAR15) Then VALUE6 = C;
If Cross(VALUE3, VAR16) Then VALUE7 = C;
오류가계속나서요 예스트레이더에 구현될수있게 수정부탁드립니다 항상 수고많으십니다
2025-05-20
210
글번호 190981
지표