커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
1733
글번호 230811
지표
답변완료

추세선 관련해서 질문드립니다

매번 답변 주셔서 감사드립니다 추세선 관련 질문 3 가지가 있는데요, 1) 추세선을 작성하고 shift 이동이 가능한가요? 예를들면 5봉만큼 오른쪽으로 이동하는 식으로요 2) 추세선 만들기 공부를 하고 있는데 아래식이 어떤 조건을 나타내는건지 간단히 해석을 해주셨으면 감사하겠습니다 "현재봉 고가가 1봉전 고가 이하이고 h(1)이 h(2)보다 클때" 는 알겠는데 else 부터 추가 조건이 있나해서 여쭤봅니다.if문에서 t에 1을 대입하고 else에서는 t=0, t=2 로 나뉘는데 어떤 의미인지 궁금합니다. 그리고 else 부터는 if 조건의 역(?)조건을 의미라는건가요?? var : T(0),cnt(0),TL(0),HTL1(0),HTL2(0),LTL1(0),LTL2(0); var : hd(0),ht(0),hh(0),ld(0),lt(0),ll(0); Array : SHD[5](0),SHT[5](0),SHV[5](0); Array : SLD[5](0),SLT[5](0),SLV[5](0); var : SHL(0),SLH(0),S(0); if h <= h[1] && h[1] > h[2] then { hd = sDate[1]; ht = sTime[1]; hh = H[1]; SHL = L[1]; T = 1; } Else { if T == 1 and h > hh then T = 0; if T == 1 and L < SHL Then { T = 2; SHD[0] = hd; SHT[0] = ht; SHV[0] = hh; if SLV[0] > 0 Then { S = 1; if S[1] != 1 Then { TL = TL_New(SLD[0],SLT[0],SLV[0],SHD[0],SHT[0],SHV[0]); TL_SetColor(TL,Red); } Else TL_SetEnd(TL,SHD[0],SHT[0],SHV[0]); } } } // 저점은 반대 if T >= 0 and l >= l[1] && l[1] < l[2] then { ld = sDate[1]; lT = sTime[1]; ll = L[1]; SLH = H[1]; T = -1; } Else { if T == -1 and l < ll then T = 0; if T == -1 and h > SLH Then { T = -2; SLD[0] = ld; SLT[0] = lt; SLV[0] = ll; if SHV[0] > 0 Then { S = -1; if S[1] != -1 Then { TL = TL_New(SHD[0],SHT[0],SHV[0],SLD[0],SLT[0],SLV[0]); TL_SetColor(TL,Blue); } Else TL_SetEnd(TL,SLD[0],SLT[0],SLV[0]); } } } 3)추세선 작성 수식을 부탁드리겠습니다 1. n봉동안 2. h-l 의 길이가 4% 이상이고 전일 종가 대비 시가갭이 -3% 이상인 봉이 한개이상 있을때 3.그 기간동안 고점과 저점의 차이가 13% 이상 나면 nth 봉의 고점과 최근봉의 저점을 추세선으로 표시하고 "소요되는 봉의 갯수" (countif 를 쓰는건가요??~~) 를 구하고 싶습니다. (만약 5개 봉이 포착이 된다면 5번째 봉의 고점과 0번째 봉의 저점을 연결하는 추세선을 구하고 싶습니다) 감사합니다
프로필 이미지
yamu
2024-08-02
923
글번호 182184
지표
답변완료

거래량

늘 감사합니다. 아래의 조건으로 수식을 부탁합니다. 1. 10시 20분 이전에 진입금지. 2. 3시 10분 강제청산 3. 당일시가에서 35틱 상승후 거래량이 2500개 발생된 봉의 종가에서 +10틱 위에서 매도 신호 화살표(파란색) 익절 20틱, 손절 10틱 4. 당일시가에서 35틱 하락후 거래량이 2500개 발생된 봉의 종가에서 -10틱 아래에서 매수 신호 화살표(빨강색) 익절 20틱, 손절 10틱 감사합니다. **추가 5. 위의 조건일 data2에 수평선만 표시하는 수식 거듭 감사합니다.
프로필 이미지
상암동
2024-08-02
927
글번호 182183
시스템
답변완료

수식 문의 드립니다.

a= 저가의 10일치 평균선 a 선의 추세선을 나타내는 함수식을 구하고자 질문드립니다. a선을 다시 10일 평균내서 선을 구하고 그선을 10칸 왼쪽으로 옮겨그리면 a 선의 중심부를 관통하는 듯한 선이 그려지는데요 위 과정 없이 바로 a 선 의 변동폭을 줄여서 나타낼수있는 함수나 수식을 알고싶습니다. 도와주시면 감사하겠습니다.
프로필 이미지
므니엘
2024-08-02
1022
글번호 182182
사용자 함수

박셰프 님에 의해서 삭제되었습니다.

프로필 이미지
박셰프
2024-08-02
12
글번호 182181
종목검색
답변완료

수식 질문합니다.

안녕하세요. 조건 -1봉전 윗꼬리가 몸통의 300% 이상(음봉, 양봉, 도지 상관없음) -1봉전 거래량이 2봉전 거래량 대비 500% 이상 1. 위 조건을 만족하는 종목 2. 위 조건을 만족한 이후 윗꼬리의 중심선을 종가가 처음으로(중요!!) 돌파한 종목. 감사합니다.
프로필 이미지
트더
2024-08-02
1026
글번호 182180
종목검색
답변완료

수식 질문합니다.

안녕하세요. 조건 -1봉전 윗꼬리가 몸통의 200% 이상(음봉, 양봉 상관 없음) -1봉전 거래량이 2봉전 거래량보다 200% 이상 -1봉전 고가가 60봉 최고가(고가기준) -0봉전 시가 < 0봉전 종가(당일 양봉) -1봉전 고가 > 0봉전 고가 -0봉전 종가 > 1봉전 시가 -0봉전 종가 > 1봉전 종가 1. 위 조건을 만족하는 종목 2. 위 조건을 만족한 이후 1봉전 고가와 0봉전 종가의 중심선을 3분봉상 종가가 처음으로(중요!!) 돌파한 종목. (3분봉 종가 돌파 검색이 어려우면 일봉상으로) 감사합니다.
프로필 이미지
트더
2024-08-01
935
글번호 182179
종목검색
답변완료

지표 변환 부탁드립니다

매번 바쁘신데 감사드립니다. QQE MOD 지표인데 multi time frame 버전입니다. 차트주기와 타주기 모두 표현 가능하고, 그래프가 첨부사진 위와 아래처럼 두 가지 모습 모두 가능한지 궁금합니다. 트레이딩뷰 지표인데 예스랭귀지로 변환 가능한지 문의드립니다. indicator("SuperJump QQE MOD MTF", shorttitle = "Sjump QQE MOD MTF", timeframe="",timeframe_gaps =true) RSI_Period = input.int(6, title='RSI Length') SF = input.int(5, title='RSI Smoothing') QQE = input.int(3, title='Fast QQE Factor') ThreshHold = input.int(3, title="Threshold") src = input.source(close, title="RSI Source") QQELongColor = input.color(color.new(color.green,50), "QQE Long") QQEShortColor = input.color(color.new(color.red,50), "QQE Short") QQEWeakColor = input.color(color.new(color.gray,50), "QQE Weak") isFillBackGround = input.bool(false,"Fill BackGround for higherTimeFrame") GetQQEDefaultValue(_src, _rsi_period, _sf, _qqe) => _Wilders_Period = _rsi_period * 2 - 1 _RSI = ta.rsi(_src, _rsi_period) _RsiMa = ta.ema(_RSI, _sf) _AtrRsi = math.abs(_RsiMa[1] - _RsiMa) _MaAtrRsi = ta.ema(_AtrRsi, _Wilders_Period) _dar = ta.ema(_MaAtrRsi, _Wilders_Period) * _qqe [_Wilders_Period, _RSI, _RsiMa, _AtrRsi, _dar] [Wilders_Period, Rsi,RsiMa,AtrRsi,dar] = GetQQEDefaultValue(src, RSI_Period, SF, QQE) GetFastAtrRsiTL(_dar, _RsiMa)=> longband = 0.0 shortband = 0.0 trend = 0 DeltaFastAtrRsi = _dar RSIndex = _RsiMa newshortband = RSIndex + DeltaFastAtrRsi newlongband = RSIndex - DeltaFastAtrRsi longband := RSIndex[1] > longband[1] and RSIndex > longband[1] ? math.max(longband[1], newlongband) : newlongband shortband := RSIndex[1] < shortband[1] and RSIndex < shortband[1] ? math.min(shortband[1], newshortband) : newshortband cross_1 = ta.cross(longband[1], RSIndex) trend := ta.cross(RSIndex, shortband[1]) ? 1 : cross_1 ? -1 : nz(trend[1], 1) FastAtrRsiTL = trend == 1 ? longband : shortband FastAtrRsiTL = GetFastAtrRsiTL(dar, RsiMa) length = input.int(50, minval=1, title="Bollinger Length") mult = input.float(0.35, minval=0.001, maxval=5, step=0.1, title="BB Multiplier") basis = ta.sma(FastAtrRsiTL - 50, length) dev = mult * ta.stdev(FastAtrRsiTL - 50, length) upper = basis + dev lower = basis - dev Zero = hline(0, color=color.white, linestyle=hline.style_dotted, linewidth=1) //////////////////////////////////////////////////////////////// RSI_Period2 = input(6, title='RSI Length') SF2 = input(5, title='RSI Smoothing') QQE2 = input(1.61, title='Fast QQE2 Factor') ThresHold2 = input(3, title="Threshold") src2 = input(close, title="RSI Source") [Wilders_Period2, Rsi2,RsiMa2,AtrRsi2,dar2] = GetQQEDefaultValue(src2, RSI_Period2, SF2, QQE2) FastAtrRsi2TL = GetFastAtrRsiTL(dar2, RsiMa2) Greenbar1 = RsiMa2 - 50 > ThresHold2 Greenbar2 = RsiMa - 50 > upper Redbar1 = RsiMa2 - 50 < 0 - ThresHold2 Redbar2 = RsiMa - 50 < lower isLongTrend = Greenbar1 and Greenbar2 == 1 isShortTrend = Redbar1 and Redbar2 == 1 plot(isFillBackGround == false? FastAtrRsi2TL - 50:na , title='QQE Line', color=color.white, transp=0, linewidth=2) plot(isFillBackGround == false ? RsiMa2 - 50 :na , title="QQE Area", style=plot.style_area, color= isLongTrend ? QQELongColor : isShortTrend ? QQEShortColor : QQEWeakColor) isLongSignal = FastAtrRsi2TL - 50 >=0 and ta.crossunder(RsiMa2 - 50,FastAtrRsi2TL - 50) and isFillBackGround == false isShortSignal = FastAtrRsi2TL - 50 <0 and ta.crossover(RsiMa2 - 50,FastAtrRsi2TL - 50) and isFillBackGround == false 감사합니다!
프로필 이미지
트레트레
2024-08-01
1420
글번호 182178
지표
답변완료

plotpaintbar

plotpaintbar 에서 상단값,하단값은 표현안하고 좌측 우측 표시값만 나타내고 싶은데요 1번 2번 변수는 생략하려면 어떻게 해야하나요?~ plotpaintbar(상단값생략,하단값생략,o,c,"강조"); 그리고 직전 5개봉 이내에서 양음봉 무관하게 고가와 저가의 길이가 가장 긴봉을 paintbar로 나타내고 싶습니다 부탁드려요
프로필 이미지
yamu
2024-08-01
919
글번호 182177
강조
답변완료

타주기 관련해서 질문드립니다

안녕하세요 더운 날 수고가 많으십니다 타주기 관련해서 지난번에 몇 번 여쭤봤던 지표가 있는데 계속 생각과는 다르게 결과가 나와서 여쭤봅니다 일단 궁금한건, 타주기 수식을 작성하면 예를들어 타주기 120분 으로 했으면 그 주기 보다 낮은 배수의 주기에서는 다 사용할 수 있는건가요? 5,10,20,30,60 이런식으로요.타주기 설정보다 높은 주기에서는 안된다는거죠? 그리고 지난번에 여쭤봤던 수식인데요 검토를 해봐도 잘 안맞아서 한번 더 여쭤볼게요. 답변 해주실 때 혹시 검토를 해보고 답변 주시나요? 제가 뭘 잘못 적용했나해서요. 제가 원하는거는 1. 120분봉에서의 데이터를 낮은 주기에서 표현을 하는거고 2. 120분 봉의 체결건수 (ticks) 가 20000개 이하 일때와 50000개 이상일때 각각 나눠서, 30000개 이하면 그 봉의 최저가를 나타내고, 50000개 이상일 경우 최고가를 나타내는 수식입니다 다른 주기에서 확인을 해봤을때 값이 제대로 나오지 않아서 한번 더 여쭤봅니다 **그리고 20000개 이하일때는 5봉 동안의 최저가, 5만개 이상일때는 5봉 동안의 최고가를 나타내는 수식도 알려주실 수 있을까요?? 만약 2만개 이하인 봉을 기준으로 5봉간 최저가를 구할때 그 전봉중 기준에 안맞는거는 건너뛰고 계산하는 수식도 가능한가요? 말이 좀 어려워서 그림 하나 첨부 하겠습니다. 안된다면 그냥 5봉내의 최저가를 구하는 식을 알려주셔도 됩니다 여러번 번거롭지만 부탁드립니다 알려주신 수식: input : 타주기분(120); var : S1(0),D1(0),TM(0),TF(0),cnt(0); Array : TT[50](0),hh[50](0),ll[50](0);; if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or (Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then { #120분 단위 수직선 TL_New(sDate,sTime,0,sDate,sTime,999999999); #120분 단위 Ticks와 최고가 죄저가 for cnt = 49 downto 1 { TT[cnt] = TT[cnt-1]; HH[cnt] = HH[cnt-1]; LL[cnt] = LL[cnt-1]; } hh[0] = h; ll[0] = l; TT[0] = 0; } if h > hh[0] Then hh[0] = h; if L < ll[0] Then ll[0] = l; TT[0] = TT[0]+Ticks; if TT[1] > 20000 and TT[1] < 50000 then { var1 = hh[1]; Var2 = ll[1]; } if var1 > 0 and Var2 > 0 Then { plot1(var1); plot2(Var2); } }
프로필 이미지
yamu
2024-08-01
962
글번호 182176
지표