커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

오류 수정 요청

엘리어트 파동을 계산한 것인데 "수식에서 참조할 첫번째 종목데이터가 없습니다." 가 계속 뜨는데 어떻게 해야 되지요? 답신 부탁합니다. Input:상승률(7.2), //지그재그 파동의 상승률 하락률(11.9), //지그재그 파동의 하락률 참조종목(2); //2 이상이면 참조종목의 파동을 이용 Var:CC(0),j(0),k(0), 추세(0),상승(100),하락(-100), 전고점(1),전저점(2),연속고(3),연속저(4), 기준고(0),기준저(0), 변곡점(0), 파동번호(0), 파동1번고점(0),파동1번저점(0), 파동3번고점(0),파동3번저점(0), 파동5번고점(0),파동5번저점(0), 파동연장(0), 파동변화(0); Array:고[10](0),저[10](0); #==============================================================================# # 초기처리 (Initialize Routine) #==============================================================================# if 참조종목 == 1 then CC = data1(C); else CC = data2(C); 변곡점 = 0; //매번 0값으로 초기화 #=========================================================# # ZIGZAG 파동 계산 #=========================================================# if 기준고 <= CC or 기준고 == 0 or IsNaN(기준고) == true then 기준고 = CC; if 기준저 >= CC or 기준저 == 0 or IsNaN(기준저) == true then 기준저 = CC; if 기준저[1] * (1 + (상승률/100)) > CC[1] and 기준저[1] * (1 + (상승률/100)) <= CC then 추세 = 상승; else if 기준고[1] * (1 - (하락률/100)) < CC[1] and 기준고[1] * (1 - (하락률/100)) >= CC then 추세 = 하락; if 추세[1] == 상승 and 추세 == 하락 then { for j = 8 downto 1 { 고[j+1] = 고[j]; } 고[1] = 기준고; 기준고 = CC; 기준저 = CC; 변곡점 = 전고점; } else if 추세[1] == 하락 and 추세 == 상승 then { for j = 8 downto 1 { 저[j+1] = 저[j]; } 저[1] = 기준저; 기준저 = CC; 기준고 = CC; 변곡점 = 전저점; } else if 추세[1] == 하락 and 추세 == 하락 then { if 기준고[1] * (1 - (하락률/100)) <= CC[1] and 기준고[1] * (1 - (하락률/100)) > CC and 고[1] < 기준고 then { 고[1] = 기준고; 기준고 = CC; 변곡점 = 연속고; } } else if 추세[1] == 상승 and 추세 == 상승 then { if 기준저[1] * (1 + (상승률/100)) >= CC[1] and 기준저[1] * (1 + (상승률/100)) < CC and 저[1] > 기준저 then { 저[1] = 기준저; 기준저 = CC; 변곡점 = 연속저; } } #=========================================================# # 하락전환 #=========================================================# if 변곡점 == 전고점 or 변곡점 == 연속고 then { if 파동번호 == 1 Then { 파동번호 = 2; 파동1번고점 = 고[1]; } if 파동번호 == 3 Then { if 파동1번고점 >= 고[1] Then { if 파동변화 != 2 then { 파동번호 = 2.3; 파동변화 = 2; } else { 파동번호 = 3.2; 파동연장 = 3; } } Else { 파동번호 = 4; 파동3번고점 = 고[1]; } } if 파동번호 == 3.3 Then { 파동번호 = 3.4; } if 파동번호 == 3.33 Then { 파동번호 = 3.34; } if 파동번호 == 3.35 Then { 파동번호 = 3.4; } if 파동번호 == 3.5 Then { 파동번호 = 4; 파동3번고점 = 고[1]; } if 파동번호 == 5 Then { 파동번호 = -1; 파동5번고점 = 고[1]; } if 파동번호 == 5.3 Then { 파동번호 = 5.4; } if 파동번호 == 5.5 Then { 파동번호 = -1; 파동5번고점 = max(고[3],고[2],고[1]); } if 파동번호 == -2 Then { 파동번호 = -3; } } #=========================================================# # 상승전환 #=========================================================# if 변곡점 == 전저점 or 변곡점 == 연속저 then { if 파동번호 == 0 Then { 파동번호 = 1; 파동1번저점 = 저[1]; } if 파동번호 == 2 Then { 파동번호 = 3; 파동3번저점 = 저[1]; } if 파동번호 == 2.3 Then { if 저[2] > 저[1] Then { 파동번호 = 3; 파동3번저점 = 저[1]; } } if 파동번호 == 3.2 Then { 파동번호 = 3.3; } if 파동번호 == 3.32 Then { 파동번호 = 3.33; } if 파동번호 == 3.34 Then { 파동번호 = 3.35; } if 파동번호 == 3.4 Then { 파동번호 = 3.5; } if 파동번호 == 4 Then { 파동번호 = 5; 파동5번저점 = 저[1]; } if 파동번호 == 5.4 Then { 파동번호 = 5.5; } if 파동번호 == -1 Then { 파동번호 = -2; } if 파동번호 == -3 Then { 파동번호 = 1; 파동1번저점 = 저[1]; 파동연장 = 0; 파동변화 = 0; } } #=========================================================# # 진행중 #=========================================================# if 파동번호 == 2 then { if 파동1번저점 > CC Then { 파동번호 = -3; } } else if 파동번호 == 2.3 then { if 파동1번고점 > 0 and 파동1번고점 < CC Then { 파동번호 = 3; 파동3번저점 = 저[1]; } else if 파동1번저점 > CC Then { 파동번호 = -3; } } else if 파동번호 == 3.2 Then { if 파동1번저점 > CC Then { 파동번호 = -3; 파동연장 = 0; } else if 저[1] > CC Then { 파동번호 = 2; 파동1번고점 = 고[1]; 파동연장 = 0; } } else if 파동번호 == 3.32 Then { if 파동1번저점 > CC Then { 파동번호 = -3; 파동연장 = 0; } else if 저[1] > CC Then { 파동번호 = 3.2; } } else if 파동번호 == 3.4 Then { if 파동1번저점 > CC Then { 파동번호 = -3; 파동연장 = 0; } else if 고[2] > CC Then { 파동번호 = 3.32; } } else if 파동번호 == 4 then { if 파동1번저점 > CC Then { 파동번호 = -3; } else if 파동1번고점 > CC Then { 파동번호 = 3.2; 파동연장 = 3; } } else if 파동번호 == 5 Then { if (파동1번고점 - 파동1번저점) > (파동3번고점 - 파동3번저점) and (CC - 파동5번저점) > (파동3번고점 - 파동3번저점) Then { 파동번호 = 3.3; 파동연장 = 3; } } else if 파동번호 == 5.4 then { if 파동1번저점 > CC Then { 파동번호 = -3; 파동연장 = 0; } else if 고[2] > CC Then { 파동번호 = -1; 파동연장 = 0; } } else if 파동번호 == -1 then { if 파동연장 == 0 and 파동3번저점 > CC Then { 파동번호 = 2; 파동1번고점 = 고[1]; 파동연장 = 1; } } else if 파동번호 == -2 then { if 고[1] < CC Then { if 파동연장 == 1 or 파동연장 == 3 Then { 파동번호 = 5; } Else { 파동번호 = 5.3; 파동연장 = 5; } } } else if 파동번호 == 1 then { if 파동5번고점 > 0 and 파동5번고점 < CC Then { 파동번호 = 5.3; 파동연장 = 5; } } #---------------------------------------------------------# # 시스템식 #---------------------------------------------------------# var1 = 파동번호 ; if var1 == 3 then buy("3"); if var1 == 3.3 then buy("3.3"); if var1 == 3.33 then buy("3.33"); if var1 == 3.35 then buy("3.35"); if var1 == 3.5 then buy("3.5"); if Var1 == 5 then buy("5"); if var1 == 5.3 then buy("5.3"); if var1 == 5.5 then buy("5.5"); if int(var1) == 2 then exitlong("2"); if int(var1) == 4 then exitlong("4"); if var1 == 3.2 then exitlong("3.2"); if var1 == 3.4 then exitlong("3.4"); if var1 == 3.32 then exitlong("3.32"); if var1 == 3.34 then exitlong("3.34"); if var1 == 5.2 then exitlong("5.2"); if var1 == 5.4 then exitlong("5.4"); if var1 == 5.32 then exitlong("5.32"); if var1 == 5.34 then exitlong("5.34"); if var1 == -1 then exitlong("a"); if var1 == -3 then exitlong("c");
프로필 이미지
jaeky
2015-07-06
154
글번호 88053
시스템
답변완료

수식이 제대로 작동이 안됩니다.

안녕하세요 예스스탁입니다. input : 익절틱수(20); var : entry(0); if stime == 070000 or (stime > 070000 and stime < 070000) Then{ var1 = O; entry = 0; } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if MarketPosition == 0 and entry == 0 Then{ if C > var1 Then buy(); if C < var1 Then sell(); } if entry >= 1 and stime >= 070000 and stime < 055500 Then{ if MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopProfitTarget",1) == true and C <= ExitPrice(1)-PriceScale*10 and C > var1 Then buy("bb"); if MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopProfitTarget",1) == true and C >= ExitPrice(1)+PriceScale*10 and C < var1 Then Sell("ss"); if MarketPosition == -1 or (MarketPosition == 0 and IsExitName("StopProfitTarget",1) == false) and crossup(c,var1) Then buy(); if MarketPosition == 1 or (MarketPosition == 0 and IsExitName("StopProfitTarget",1) == false) and CrossDown(c,var1) Then Sell(); } SetStopProfittarget(PriceScale*익절틱수,PointStop); if stime == 055500 Then{ exitlong(); ExitShort(); } 즐거운 하루되세요
프로필 이미지
태양의제국
2015-07-06
135
글번호 88052
시스템
답변완료

문위합니다

빨강봉시작돼면 봉2번째 매수신호.....없어지면 청산무포신호 파랑나오면 봉2번째 매도신호.......없어지면 청산신호 매매신호는 09시30분부터 13시30분까지만나오게해주세요 감사합니다
프로필 이미지
이공주7
2015-07-06
178
글번호 88051
시스템
답변완료

피보나치

지난 글을 찾다가 궁금한게 있어서욤 제가 초보라 몰라서 그럽니다.^^ 이해해 주세욤..ㅎㅎ 궁금한것이 틱봉이나 분봉이나, 장시작후 고점 저점을 자동으로 입력되게 하려면 어찌 하나요? 그러면 진폭이 나올수록 피보나치 위치도 달라지게 되지욤... 당일 고가 저가를 실시간으로 자동으로 인식하게 만들어주세욤...^^ input : 고점(260),저점(250); var1 = 고점-저점; plot1(고점,"고점"); plot2(고점-var1*0.764,"76.4"); plot3(고점-var1*0.618,"61.8"); plot4(고점-var1*0.500,"50.0"); plot5(고점-var1*0.382,"38.2"); plot6(고점-var1*0.236,"23.6"); plot7(저점,"자점");
프로필 이미지
대장놀부
2015-07-06
257
글번호 88049
지표
답변완료

안된다고하네요

input : N(5); var1 = ma(c,N); if var1 > var1[1] and C > C[5] Then buy(); if var1 < var1[1] and C < C[5] Then sell(); 라고 만들어주셨는데요 전략에서만 쓸수 있다고 하네요 ;; 어떻게 써야하는지좀 알려주시겠어요?
프로필 이미지
이의정
2015-07-06
128
글번호 88046
시스템

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

프로필 이미지
팽구
2015-07-06
0
글번호 88029
사용자 함수
답변완료

문의드려요.

이동평균선(ma)을 풀어써주세요^^
프로필 이미지
팽구
2015-07-06
134
글번호 88028
사용자 함수
답변완료

시스템 수식 부탁드립니다

지금 쓰고 있는 수식은 이렇습니다 Var : 전환선(0), 기준선(0),선행스팬1(0),선행스팬2(0),구름상단(0),구름하단(0); 전환선 = (highest(H,9)+lowest(L,9))/2; 기준선 = (highest(H,26)+lowest(L,26))/2; 선행스팬1 = (전환선+기준선)/2; 선행스팬2 = (highest(H,52)+lowest(L,52))/2; 구름상단 = max(선행스팬1[25],선행스팬2[25]); 구름하단 = min(선행스팬1[25],선행스팬2[25]); if CrossDown(c,구름하단) Then sell(); if CrossUp(c,구름상단) Then buy(); 이 수식에 첨가하고 싶은 내용은 위 참고사진에 나와있는 macd 오실레이터 막대가 양일때 매수 조건 오실레이터가 막대가 음일때 매도조건을 추가하고 싶은데요 즉 매수는 현재가가 구름상단을 상향돌파하고 macd 오실레이터 막대가 양일때 매수 (여기서 양은 0이상을 말하는것겟죠) 매도는 현재가가 구름하단을 하향돌파하고 macd 오실레이터 막대가 음일때 매도 (여기서 음은 0이하 입니다 ) 관련 수식 부탁드립니다 감사합니다
프로필 이미지
필로게이스
2015-07-06
178
글번호 88025
시스템
답변완료

OnOrderResponse 이벤트를 사용자가 임의로 발생시킬수 있나요?

예스스팟에서 OnOrderResponse 이벤트를 사용자가 임의로 발생시킬수 있는 방법이 있나요? 원래 이 이벤트는 OrderBuy()같은 주문함수 실행시에 주문에대한 응답으로 시스템이 자동으로 발생시켜 주는 이벤트죠. 제가 모의투가 아닌 실제계좌를 가지고 주문함수 실행시에 제대로 주문이 나가는지를 좀 테스트해보고 싶은데 주문이 잘못나갈까봐 메시지 로그를 통해 주문 성공 여부를 좀 확인하고 싶어서 그럽니다. 이때 OnOrderResponse 이벤트가 발생해야 전체 전략이 제대로 구동이 되도록 프로그램을 짰는데, 실제 주문을 통해 확인하긴 좀 불안하고, 임의로 이벤트를 발생시켜서 확인하고 싶은 거죠.
프로필 이미지
김태희
2015-07-06
162
글번호 88021
사용자 함수