커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

지표 변환 문의드립니다.

성실한 대답에 매번 감사하고 있습니다, 트레이딩 지표입니다. // 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!") 지표로 변환 부탁드립니다.
프로필 이미지
knoll
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
지표

남한산성 님에 의해서 삭제되었습니다.

프로필 이미지
남한산성
2025-05-20
55
글번호 190980
시스템
답변완료

종목검색식 부탁드림니다.

항상 노고에 감사드림니다. 아래의 수식을 종목검색식으로 부탁드림니다. A1=Crossdown(RSI(21), 38); cnt=Countsince(date!=date(1), A1); cnt== 1&& cnt(1) == 0
프로필 이미지
존슨비치
2025-05-19
235
글번호 190979
종목검색
답변완료

연결선물 구분

안녕하세요? 라이브캐틀 연결선물 차트는 거래량 기준으로 가장 많은 종목을 최근원물을 정의하고 최근원물끼리 연결하여 연속된 차트를 생성하고 있는 듯 싶습니다. 그 개별차트를 연결하여 연결차트로 그릴 때 원물이 바뀌는 시점에 가격차트상에 세로선을 긋고 싶습니다. 감사합니다.
프로필 이미지
흰둥이아빠
2025-05-19
181
글번호 190978
강조
답변완료

미장 OHLC

안녕하세요 미국 정규장 OHLC 가격을 나타내는 사용자 함수 부탁드립니다. 나중에 지표로 표시 해서 사용할 예정입니다 NQ랑 ES에만 적용할 예정입니다. 거래소 시간 09~30분 같은데… 차트에서 시간은 거래소 시간으로 설정할 예정입니다. RealO, RealH, ReaL, RealC 이렇게 설정해 주세요 그리고 realO[1]로 적으면 어제 본장의 오픈 가격이 오늘 표시되게 해주세요.
프로필 이미지
이만스닥
2025-05-19
177
글번호 190977
사용자 함수
답변완료

수식 검증 좀 부탁드립니다!

청산이 잘 안됩니다. 수식 검증 좀 부탁드립니다!! // 진입 전략: 이평선 기준, long은 이평 크로스 업, short은 초단기로만 Var: aa(0), bb(0); Input: ss(3), sss(4); //진입변수 Var: yyy(1); //진입수량 aa = Average(close, ss); // 단기 이평선 bb = Average(close, ss*sss); // 장기 이평선 if CrossUp(aa,bb[1]) Then Buy ("매수", AtMarket,Def,yyy); // 단기 이평선이 장기 이평선을 골든크로스 시 롱 진입 input: SL(10), PT(10); SetStopTrailing(SL,PT,PercentStop); input: ShortHoldDay(2), SL_time(10); if MarketPosition <0 and BarsSinceEntry > ShortholdDay Then { ExitLong("EL_time",AtMarket); ExitShort("ES_time",AtMarket);} if SL_time > 0 Then SetStopLoss ((SL_time/BigPointValue),PointStop);
프로필 이미지
김작가
2025-05-19
213
글번호 190976
시스템
답변완료

시간설정

늘 감사합니다. 차트에 시간지정 설정하기 8시45분을 기준으로 15시45분 까지 약17분간격으로 검은색 세로선 그리기. 종료시간 까지 총25개 선입니다. 색상변경, 굵기변경, 시간간격을 변경하면 갯수가 변할수 있으면 너무 좋아요. 감사함니다
프로필 이미지
상암동
2025-05-20
207
글번호 190975
지표
답변완료

답변주신 내용중 공부상 질문

안녕하세요 아래에 같이 지난 요청에 수식을 작성해주셨는데요. input : N(1); var : x(0),y(0); Array : VV[2,20](0),box[20](0); For x = 19 DownTo 1 { VV[0,x] = VV[0,x-1]; VV[1,x] = VV[1,x-1]; } VV[0,0] = v; VV[1,0] = Index; var1 = Sort2DArray(VV,2,20,1); For x = 0 to N-1 { Box_Delete(box[x]); var1 = H[index-vv[1,x]]; var2 = L[index-vv[1,x]]; box[x] = Box_New(sDate[index-vv[1,x]],sTime[index-vv[1,x]],var1,NextBarSdate,NextBarStime,var2); Box_SetColor(box[x],Red); Box_SetFill(box[x],true); } 위 코드에서 var1 = Sort2DArray(VV,2,20,1); 부분과 for문 내부에서 var1 = H[index-vv[1,x]]; 를 사용하는 부분이 공부하는데 조금 어렵습니다. 동일한 변수명을 재사용한것과 배열을 정렬해서 배열이 아닌 변수에 값을 넘기는것이 이해가 잘 되지 않는 부분입니다. 공부를 위해서 설명과 코드에 자세한 주석을 달아주시길 부탁드립니다!! 항상 답변 감사드립니다.
프로필 이미지
oni
2025-05-19
179
글번호 190974
지표