커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다

배포버전 파일을 다른사람에게 기간을 정해서 보내면 혹시 수식을 해킹해서 볼 염려는 없는지 궁금합니다. 상대방이 받아서 저장하면 차트상단의 시스템적용에만 파일이 들어가있고 랭귀지편집기에는 안들어가니 괜찮은 것 같기는한데 혹시나해서 문의 드렸습니다. 그리고 ... if Condition1 Then value1 = 1; if Condition2 Then value1 = 0; if value1 == 1 and (a) Then buy(); if Condition1 = ... if Condition2 = ... if Condition2 Then value2 = 1; if Condition1 Then value2 = 0; if value2 == 1 and (a) Then sell(); if Condition1 = ... if Condition2 = ... 예를 들어서 이런조건일때 첫매수와 두번째 매도이후 첫매수조건 if Condition1 = 가 유지된상태에서 a 만 생성하니 재매수가 나옵니다 if Condition1 = 가 유지되는거 말고 다시 if Condition1 = 가 생성한 다음에 a 조건이 나와야만 재매수하려면 어떻게 해야 하는지 부탁 드립니다. 감사합니다
프로필 이미지
하나로
2013-01-08
293
글번호 57886
시스템
답변완료

수식 오류

이격도를 이용하여 아래 지표에서 그 값이 발생하는 지점에 점을 찍고 그 점의 값을 그대로 유지한채 수평으로 n봉간 늘려주는 수식을 추가하고자 문의드렸습니다. 그래서 아래와 같은 수식을 받았습니다만, 그림에서와 같이 그 점들이 봉의 저/고가에 찍혀버리네요. 제가 원한 건 값이 발생한 자리의 값을 그대로 유지한채 수평으로 점을 늘려주는 수식입니다. input : n(1),n2(100),n3(100),n4(1),n5(100),n6(100),NN(5); input : n봉(2000); input : maP1(3),maP2(100),maP3(2),maP4(100); var : ma1(0),ma2(0),ma3(0),ma4(0),ma11(0); ma1 = ma(c,maP1); ma2 = ma(c,maP2); ma3 = ma(c,maP3); ma4 = ma(c,maP4); var1 = ma1/ma2*100; var11 = ma3/ma4*100; if var1[n] == lowest(var1,n2)[n] and var1 < n3 and var1 > var1[1] and var1[1] < var1[2] Then Condition1 = True; Else Condition1 = false; if countif(Condition1==true,NN) >= 1 Then plot1(L,"하단"); if var11[n4] == highest(var11,n5)[n4] and var11 > n6 and var11 < var11[1] and var11[1] > var11[2] Then Condition2 = True; Else Condition2 = false; if countif(Condition2==true,NN) >= 1 Then plot2(H,"상단");
프로필 이미지
흑수돌
2013-01-09
356
글번호 57885
지표
답변완료

다시한번 문의드립니다.

안녕하세요 예스스탁입니다. 1분봉에 적용하시면 됩니다. 시초가에 주문을 내기 위해서는 전일 마지막봉에 if문을 만족시켜 다음날 첫시세 들어올때 주문이 발생시켜야만 합니다. 적용하신 종목의 거래가 없어 15시에 거래가 없으면 해당종목은 주문이 나가지 않습니다. input : 투입금액(1000000); var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else UpLimit = (BP[0] * 1.15); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; } if CodeCategory() == 1 || CodeCategory() == 2 then { If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else 상한가 = iff(up6>=5000, up5, up6); } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } #수량계산 if CodeCategory == 1 Then{ if BasePrice < 50000 Then Var1 = int(int((투입금액*0.5)/C)/10)*10; Else Var1 = int((투입금액*0.5)/C); } if CodeCategory == 2 or CodeCategory == 8 Then Var1 = int(투입금액/C); #시가신호 if stime == 150000 and dayhigh >= 상한가 Then buy("b1",AtMarket,def,var1); #전일종가-3% if MarketPosition == 1 Then buy("b2",atlimit,DayClose(1)*0.97,var1); #매도 if MarketPosition == 1 Then{ #시가신호만 발생했을때 if maxEntries == 1 Then{ exitlong("bx",AtStop,EntryPrice*0.9); } #추가매수도 된경우 if MaxEntries == 2 Then{ if CodeCategory == 1 and BasePrice < 50000 Then{ value1 = int(int(MaxContracts*0.5)/10)*10; value2 = int(int(MaxContracts*0.25)/10)*10; } Else{ value1 = int(int(MaxContracts*0.5)/10)*10; value2 = int(int(MaxContracts*0.25)/10)*10; } if countif(crossup(PositionProfit,투입금액*0.1),BarsSinceEntry) == 1 and crossup(PositionProfit,투입금액*0.1) Then exitlong("bx1",OnClose,def,"",value1,1); if countif(crossup(PositionProfit,투입금액*0.2),BarsSinceEntry) == 1 and crossup(PositionProfit,투입금액*0.2) Then exitlong("bx2",OnClose,def,"",value2,1); if countif(crossup(PositionProfit,투입금액*0.3),BarsSinceEntry) == 1 and crossup(PositionProfit,투입금액*0.3) Then exitlong("bx3"); if CurrentContracts < MaxContracts Then exitlong("bx4",AtStop,highest(H,BarsSinceEntry)*0.9); } } 전일 상한가친 종목에 대한 매매방법에 대해서 다음과 같이 코딩해 주셨는데요 1분봉상에서 시뮬레이션이 안되서 다시한번 문의 드립니다. 코딩 점검 부탁드립니다.
프로필 이미지
썬보이
2013-01-07
348
글번호 57884
시스템

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

프로필 이미지
안전
2013-01-07
11
글번호 57868
지표
답변완료

수식부탁합니다.

매수진입식 2가지 부탁합니다. 1.일봉에서 스토캐스틱 5의 GC에서 매수하되 직전봉 10개 구간에서 전일저가 대비 당일저가가 2% 이상 급락한 흔적이 있은후 (=즉,10개의 봉중 연속된 2개의 봉에서 한번이라도 2%이상의 급락흔적이 있어야 함) 나타난 스톡 5의 GC시만 매수하는 식 2.일봉상 일목균형표에서 ⓐ봉이 "처음으로" 구름층을 상향돌파하고 ⓑ시가와 종가가 모두 구름층 위에 있어야 하며 ⓒ양봉인 경우만 매수 이때 봉이 처음으로 구름층을 상향돌파한다는 것은 봉이 갭으로 돌파한 경우도 포함해야 함. 미리 감사하옵고 부탁드립니다.
프로필 이미지
결사준수
2013-01-07
281
글번호 57867
시스템
답변완료

체결량 관련

항상 신속하고 상세하게 답변 주셔서 많은 도움이 되고 있습니다. 감사합니다. 선물 분봉에 적용하고자 합니다. 건당 매수 체결 물량이 20개 상인 건수가 봉당 10개를 초과하면 매수 반대로 매도 체결량이 건당 20개 넘는 건이 봉당 10 초과하면 매도하는 시스템 식 부탁드립니다.
프로필 이미지
스퍼트시커
2013-01-07
313
글번호 57866
시스템

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

프로필 이미지
회원
2013-01-07
8
글번호 57865
시스템
답변완료

수식 문의

이격도를 이용하여 아래와 같은 지표을 만들었습니다. 그런데, 아래 지표에서 그 값이 발생하는 지점에 점을 찍고 그 점을 n봉간 늘려주는 수식을 추가하고 싶습니다. 잘 안되네요. 부탁좀 드리겠습니다. ^^ input : n(1),n2(100),n3(100),n4(1),n5(100),n6(100); input : n봉(2000); input : maP1(3),maP2(100),maP3(2),maP4(100); var : ma1(0),ma2(0),ma3(0),ma4(0),ma11(0); ma1 = ma(c,maP1); ma2 = ma(c,maP2); ma3 = ma(c,maP3); ma4 = ma(c,maP4); var1 = ma1/ma2*100; var11 = ma3/ma4*100; if var1[n] == lowest(var1,n2)[n] and var1 < n3 and var1 > var1[1] and var1[1] < var1[2] Then plot1(L,"하단"); if var11[n4] == highest(var11,n5)[n4] and var11 > n6 and var11 < var11[1] and var11[1] > var11[2] Then plot2(H,"상단");
프로필 이미지
흑수돌
2013-01-07
284
글번호 57862
지표
답변완료

문의드립니다

어제의 마지막 신호는 그것으로 끝내고, 오늘 아침부터 새로이 신호를 발생시키고 싶은데 어떻게 해야 하나요? 즉 어제 마지막 신호가 상승 신호였어도 오늘 아침부터 조건에 부합하기만 하면 상승 신호가 나오게 할 수 있는지요?
프로필 이미지
회원
2013-01-07
284
글번호 57861
시스템