커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

부탁드립니다.

안녕하세요...MACD지표에서 오실레이타 당일고점 당일저점 라인이 데이타1 가격차트에서은 고점종가. 저점종가 그려지게요 (사진그림과같이요. 당일분만 그려지게요.) 수고하세요...꾸벅
프로필 이미지
보인다
2020-02-10
275
글번호 135757
지표
답변완료

문의드립니다

아래 수식이 잘못 되었다고 나오는데.. 어떻게 고쳐야 할지를 모르겠네요... 부탁드립니다 ======= Input:Period(12),Period1(5),레벨(4),선색깔(MAGENTA),선두께(3),수치표시여부(1),수치표시위치(10),폰트크기(13),두껍게(1); Var:StokValue(0),고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[3](0),Text[3](0); //=========================================================// If 레벨 <= 4 Then { Var1 = 레벨 * 10; StokValue = StochasticsK(Period,Period1); Value1 = IndicatorZigZag302(H,L,StokValue,50,고,저,최종상태,처리구분); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then { TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale), NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)"); Text_SetStyle(Text[2], 2, 1); Text_SetSize(Text[2],폰트크기); Text_SetBold(Text[2],두껍게); Text_SetColor(Text[2],RED); } } If 처리구분[레벨] == 연장 Then { TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text_SetLocation(Text[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale)); Text_SetString(Text[2],NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)"); } } If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text[1] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale), NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[2,Var1 + 1] - 저[1,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)"); Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale), NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)"); Text_SetStyle(Text[1], 2, 0); Text_SetStyle(Text[2], 2, 1); Text_SetSize(Text[1],폰트크기); Text_SetSize(Text[2],폰트크기); Text_SetBold(Text[1],두껍게); Text_SetBold(Text[2],두껍게); Text_SetColor(Text[1],BLUE); Text_SetColor(Text[2],RED); } } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1]); TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text[0] = Text_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1] + (수치표시위치 * PriceScale), NumToStr(고[2,Var1 + 1],2) + "(+" + NumToStr(고[2,Var1 + 1] - 저[2,Var1 + 1],2) + ", " + NumToStr((고[2,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)"); Text[1] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale), NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[2,Var1 + 1] - 저[1,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)"); Text[2] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale), NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/저[1,Var1 + 1],2) + "%)"); Text_SetStyle(Text[0], 2, 1); Text_SetStyle(Text[1], 2, 0); Text_SetStyle(Text[2], 2, 1); Text_SetSize(Text[0],폰트크기); Text_SetSize(Text[1],폰트크기); Text_SetSize(Text[2],폰트크기); Text_SetBold(Text[0],두껍게); Text_SetBold(Text[1],두껍게); Text_SetBold(Text[2],두껍게); Text_SetColor(Text[0],RED); Text_SetColor(Text[1],BLUE); Text_SetColor(Text[2],RED); } } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then { TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale), NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)"); Text_SetStyle(Text[2], 2, 0); Text_SetSize(Text[2],폰트크기); Text_SetBold(Text[2],두껍게); Text_SetColor(Text[2],BLUE); } } If 처리구분[레벨] == 연장 Then { TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text_SetLocation(Text[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale)); Text_SetString(Text[2],NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)"); } } If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text[1] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale), NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[2,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)"); Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale), NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)"); Text_SetStyle(Text[1], 2, 1); Text_SetStyle(Text[2], 2, 0); Text_SetSize(Text[1],폰트크기); Text_SetSize(Text[2],폰트크기); Text_SetBold(Text[1],두껍게); Text_SetBold(Text[2],두껍게); Text_SetColor(Text[1],RED); Text_SetColor(Text[2],BLUE); } } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1],저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1]); TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 수치표시여부 == 1 Then { Text[0] = Text_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1] - (수치표시위치 * PriceScale), NumToStr(저[2,Var1 + 1],2) + "(-" + NumToStr(고[2,Var1 + 1] - 저[2,Var1 + 1],2) + ", " + NumToStr((고[2,Var1 + 1] - 저[2,Var1 + 1])*100/고[2,Var1 + 1],2) + "%)"); Text[1] = Text_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1] + (수치표시위치 * PriceScale), NumToStr(고[1,Var1 + 1],2) + "(+" + NumToStr(고[1,Var1 + 1] - 저[2,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[2,Var1 + 1])*100/저[2,Var1 + 1],2) + "%)"); Text[2] = Text_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1] - (수치표시위치 * PriceScale), NumToStr(저[1,Var1 + 1],2) + "(-" + NumToStr(고[1,Var1 + 1] - 저[1,Var1 + 1],2) + ", " + NumToStr((고[1,Var1 + 1] - 저[1,Var1 + 1])*100/고[1,Var1 + 1],2) + "%)"); Text_SetStyle(Text[0], 2, 0); Text_SetStyle(Text[1], 2, 1); Text_SetStyle(Text[2], 2, 0); Text_SetSize(Text[0],폰트크기); Text_SetSize(Text[1],폰트크기); Text_SetSize(Text[2],폰트크기); Text_SetBold(Text[0],두껍게); Text_SetBold(Text[1],두껍게); Text_SetBold(Text[2],두껍게); Text_SetColor(Text[0],BLUE); Text_SetColor(Text[1],RED); Text_SetColor(Text[2],BLUE); } } } TL_SetColor(TL[0],선색깔); TL_SetSize(TL[0],선두께); TL_SetColor(TL[1],선색깔); TL_SetSize(TL[1],선두께); TL_SetColor(TL[2],선색깔); TL_SetSize(TL[2],선두께); } Else { Alert("4레벨까지만 가능합니다!!"); }
프로필 이미지
삼족오
2020-02-09
254
글번호 135756
지표
답변완료

안녕하세요

input : Period(10); var1 = PVI+NVI; var2 = ma(PVI,period)+ma(NVI,period); if var1 > var2 Then { plot1(999999999,"라인1"); plot2(0,"라인2"); } else { plot1(0,"라인1"); plot2(999999999,"라인2"); } 위 강세약세 수식을 시스템식으로 부탁 드리겠습니다.
프로필 이미지
뚜벅뚜벅
2020-02-09
244
글번호 135755
시스템
답변완료

문의 드립니다

사진에 나오는 보조지표는 스토케스틱 오실레이터 5 20 5 설정한 것입니다. 오실레이터가 0선 위로 첫 돌파하면 매수 진입 오실레이터가 한칸씩 상승하다 한칸 하락 마감 시 매도 청산완료 오실레이터가 0선 아래로 첫 돌파하면 매도 진입 오실레이터가 한칸씩 하락하다 한칸 상승 마감 시 매수 청산완료 부탁드립니다.
프로필 이미지
선물대장
2020-02-09
350
글번호 135754
시스템
답변완료

수식문의합니다.

매수포지션: 무포지션이나 매도포지션에서 현재봉기준으로 과거봉에서 시가 >= 종가 +5틱 조건를 만족하는 조건만족 음봉을 2개 구합니다. 현재봉에서 최근접 음봉 종가 < 현재봉에서 2번째 근접 음봉 종가 이렇게 구한 음봉 중에 매수준비가 = 현재봉에서 2번째 근접 음봉 시가 를 구합니다. 위와 같은 매수준비가가 형성된 후에 종가가 매수준비가를 상방으로 돌파하면 매수합니다. 매수청산 방법: 매수후 누적으로 음봉이 2개 발생하면 청산합니다. 매도포지션: 무포지션이나 매수포지션에서 현재봉기준으로 과거봉에서 종가 >= 시가 +5틱 조건를 만족하는 조건만족 양봉을 2개 구합니다. 현재봉에서 최근접 양봉 종가 > 현재봉에서 2번째 근접 양봉 종가 이렇게 구한 양봉 중에 매도준비가 = 현재봉에서 2번째 근접 양봉 시가 를 구합니다. 위와 같은 매도준비가가 형성된 후에 종가가 매도준비가를 하방으로 돌파하면 매도합니다. 매도청산 방법: 매도후 누적으로 양봉이 2개 발생하면 청산합니다.
프로필 이미지
종호
2020-02-09
262
글번호 135753
시스템
답변완료

지표식 부타드립니다.

항상 도움 주셔서 감사합니다. 아래 지표식 부탁드립니다. 종목 : 해선 타임 : 100틱 지표식1 : 아침 8시 시작시간부터 오후 16시까지 고가를 16시 이후 차트에 고가를 표시 - 익일 다시 초기화 아침 8시 시작시간부터 오후 16시까지 저가를 표시 16시 이후 차트에 저가를 표시 - 익일 다시 초기화 지표식2 : 아침 8시 시작시간부터 오후 10시까지 고가를 10시 이후 차트에 고가를 표시 - 익일 다시 초기화 아침 8시 시작시간부터 오후 10시까지 저가를 표시 10시 이후 차트에 저가를 표시 - 익일 다시 초기화 종목 : 해선 차트 : 100틱 차트 시스템식1 : 해선 매매를 오전 10시부터 오후 밤 23시까지만 매매를 하고싶습니다. 아래와 같이 코딩했는데 실매매는 24시 이후부터 매매가 됩니다. if sTime >= 100000 and stime <= 230000 then { 진입조건시 } 시스템식2 : 해선 매매를 아침 24시부터 아침 06시까지만 매매를 하려면 if sTime >= 000000 and stime <= 060000 then { 진입조건시 } 이런식으로 하면 되나요? 시스템식3 : 해선 매매를 오전 10시부터 다음날 아침 06시까지만 매매를 하려면 if sTime >= 100000 or stime <= 060000 then { 진입조건시 } 이런식으로 하면 되나요? 추가 문의 : 틱차트에서 아침 6시에 포지션 청산하고자 하면 SetStopEndofday(060000); 이런식으로 코딩해도 청산이 되죠? 도움 부탁드립니다. 감사합니다. 감사합니다.
프로필 이미지
양치기
2020-02-09
261
글번호 135752
지표

삼족오 님에 의해서 삭제되었습니다.

프로필 이미지
삼족오
2020-02-09
0
글번호 135751
지표
답변완료

부탁 드립니다.

도움에 감사 드립니다. 다음수식에서 1)전일 첫봉부터 현재까지의 평균이 아닌 예를 들어 3일전 첫봉부터 현재까지의 평균으로 계산이 되도록 부탁 드립니다. 2)마지막 쯤 행의 var21의 지표값이 매일 해선시작시간(080000)에 zero로 출발하도록 부탁 드립니다. input : N(60),P(5),sig(5); Array : sumo[60](0),sumh[60](0),suml[60](0),sumc[60](0),sumi[60](0); var : accumo(0),accumh(0),accuml(0),accumc(0),accumi(0); var : avgo(0),avgh(0),avgl(0),avgc(0); var : s1(0),d1(0),tm(0),tf(0),cnt(0); if bdate != Bdate[1] Then{ sumc[0] = 0; sumi[0] = 0; for cnt = 1 to 9{ sumc[cnt] = sumc[cnt-1][1]; sumi[cnt] = sumi[cnt-1][1]; } S1 = TimeToMinutes(stime); D1 = sdate; } sumc[0] = sumc[0]+c; sumi[0] = sumi[0]+1; #전일 첫봉부터 현재까지 평균 accumc = 0; accumi = 0; for cnt = 0 to 9{ accumc = accumc+sumc[cnt]; accumi = accumi+sumi[cnt]; } avgc = accumc/accumi; if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%N; if bdate != bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{ var4 = avgc; } var11=ema(c,P); var21=ema((var11-var4),sig); } PLOT1(VAR21); PlotBaseLine1(0);
프로필 이미지
뮬리
2020-02-10
270
글번호 135750
지표
답변완료

시간관련 질문입니다.

안녕하세요 100분봉을 사용하고 있고 몇일에 한번 매수매도신호가 나오는데 일일15시45분에 장이 종료되지만 날짜가 바뀔때 당일 16시 20분등 종료시간이 지나서 신호가 완성되어 주문이 당일에 체결되지 않고 다음날 시작가에 체결됩니다. 신호가 봉 완성시점에 나가서 그러겠지만 당일 장종료시간 전이나 15시 30분에(당일 장시간내) 주문 신호가 나오게 하려면 어떻게 해야 하나요? (예시)예스래귀지입니다. Input : shortPeriod(5), longPeriod(20); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); if stime >= 90000 and stime < 153000 then { # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); } }
프로필 이미지
팡팡
2020-02-09
276
글번호 135749
지표