커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

최근 도움받은 내용에서 추가 질문이 두가지 있습니다.

항상 수고 많으십니다. 최근 가이드 받아 진행한 코딩에서 추가 질문사항이 발생하여 도움을 요청드립니다. ----------------------- 1. 질문/답변내용 [질문] 20일선 하향이탈 100건을 배열에 담는다. 배열을 뒤져서 현재봉의 종가 또는 시가와 가장 근접한 봉의 위쪽, 봉의 아래쪽 값 두개를 찾아서 Plot으로 그려준다. *** 추가 질문사항 -> Y축을 뒤집었을 때에도 Plot을 똑바로 뒤집을 수 있는 방법 : 예전에 비슷한 질문을 드렸을 때 일일시가 기준으로 뒤집었는데 이번 케이스에는 아닌것같고 해서 질문을 드립니다. ㅡㅡ;;; [답변] 안녕하세요 예스스탁입니다. Input: 일선1(5), 일선2(20); Var: 종가변곡점2(0),Cnt(0), Cnt1(0), Cnt2(0), 상위값(0), 하위값(0),HH(0),LL(0); Array: 변곡발생[100](0), upv[100](0),dnv[100](0); var1 = ma(c,일선2); // 100개의 20일선 하향이탈을 기록한다. If (CrossDown(C, var1)) Then { 변곡발생[0] = (O + C) / 2; For Cnt = 1 To 99 { 변곡발생[Cnt] = 변곡발생[Cnt -1][1]; } } for cnt = 0 to 99{ if 변곡발생[cnt] >= C Then upv[cnt] = 변곡발생[cnt]; Else upv[cnt] = 99999999; if 변곡발생[cnt] <= C Then dnv[cnt] = 변곡발생[cnt]; Else dnv[cnt] = 0; } HH = 99999999; LL = 0; for cnt = 0 to 99{ if upv[cnt] < HH Then HH = upv[cnt]; if dnv[cnt] > LL Then LL = dnv[cnt]; } plot1(HH); plot2(LL); 즐거운 하루되세요 2. 특정조건에서 진입금지를 설정하고자 하는데 ex. 일일저가와 일일고가의 차이가 100% 이상인 경우 진입금지 하지만 전일 종가에서 시초가가 100% 상승해서 시작하는 경우 이 경우에만 예외를 설정해서 쭉가게 하는 법입니다. 감사합니다. 행복한 하루되십시오~!!!
프로필 이미지
가락국수
2015-06-26
132
글번호 87703
지표
답변완료

변환부탁드립니다.

키움수식입니다. 라인설절은 막대로하고, 캔들과 같이 공유해서 보고있는 지표입니다. 부탁드립니다. 기본함수식 함수명 : BBandsC(Period,D1) avg((C+H+L)/3,Period) 지표조건 : Period:4 K : 3 수식1 A=(OPEN+HIGH+LOW+CLOSE)/4; B=(OPEN(K)+CLOSE(K))/2; AVG(A,PERIOD) 수식2 AVG(B,PERIOD) 수식3 AA=AVG(A,PERIOD); BB=AVG(B,PERIOD); MIN(A,B)
프로필 이미지
해와달
2015-06-26
158
글번호 87702
지표
답변완료

강조 문의

캔들에 밑꼬리가 없을때나.. 밑꼬리가 같을때 강조식 문의 드립니다.
프로필 이미지
와라바다
2015-06-26
203
글번호 87701
강조

큰별가족 님에 의해서 삭제되었습니다.

프로필 이미지
큰별가족
2015-06-26
0
글번호 87700
지표
답변완료

키움에서 제공되는 S-ROC 지표를 부탁드립니다.

안녕하세요. 키움에서 제공되어지는 S-ROC 지표를 부탁드립니다.
프로필 이미지
큰별가족
2015-06-26
226
글번호 87699
지표
답변완료

부탁드립니다

var:count(0),cnt(0); If stime==090000 Then{ count=0; } for cnt = 0 to 20{ If var83>3 and ((var79[1]==var81[1] and var79>var81) or (var79[1]==var82[1] and var79<var82)) Then{ count=count+1; } } 위에 표시한 것에서 무엇이 잘못된 것인지 작동이 안 됩니다. 부탁드립니다.
프로필 이미지
묘선낭자
2015-06-26
116
글번호 87698
시스템
답변완료

문의 드립니다.

1분봉의 차트에서 3분봉의 지표를 보고 싶습니다. 예를 들어 1분봉 차트에서 3분봉의 RSI를 나타 내고 싶습니다. 미리 감사 드립니다.
프로필 이미지
yes
2015-06-26
139
글번호 87697
지표
답변완료

함수요청

아래의 함수를 해당종목의 특정가격, 즉 200pt이상 300pt이하일때만 프로그램을 돌리고 싶습니다. var : entry1(0); var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : EntryCnt1(0); var : V1(0),V2(0),V3(0),V4(0),V5(0); var : V6(0),V7(0),V8(0),V9(0),V10(0); if bdate != bdate[1] Then entry1 = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = Dayhigh-Dayopen; OL1 = DayOpen-DayLow; HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; V1 = dayopen(0)+maho1; V2 = DayOpen(0)-maOL1; V3 = DayOpen(0)+maHL1; V4 = DayOpen(0)-maHL1; V5 = NthMaxList(1,V1,V2,V3,V4); V6 = NthMaxList(2,V1,V2,V3,V4); V9 = NthMaxList(3,V1,V2,V3,V4); V10 = NthMaxList(4,V1,V2,V3,V4); V7 = (V5+V10)/2; V8 = (V6+V9)/2; if MarketPosition == 0 and entry1 == 0 Then{ if V7 > V8 Then sell("s1",AtStop,V7); if V7 < V8 Then sell("s2",Atlimit,V8); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ ExitShort("sp1",atlimit,V9); ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ ExitShort("sp2",atlimit,V9); ExitShort("sl2",AtStop,V6); } var : TF(0); var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0); var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0); Array : HH[50](0),LL[50](0),CC[50](0); mav1 = ma(c,5); mav2 = ma(C,20); TF = TimeToMinutes(stime)%30; if Bdate != Bdate[1] Then{ Etime = true; if stime >= 090000 Then Xtime = 050000; Else Xtime = 060000; } if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 49{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if HH[25+2] > 0 Then{ HV = HH[0]; LV = LL[0]; HV1 = HH[1]; LV1 = LL[1]; HV2 = HH[2]; LV2 = LL[2]; for cnt = 0 to 25{ if HH[cnt] > HV Then HV = HH[cnt]; if LL[cnt] < LV Then LV = LL[cnt]; if HH[cnt+1] > HV Then HV = HH[cnt+1]; if LL[cnt+1] < LV Then LV = LL[cnt+1]; if HH[cnt+2] > HV Then HV = HH[cnt+2]; if LL[cnt+2] < LV Then LV = LL[cnt+2]; } var1 = (HV+LV)/2; var2 = (HV1+LV1)/2; var3 = (HV2+LV2)/2; if Etime == true then{ if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then buy("b",AtMarket); if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then ExitLong("bx",AtMarket); } } if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{ Etime = false; ExitLong(); } SetStopLoss(0.8,PercentStop); SetStopProfittarget(3,PercentStop); SetStopInactivity(3,23,PercentStop);
프로필 이미지
통큰베팅
2015-06-26
132
글번호 87696
시스템
답변완료

시스템을 지표로

아래의 함수를 지표신호로 표현하고 싶습니다. var : entry1(0); var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : EntryCnt1(0); var : V1(0),V2(0),V3(0),V4(0),V5(0); var : V6(0),V7(0),V8(0),V9(0),V10(0); if bdate != bdate[1] Then entry1 = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = Dayhigh-Dayopen; OL1 = DayOpen-DayLow; HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; V1 = dayopen(0)+maho1; V2 = DayOpen(0)-maOL1; V3 = DayOpen(0)+maHL1; V4 = DayOpen(0)-maHL1; V5 = NthMaxList(1,V1,V2,V3,V4); V6 = NthMaxList(2,V1,V2,V3,V4); V9 = NthMaxList(3,V1,V2,V3,V4); V10 = NthMaxList(4,V1,V2,V3,V4); V7 = (V5+V10)/2; V8 = (V6+V9)/2; if MarketPosition == 0 and entry1 == 0 Then{ if V7 > V8 Then sell("s1",AtStop,V7); if V7 < V8 Then sell("s2",Atlimit,V8); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ ExitShort("sp1",atlimit,V9); ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ ExitShort("sp2",atlimit,V9); ExitShort("sl2",AtStop,V6); } var : TF(0); var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0); var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0); Array : HH[50](0),LL[50](0),CC[50](0); mav1 = ma(c,5); mav2 = ma(C,20); TF = TimeToMinutes(stime)%30; if Bdate != Bdate[1] Then{ Etime = true; if stime >= 090000 Then Xtime = 050000; Else Xtime = 060000; } if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 49{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if HH[25+2] > 0 Then{ HV = HH[0]; LV = LL[0]; HV1 = HH[1]; LV1 = LL[1]; HV2 = HH[2]; LV2 = LL[2]; for cnt = 0 to 25{ if HH[cnt] > HV Then HV = HH[cnt]; if LL[cnt] < LV Then LV = LL[cnt]; if HH[cnt+1] > HV Then HV = HH[cnt+1]; if LL[cnt+1] < LV Then LV = LL[cnt+1]; if HH[cnt+2] > HV Then HV = HH[cnt+2]; if LL[cnt+2] < LV Then LV = LL[cnt+2]; } var1 = (HV+LV)/2; var2 = (HV1+LV1)/2; var3 = (HV2+LV2)/2; if Etime == true then{ if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then buy("b",AtMarket); if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then ExitLong("bx",AtMarket); } } if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{ Etime = false; ExitLong(); } SetStopLoss(0.8,PercentStop); SetStopProfittarget(3,PercentStop); SetStopInactivity(3,23,PercentStop);
프로필 이미지
통큰베팅
2015-06-26
148
글번호 87695
지표