커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

수식 도움 요청드립니다

수고에 늘 감사드립니다. 아래 수식을 예스랭귀지로 변환하고자 도움을 요청 드립니다. 매번 수고에 거듭 감사드립니다. //@version=5 indicator(title='Super trend B', overlay=true) length = input.int(20, minval=1) src = close mult1 = input.float(0.5, minval=0.001, maxval=50, title=" multiflier") basis = ta.sma(src, length) upper1 = basis + mult1 * ta.stdev(src, length) lower1 = basis - mult1 * ta.stdev(src, length) plot(basis, "Basis", color=#FF6D00) plot(upper1, "Upper 1", color=#2962FF) plot(lower1, "Lower 1", color=#2962FF) // INPUTS // st_mult = input.float(3, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01) st_period = input.int(7, title='SuperTrend Period', minval=1) // CALCULATIONS // up_lev = upper1 - st_mult * ta.atr(st_period) dn_lev = lower1 + st_mult * ta.atr(st_period) up_trend = 0.0 up_trend := close > up_trend ? math.max(up_lev, up_trend) : up_lev down_trend = 0.0 down_trend := close < down_trend ? math.min(dn_lev, down_trend) : dn_lev // Calculate trend var trend = 0 trend := close > down_trend ? 1 : close < up_trend ? -1 : nz(trend, 1) // Calculate SuperTrend Line st_line = trend == 1 ? up_trend : down_trend // Plotting //plot(st_line[1], color=trend == 1 ? color.green : color.red, style=plot.style_cross, linewidth=2, title='SuperTrend') buy = ta.crossover(close, st_line) sell = ta.crossunder(close, st_line) //plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny) //plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny) //plotshape(buy, title='buy', text='Buy', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon plotshape(sell, title='sell', text='Sell', color=color.new(color.red, 0), style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.new(color.white, 0)) //plot for sell icon // multiplier = input.float(title='DEV', defval=2, minval=1) src5 = close len5 = input.int(title='Linear length', defval=150, minval=1) offset = 0 calcSlope(src5, len5) => sumX = 0.0 sumY = 0.0 sumXSqr = 0.0 sumXY = 0.0 for i = 1 to len5 by 1 val = src5[len5 - i] per = i + 1.0 sumX += per sumY += val sumXSqr += per * per sumXY += val * per sumXY slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX) average = sumY / len5 intercept = average - slope * sumX / len5 + slope [slope, average, intercept] var float tmp = na [s, a, i] = calcSlope(src5, len5) vwap1 = i + s * (len5 - offset) sdev = ta.stdev(close, len5) dev = multiplier * sdev top = vwap1 + dev bott = vwap1 - dev // z1 = vwap1 + dev x1 = vwap1 - dev low1 = ta.crossover(close, x1) high1 = ta.crossunder(close, z1) plotshape(low1, title='b', text='BUY', color=color.new(color.green, 0), style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.new(color.white, 0)) //plot for buy icon //plotshape(high1, title='high', text='HIGH', color=color.new(color.green, 0), style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.new(color.white, 0)) //plot for sell icon /////// Alerts ///// //alertcondition(buy, title='buy') alertcondition(sell, title='sell') alertcondition(low1, title='buy') //alertcondition(high1, title='buy tp')
프로필 이미지
이큐
2024-01-21
1114
글번호 175942
지표
답변완료

부탁좀 드립니다.

상승 하는 20일선을 15일 기간안에서 (5일도 좋고, 7일도 좋고..) 20선을 돌파 했다가, 이탈 하고 재 돌파한 종목을 찾을 수 있을까요? 부탁 드립니다.
프로필 이미지
그리워
2024-01-21
1126
글번호 175941
종목검색
답변완료

수식요청

안녕하세요 수식부탁드립니다 이평60선 볼밴과 이평폭 +- 10틱이내 매수식 가격이 이평 60선을 하락이나 상승후 이평 60선이 볼밴 하한선과의 폭이 +- 10틱이내인 상태에서 가격이 이평 60선을 터치나 하락후 상승시 첫봉에서 매수 매도식 가격이 이평60선을 상승이나 하락후 이평 60선이 볼밴 상한선과의 폭이 -+10틱이내 가격이 이평60선을 터치나상승후 하락시 첫봉에서 매도
프로필 이미지
아트정
2024-01-21
1062
글번호 175940
시스템

고래상어의꿈 님에 의해서 삭제되었습니다.

프로필 이미지
고래상어의꿈
2024-01-21
3
글번호 175939
종목검색
답변완료

질문드려요

두가지 신호를 동시에 만족시키는 종목을 검색하고 싶어요 부탁드립니다. 신호1 a=avg(c,5); b=avg(c,20); d=avg(c,60); D1=(A+B+D)/3; A1=(highest(high,9)+lowest(low,9))/2; B1=(highest(high,26)+lowest(low,26))/2; B2=(A1+B1)/2; A3=RSI(9)-50; B3=CMO(12)*0.5; B4=A3+B3; B5=eavg(C,120); (crossup(B2,D1) or crossup(D1,B5) or crossup(B2,B5)) 신호2 Bu=BBandsUp(20,2); CrossUp(C, Bu(25))
프로필 이미지
아빠주식
2024-01-21
1004
글번호 175938
종목검색
답변완료

질문드려요

신호수식인데 이신호로 종목검색하고 싶어요 부탁드립니다. M= ma(C, 240, 삼각); HH = HighestSince(1, CrossUp(C, M), H); Bs = BarsSince(CrossUp(C, M))+1; cnt = CountSince(CrossUp(C, M), C>M); 조건= Bs == cnt && CrossUp(C, HH(1)) && Bs>20; 첫신호 = CountSince(CrossUp(C, M), 조건); 첫신호 ==1 && 첫신호(1)==0
프로필 이미지
아빠주식
2024-01-21
1076
글번호 175937
종목검색
답변완료

문의드립니다

렌코차트식 검색하다 발견한 지표식인데요 주봉에 적용하니까 이상하게 나옵니다 (오류) 그리고 upperline, lowline 등은 아예 표시도 안되네요 수정 좀 부탁합니다 감사합니다 input:renkoSize(0.5),length(10),NumATRs(1.5); var:j(0),k(0),renkoCnt(0),gubun(0),Sum(0),trSum(0),atrV(0),time1(0),filename("renko3.txt"),printOK(False); array:OO[50](0),HH[50](0),LL[50](0),CC[50](0), TR[50](0), //True Range upperLine[50](0), //상단채널 lowerLine[50](0), //하단채널 maV[50](0); //이평선 if stime >= 180000 or stime < 090000 then{ If index == 0 or (stime == 180000) or (stime > 180000 and stime[1] < 180000) Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산 gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산 For j = 49 DownTo 1 { //금일 시가봉을 신규 추가 OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다 HH[0] = C; LL[0] = C; CC[0] = C; } Else { If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점 If OO[0] - renkoSize >= C Then { gubun = -1; //하락 방향 CC[0] = OO[0] - renkoSize; //음봉 HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); //true range 계산식 참조 //macd 계산 당시와 마찬가지로 sum 값이 있을 때만 처리 If sum > 0 Then { sum = sum + CC[0] - CC[length]; //이평선 계산 원리 그대로, 현재가를 더하고 n봉전 가격 뺌 trSum = trSum + TR[0] - TR[length]; //true range의 합을 계산 maV[0] = Sum / length; //n개의 종가 합을 n으로 나누어 이동평균 계산 atrV = trSum / length; //ATR 계산식 참조 upperLine[0] = maV[0] + atrV * NumATRs; //상단 밴드 계산 lowerLine[0] = maV[0] - atrV * NumATRs; //하단 밴드 계산 } j = 0; if printOK then print(filename,"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } Else If OO[0] + renkoSize <= C Then { gubun = 1; //상승 방향 CC[0] = OO[0] + renkoSize; //양봉 HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); If sum > 0 Then { //계속 반복되는 공통 루틴이므로 if문 바깥으로 뺄까도 했으나 sum = sum + CC[0] - CC[length]; //더 복잡해지므로 copy & paste로 처리 trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; if printOK then print(filename,"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } If LL[0] - renkoSize >= C Then { gubun = -1; renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = LL[j+1]; CC[j] = LL[j+1] - renkoSize; HH[j] = OO[j]; LL[j] = CC[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename,"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If HH[0] + renkoSize <= C Then { gubun = 1; renkoCnt = Int(Round((C-HH[0])/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = HH[j+1]; CC[j] = HH[j+1] + renkoSize; HH[j] = CC[j]; LL[j] = OO[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename,"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If sTime >= 45500 and stime < 090000 Then { //당일 종가봉에서 For j = 49 DownTo 1 { OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } If LL[1] > C Then { //종가가 이전 봉보다 아래 형성 OO[0] = LL[1]; CC[0] = C; HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성 OO[0] = HH[1]; CC[0] = C; HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else { //종가가 이전 봉의 중간에 형성 OO[0] = C; CC[0] = C; HH[0] = C; LL[0] = C; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } If sum > 0 Then { sum = sum + CC[0] - CC[length]; trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; //채널 값을 새로이 계산 if printOK then print(filename,"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } if sum == 0 and CC[length] > 0 then { for j = 0 to length - 1 { sum = sum + CC[j]; trsum = trsum + max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); } } } If OO[0] > 0 Then Plot1(OO[0],"OO",iff(OO[0] > CC[0],black,MAGENTA)); //지표속성 -> 차트표시 -> 채우기 -> OO < CC 면 빨강 추가 If CC[0] > 0 Then Plot2(CC[0],"CC"); // OO > CC 면 파랑 추가 if upperLine[0] > 100 then plot3(upperLine[0],"UpperBand"); if lowerLine[0] > 100 then plot4(lowerLine[0],"LowerBand"); if maV[0] > 100 then plot5(maV[0],"MidLine");
프로필 이미지
러블리
2024-01-21
1039
글번호 175936
지표
답변완료

안녕하세요 수식문의 부탁드립니다^^

안녕하세요 언제나 친절한 답변에 감사드립니다.^^ 현재 아래 수식에서 20일 이평선 상승중인 수식과 (예를들면 이전이평선값보다 현재이평선값이 높을때) 1이평,20일,240일 세가지이평선의 이격률을 설정하고 싶은데요 (예를들면 1이평과 20이평과 이격도 20이평과 240이평이 이격도 이런식으로요) 그리고 기간내 100억원이상 거래대금이 터진캔들이 출현했을때 입니다 (예를들면 30일 이내에 거래대금이 100억원이 캔들이 발생했을경우 검색) 잘부탁드리겠습니다^^ input : 단기(20),중기(60),장기(120),Period(20); var : p(0),k(0),q(0),x(0),y(0),z(0),mav(0); p = (highest(high,단기)+lowest(low,단기))/2; k = (highest(high,중기)+lowest(low,중기))/2; q = (p+k)/2; x = (highest(high,장기)+lowest(low,장기))/2; y = (highest(high,장기)+lowest(low,장기))/2; z = (x+y)/2; var1 = (q-z)/q*100; mav = ma(c,Period); if var1 >= 0 and C >= mav Then find(1);
프로필 이미지
고래상어의꿈
2024-01-22
953
글번호 175935
종목검색
답변완료

문의드립니다

1. input : obLevel(70); input : osLevel(30); input : length(14); var : src(0),ep(0),auc(0),adc(0),x1(0),ub(0),x2(0),lb(0); src=close; ep = 2 * length - 1; auc = ema( max( src - src[1], 0 ), ep ); adc = ema( max( src[1] - src, 0 ), ep ); x1 = (length - 1) * ( adc * obLevel / (100-obLevel) - auc); ub = iff( x1 >= 0, src + x1, src + x1 * (100-obLevel)/obLevel ); x2 = (length - 1) * ( adc * osLevel / (100-osLevel) - auc); lb = iff( x2 >= 0, src + x2, src + x2 * (100-osLevel)/osLevel ); plot1(ub, "Resistance", red); plot2(lb, "Support", green); plot3(avg(ub, lb), "RSI Midline",gray); 2. Input : Period(9),sig(10); var : Relative(0),signal(0); Relative = RSI(Period); signal = ma(Relative,sig); Plot1(Relative, "RSI"); Plot2(signal, "시그널"); PlotBaseLine1(30, "기준선 30"); PlotBaseLine2(70, "기준선 70"); ...................................................................................................... 1. 첫번째 시스템식을 구하고자 합니다 상기 1번식에서 plot2의 그린색이 캔들과 만나고 (and로 연결) 2번식에서 rsi가 시그널선을 하향 돌파 했을때 두조건이 모두 충족 되었을때 매도 신호를 둘중 하나라도 이탈 되면 청산신호를 반대로 상기 1번식에서 plot1 레드선이 캔들과 만나고 2번식에서 rsi가 시그널선을 상향 돌파했을때 두조건이 모두 충족되었을때 매수 신호를 둘중 하나라도 이탈되면 청산신호를 해주세요 2. 두번째 이렇게 만들어진 시스템식을 바탕화면에 색깔로 입히고 싶습니다 (이건 지표로 구현해 주세요) 즉 매수신호때는 빨간색 바탕화면으로,매도신호때는 파란색 바탕화면으로 ...................................................................................................................................... 3. 주챠트 2분봉의 캔들이 2분봉 볼밴하단에 부딪힐때, 데이타2 10분봉 역시 10분봉의 볼밴 하단 수치에 부딪힌다면 그때 주챠트 2분봉 캔들에 검색식으로 빨간색 점을 찍어 주세요 (예를 들어 오전 10시에 주챠트 2분봉 캔들은 주챠트 2분봉 볼밴하단에 부딪히고, 데이타2 10분봉의 캔들이 10분봉 볼밴하단에 부딪히면, 주챠트 10시봉(2분봉)에 빨간색 점을 찍어 주세요) 만약 반대로 주챠트 2분봉의 캔들이 볼밴 상단에 부딪힐때 같은 시각 데이타2 10분봉도 10분봉의 볼밴 상단 수치에 부딪힌다면 그때 그 캔들에 검색식으로 파란색 점을 찍어 주세요 4. input : P1(7),P2(14),P3(21); var : R1(0),R2(0),R3(0),TX(0); R1 = RSI(P1); R2 = RSI(P2); R3 = RSI(P3); Plot1(R1, "RSI1"); Plot2(R2, "RSI2"); Plot3(R3, "RSI3"); PlotBaseLine1(30, "기준선 30"); PlotBaseLine2(50, "기준선 50"); PlotBaseLine3(70, "기준선 70"); PlotBaseLine4(40, "기준선 40"); PlotBaseLine5(60, "기준선 60"); Condition1 = R1 > R2 and R2 > R3; Condition2 = R1 < R2 and R2 < R3; if Condition1 == true and Condition1 != Condition1[1] Then { TX = Text_New_Self(sDate,sTime,R3,"▲"); Text_SetStyle(TX,2,0); Text_SetColor(TX,Red); } if Condition2 == true and Condition2 != Condition2[1] Then { TX = Text_New_Self(sDate,sTime,R3,"▼"); Text_SetStyle(TX,2,1); Text_SetColor(TX,Blue); } 상기 4번식을 plot1 rsi1이 기준선 60을 하향돌파하면 매도 신호를 plot1 rsi1이 기준선 40을 상향돌파하면 매수 신호를 나타내는 시스템으로 구현하고 싶습니다 한번에 여러개를 질문 드려 죄송합니다 감사합니다
프로필 이미지
zmfha
2024-01-23
1257
글번호 175934
지표
답변완료

[]와 () 설명 부탁드립니다

문의) 1. 어디에서 []를 쓰고 어디에서 ()쓰는지 2. ()쓰면 오류가 나는 이유 3. ()가 적용되지 않는 함수는 4. 오류없이 ()정상사용 시 0은 정상, 1은 엉뚱한 값으로 표시되는 이유
프로필 이미지
와글이
2024-01-21
979
글번호 175933
시스템