커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

종목검색식 문의 드립니다.

먼저 일일이 답변 주심에 감사드립니다. 아래검색식을 제가 작성함에 있어 논리적으로 착각하거나 문제가 있는 것 같습니다. 그림과 같이 18.3.14일 장후에 기준봉을 1로 잡고 검색하면서 기준일 양봉( C > O )이라 설정하였는데 두산엔진 같은 경우 3.13일 음봉임에도 불구하고 검색되었습니다. 제가 생각 하기로 기준봉을 1로 잡으면 3.13일을 기준으로 검색되는 것으로 생각했는데 제가 착각하는지 무엇지 잘못인지 모르겠습니다. 1. 앞에 내용에서 제가 잘 못 생각한점이 있다면 알려 주시기 바라며 2. 식 뒷 부분(if CountIF(Condition1 == true, 검색기간) >= 검색회수 Then)에서 검색기간을 변경해도 검색되는 종목은 변함이 없는 것 같습니다. 3. 그리고 저의 의도되로 식을 수정해 주시면 고맙겠습니다 input : pe(20),per(20),이격1(90),이격2(110),거래량(1.4),몸통저(0.01),몸통대(100),검색기간(60),검색회수(1),N(10),n회(2); var: Body(0),Highbody(0),Lowbody(0),value(0); Body = Abs(c-o); Highbody = MaxList(Open,Close); Lowbody =MinList(Open,Close); var1= Disparity(60); var2=ma(c,5); var3=ma(c,10); var4=ma(c,20); var5=ma(c,33); var6=ma(c,60); var7=ma(c,120); var8=ma(v,60); value2 = max(var2,var3,var4,var5,var6); value3 = min(var2,var3,var4,var5,var6); Value1 =0; if CrossUp(c, var2) Then Value1 = Value1 + 1; if CrossUp(c, var3) Then Value1 = Value1 + 1; if CrossUp(c, var4) Then Value1 = Value1 + 1; if CrossUp(c, var5) Then Value1 = Value1 + 1; if CrossUp(c, var7) Then Value1 = Value1 + 1; if var1[1] >= 이격1 and var1[1] <= 이격2 and c > var2 and Value1 >= 1 and body >= C[1] *몸통저 and body <= C[1]*몸통대 and H-Highbody >= body *0.0 and H-Highbody <= body * 5 and Lowbody-L >= body *0.0 and Lowbody-L <= body * 5 and C > O and V >= V[1]*거래량 and var7[1] * (1+pe/100000) > var7[2] and CountIF(Value2 <= Value3 * (1+ per/100),N) >= N회 Then Condition1 =true ; Else Condition1 =False ; if CountIF(Condition1 == true, 검색기간) >= 검색회수 Then find(1);
프로필 이미지
자아준
2018-03-14
198
글번호 117396
종목검색
답변완료

수식 문의 드립니다.

5일전 기준으로, 30일 평균 거래량의 10배가 넘는 거래량을 가진 종목을 검색해보고자 합니다. 아래와 같이 작성했는데, 종목이 전혀 검색이 되지 않습니다. Vars : DayAvrg(0); DayAvrg = ma(V,30)[1]; If V[5] >= DayAvrg*10 Then Find(DayAvrg); 도움 부탁드립니다.
프로필 이미지
ywesry
2018-03-14
156
글번호 117395
지표

st002340 님에 의해서 삭제되었습니다.

프로필 이미지
st002340
2018-03-14
6
글번호 117392
사용자 함수
답변완료

수식 부탁드립니다.

* 현재 예수금(D+0) 이 1,000만원 있습니다. 모두 2 종목을 매매하려고 합니다. 1) a 종목을 매수하기 전에 얼마까지 주문을 낼 수 있는지 잔액을 확인하고 오늘 a종목을 매수 & 매도하여 100만원 이익을 냈습니다. (D+2 : 1,100만원) 2) 이후에 오늘 b종목을 다시 매수하려고 하는데 1,100만원을 기준으로 수량을 정하고 싶습니다. 어떻게 처리하면 되는지 부탁드립니다. 늘 도움을 주셔서 고맙습니다.
프로필 이미지
영화사랑
2018-03-14
154
글번호 117391
시스템
답변완료

수식부탁합니다

수고에 매번 깊이 감사드립니다. 아래의 수식을 분봉1분봉에서 검색식으로 전환부탁합니다. 외부입력 변수가 부족하다고 메세지가 나와서 안되네요. 부탁드립니다. 감사합니다. 조건은 DPlus > DMinus 입니다. input : Length(14); var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0); Var : Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0); Var : CummDMI(0), Return(0); Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0),ADXv[61](0); if bdate != bdate[1] Then{ Dcnt = Dcnt+1; HH[0] = H; LL[0] = L; CC[0] = C; preTRange = TRange[1]; prePlusDM14 = PlusDM14[1]; preMinusDM14 = MinusDM14[1]; for cnt = 1 to 60{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; TR[cnt] = TR[cnt-1][1]; DMIv[cnt] = DMIv[cnt-1][1]; ADXv[cnt] = ADXv[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if CC[1] > 0 Then{ If CC[1] > HH[0] then TH = CC[1]; else TH = HH[0]; If CC[1] < LL[0] then TL = CC[1]; else TL = LL[0]; TR[0] = TH-TL; } If Dcnt == Length+1 Then { MyRange = Length; DPlus = 0; PlusDM14 = 0; TRange = 0; DMinus = 0; MinusDM14 = 0; TRange1 = 0; For Counter = 0 To MyRange - 1 { If HH[Counter] - HH[Counter+1] < 0 Then PlusDM = 0 ; Else PlusDM = HH[Counter] - HH[Counter+1]; If LL[Counter+1] - LL[Counter] < 0 Then MinusDM = 0; Else MinusDM = LL[Counter+1] - LL[Counter]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0; TRange = TRange + TR[Counter]; PlusDM14 = PlusDM14 + PlusDM; MinusDM14 = MinusDM14 + MinusDM; } If TRange <> 0 Then DPlus = 100 * PlusDM14 / TRange; Else DPlus = 0 ; If TRange <> 0 Then DMinus = 100 * MinusDM14 / TRange; Else DMinus = 0; If Dplus + Dminus == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus); } Else If Dcnt > Length+1 Then { If HH[0] - HH[1] < 0 Then PlusDM = 0; Else PlusDM = HH[0] - HH[1]; If LL[1] - LL[0] < 0 Then MinusDM = 0; Else MinusDM = LL[1] - LL[0]; If MinusDM >= PlusDM Then PlusDM = 0; If PlusDM >= MinusDM Then MinusDM = 0 ; If MyRange > 0 Then { TRange = preTRange - (preTRange / MyRange) + TR[0]; PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM; MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM; } If TRange <> 0 Then DPlus = 100 * PlusDM14 / TRange; Else DPlus = 0 ; If TRange <> 0 Then DMinus = 100 * MinusDM14 / TRange; Else DMinus = 0; If Dplus + Dminus == 0 Then DMIv[0] = 0; Else DMIv[0] = 100 * AbsValue(Dplus - Dminus) / (Dplus + Dminus); } If DMIV[Length] == 0 Then{ CummDMI = 0; for Counter = 0 To Length-1 Begin if DMiV[counter] > 0 Then CummDMI = CummDMI + DMIV[Counter]; End; ADXv[0] = CummDMI / CurrentBar; } Else ADXv[0] = (ADXv[1] * (Length - 1) + DMIv[0]) / Length; plot1(ADXv[0]); plot2(DPlus); plot3(DMinus); PlotBaseLine1(25,"매수세력선"); PlotBaseLine2(20,"기준선"); PlotBaseLine3(15,"매도세력선");
프로필 이미지
천년대로
2018-03-14
202
글번호 117388
종목검색
답변완료

부탁드립니다

시스템 수식 부탁드립니다 매수조건 ㅡ 1. 지난 60일동안 최고점 돌파시 종가진입(계좌 잔고의 50%만 매수) 2. 지난 90일동안 최고점 돌파시 나머지 50% 종가진입. 매수조건은 순서와 관계없이 진입신호발생시 매수하되(동시 진입신호발생시 동시 진입) 진입후 -10% 발생시 손절할것 매도조건 ㅡ 매수조건 1번 2번 각각 진입후 각각 수익이 30%이상 나기를 기다리다가 그 수익이 최고치대비 절반이상 감소했을때 청산.
프로필 이미지
야구르트
2018-03-15
166
글번호 117384
시스템
답변완료

문의드립니다.

매번 감사합니다. 1. 코딩 변환 부탁드립니다. Indicator: DIX inputs: Price( Close ), DIXLength( 20 ), UpColor( Cyan ), { Color to use for indicator values that are relatively high, over ColorNormLength bars. } DnColor( Red ), { Color to use for indicator values that are relatively low over ColorNormLength bars. } ColorNormLength( 20 ), { Number of bars over which to normalize the indicator for gradient coloring. See also: comments in function NormGradientColor. } GridForegroundColor( Black ), { Color to use for numbers in RadarScreen cells when gradient coloring is enabled, that is, when both UpColor and DnColor are set to non-negative values. } GridLevel( 10 ) ; { Level at which to plot a horizontal line in chart. Horizontal lines will be plotted at both positive and negative values of this number. } { Set either UpColor and/or DnColor to -1 to disable gradient plot coloring. When disabled, Plot1 color is determined by settings in indicator properties dialog box. Colors of plots 2, 3, and 4 always come from indicator properties dialog box. } variables: ApplicationType( 0 ), DIX( 0 ), ColorLevel( 0 ) ; if CurrentBar = 1 then ApplicationType = GetAppInfo( aiApplicationType ) ; if Price <> 0 then DIX = 100 * ( Price - XAverage( Price, DIXLength ) ) / Price ; Plot1( DIX, “DIX” ) ; Plot2( 0, “ZeroLine” ) ; Plot3( GridLevel, “GridLevel” ) ; Plot4( -1 * GridLevel, “-GridLevel” ) ; { Gradient coloring } if UpColor >= 0 and DnColor >= 0 then begin ColorLevel = NormGradientColor( DIX, true, ColorNormLength, UpColor, DnColor ) ; if ApplicationType = 1 then { study is applied to a chart } SetPlotColor( 1, ColorLevel ) else if ApplicationType > 1 then { study is applied to grid app, like RadarScreen } begin SetPlotColor( 1, GridForegroundColor ) ; SetPlotBGColor( 1, ColorLevel ) ; end ; end ; { Alert criteria - alert if DIX is at its highest or lowest value over DIXLength bars } if HighestBar( DIX, DIXLength ) = 0 then Alert( “DIX is high” ) else if LowestBar( DIX, DIXLength ) = 0 then Alert( “DIX is low” ) ;
프로필 이미지
잡다백수
2018-03-14
261
글번호 117383
시스템
답변완료

안녕하세요

분봉에서 현재봉부터(1봉전이 맞나요) 20봉전의 고가(꼬리제외) 와 저가(꼬리제외)를 수평으로 연속 나타낼수 있도록 부탁 드립니다. 감사합니다.
프로필 이미지
사냥꾼
2018-03-14
161
글번호 117382
지표
답변완료

문의 드립니다.

볼린져 밴드의 상하단 값을 나오게 하겁니다. 전일 지수로 쭉 나오게 하는 식인데요.. 이걸 직전에 형성된 볼린져 밴드의 고점 저점으로 맞추고 싶습니다. 전일 고저점 저점 수식은 아래에 있는건데요.. 이걸 직전에 형성된 볼린져 밴드의 고점 저점이 나오는 수식으로 부탁드립니다. Input : Period(20), MultiD(2); var : bbmd(0),BBup(0),BBdn(0); var : bbmd1(0),BBup1(0),BBdn1(0); BBmd = ema(C,Period); BBup = BollBandUp(Period,MultiD); BBdn = BollBandDown(Period,MultiD); if Bdate != Bdate[1] Then{ BBmd1 = BBmd[1]; BBup1 = BBup[1]; BBdn1 = BBdn[1]; } Plot1(bbmd1, "전일마지막중단값"); --------->직전 마지막 중단값으로 Plot2(BBup1, "전일마지막상단값"); --------->직전 마지막 상단값으로 Plot3(BBdn1, "전일마지막하단값"); --------->직전 마지막 하단값으로
프로필 이미지
칼리브
2018-03-14
166
글번호 117376
지표