커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

세발낚지 님에 의해서 삭제되었습니다.

프로필 이미지
세발낚지
2018-08-20
22
글번호 121465
지표
답변완료

그림파일처럼 나타나게 추세선 지표 부탁드립니다.

그림파일처럼 나타나게 추세선 지표 부탁드립니다.
프로필 이미지
이지화
2018-08-20
425
글번호 121451
지표
답변완료

시스탬

아래수식으로 시스탬변환 부탁드립니다. input : 아시아시작(090000),아시아종료(153000); input : 유럽시작(153000),유럽종료(223000); input : 미국시작(223000),미국종료(090000); input : N(1); var : Tcond1(false),Tcond2(false),Tcond3(false); var : V1(0),V2(0),V3(0); If stime == 아시아시작 or (stime > 아시아시작 and stime[1] < 아시아시작) Then { Tcond1 = true; V1 = C; } If stime == 아시아종료 or (stime > 아시아종료 and stime[1] < 아시아종료) Then { Tcond1 = false; } If stime == 유럽시작 or (stime > 유럽시작 and stime[1] < 유럽시작) Then { Tcond2 = true; V2 = C; } If stime == 유럽종료 or (stime > 유럽종료 and stime[1] < 유럽종료) Then { Tcond2 = false; } If stime == 미국시작 or (stime > 미국시작 and stime[1] < 미국시작) Then { Tcond3 = true; V3 = C; } If stime == 미국종료 or (stime > 미국종료 and stime[1] < 미국종료) Then { Tcond3 = false; } if Tcond1 == true Then{ var1 = C-V1; if var1 > 0 then plot96(var1*N,"아시아기준",red); Else plot96(var1*N,"아시아기준",blue); } if Tcond2 == true Then{ var2 = C-V2; if var2 > 0 Then plot97(var2*N,"유럽기준",RED); Else plot97(var2*N,"유럽기준",blue); } if Tcond3 == true Then{ var3 = C-V3; if var3 > 0 then plot98(Var3*N,"미국기준",RED); Else plot98(Var3*N,"미국기준",blue); }
프로필 이미지
야크
2018-08-20
150
글번호 121449
시스템
답변완료

수식

안녕하세요. 현재봉 기준으로 이전봉~이전20봉 사이 1)장대양봉 / 2)장대음봉의 고가,저가,시가을 수평선으로 표현 부탁드립니다. 감사합니다.
프로필 이미지
한국사람73
2018-08-20
175
글번호 121448
지표
답변완료

시스템식 부탁드립니다.

항상 도움 주셔서 감사합니다. 아래 조건을 만족할 경우 포지션 진입 하는 시스템식 부탁드립니다. 종목 : 오일 타임 : 15분 매매시간 : 오후 14시부터 다음날 새벽 5시까지. 매매환경 : 메인 차트는 15분봉 하나 이지만 30분봉, 45분봉, 60분봉을 참조하여 매매하고 싶습니다. - 30분,45분, 60분 참조 차트 없이 시간을 계산하여 매매하고 싶습니다. 매수조건 : 1. 전봉 60분봉이 양봉으로 끝나고, 전봉 60분 종가가 당일 전봉들의 종가기준 최고가 일 경우 2. 현재 15분, 30분, 45분, 60분 모두 양봉일 경우 매수진입 3. 30분, 45분, 60분은 계산하여 조건을 체크하고 싶습니다. 매수 청산 : 1. 60분 현재봉 종가에 청산 매도조건 : 1. 전봉 60분봉이 음봉으로 끝나고, 전봉 60분 종가가 당일 전봉들의 종가기준 최저가 일 경우 2. 현재 15분, 30분, 45분, 60분 모두 양봉일 경우 매수진입 3. 30분, 45분, 60분은 계산하여 조건을 체크하고 싶습니다. 매도 청산 : 1. 60분 현재봉 종가에 청산 시스템식 부탁드립니다.
프로필 이미지
양치기
2018-08-19
180
글번호 121443
시스템
답변완료

청산 관련

안녕하세요. 글번호 58847번의 연장입니다. (지난 8월 1일 문의함) 항셍과 같이 당일 진입 당일 청산을 하는 종목은 아래와 같이 장 마감 전 모든 포지션을 강제청산하는게 용이합니다. Var: MP(0); MP = MarketPosition; If (MP <> 0) then SetStopEndofday(051430); 문제는 당일 진입 후 익일 청산하는 종목들(CME 거래소 종목)에서는 위와 같은 강제청산 로직을 쓰면 당일 진입을 못하고 익일 자정 이후부터 포지션이 잡힌다는 겁니다. 그래서 지난 번 알려주신 로직을 아래와 같이 잘 쓰고 있습니다. Inputs: SSTIME(200000), EETIME(050000), XXTIME(051430); //--------- 써머타임 체크 ---------// Vars: ST(0), ET(0), Year(0); Year = Floor(sDate / 10000); Var18 = DayofWeek( (10000 * Year) + (100 * 3) + 1 ); If Var18 == 0 Then Value98 = 8; Else Value98 = 15 - Var18; // 3월 두번째 일요일 날짜 Var20 = DayofWeek( (10000 * Year) + (100 * 11) + 1 ); If Var20 == 0 Then Value99 = 1; Else Value99 = 8 - Var20; // 11월 첫번째 일요일 날짜 If sDate > (10000 * Year) + (100 * 3) + Value98 And sDate < ( 10000 * Year) + (100 * 11) + Value99 Then Begin ST = 070000; // 써머타임 적용 시, 장 시작 시간 ET = 060000; // 써머타임 적용 시, 장 종료 시간 End Else Begin ST = 080000; // 장 시작 시간 ET = 070000; // 장 종료 시간 End; CONDITION1 = ( IntPortion(Time / 10000) > IntPortion(ET / 10000) And IntPortion(Time[1] / 10000) <= IntPortion(ET / 10000) ) Or ST <> ST[1]; //------- 매매 시간대 -------// Vars: MP(0), TimeCond(False); MP = MarketPosition; If (sDate != sDate[1] and sTime >= SSTIME) or (sDate == sDate[1] and sTime >= SSTIME and sTime[1] < SSTIME) Then Begin TimeCond = True; End; If (sDate != sDate[1] and sTime >= EETIME) or (sDate == sDate[1] and sTime >= EETIME and sTime[1] < EETIME) Then Begin TimeCond = False; End; If (sDate != sDate[1] and sTime >= XXTIME) or (sDate == sDate[1] and sTime >= XXTIME and sTime[1] < XXTIME) Then Begin If MP == 1 Then ExitLong("Exit Buy"); If MP == -1 Then ExitShort("Exit Sell"); End; //--------- 진입 로직 ---------// If TimeCond Then Begin ~~~~~~~~~~~ 중략 ~~~~~~~~~~~~ End; 여기까지는 좋은데 문제는 '시스템 매매 설정'에서 주문 시작 신호를 진입 신호로 안쓰고 모든 신호로 잘못해서 설정할 경우에는 Exitlong 함수에서 매도로 진입하고, Exitshort에서 매수로 진입하는 경우가 있습니다. 이렇게 되면 뒤에 연이어 다른 진입신호가 떴을 때 한번 더 진입을 하게 되어 총 2개의 포지션을 갖게 됩니다. 다음에 나올 청산 로직에서는 진입 포지션을 한 개로만 인식하고 하나만 청산합니다. 그럼 나머지 하나의 포지션은 장 마감 이후에도 포지션이 정리가 안되어 남아 있습니다. 이런 경우를 대비해 SetStopEndofday() 함수를 이용해 남아 있는 당일 모든 포지션을 강제 청산하려는 것인데 CME 거래소 종목에서는 의도하는 시간대부터 진입이 안되는 문제가 있어서 강제청산함수를 못쓰고 있습니다. 이를 대체할 수 있는 청산 로직을 가이드 해주시면 감사하겠습니다.
프로필 이미지
gap
2018-08-19
203
글번호 121442
시스템
답변완료

종목 검색 관련 문의드립니다.

안녕하세요. 특정 종목을 장전에 선택한 후, 그 종목이 시가 대비 -2% 하락하면 매수하는 코드를 짜고 싶습니다. 1. 파워종목 검색의 예스랭귀지 편집기에서 코드를 짤 수 있을까요? 2. 아니면, 예스스팟 전략파일 자체에서 코드를 짜야하나요? 가능하다면 관련해서 예시 코드를 보고싶습니다. 감사합니다!
프로필 이미지
lean16
2018-08-19
154
글번호 121441
종목검색
답변완료

식 변경 부탁드립니다.

안녕하세요, 아래 식 변경하여 문의드리고자 합니다 1. 1일1진입을 삭제하고 당일청산 삭제 2. 한번 진입에서 추가로 제가 설정한 비율로 두번 더 진입할수있도록 하며(총3번진입) 설정한 비율에서 진입하면 중복진입하지 않습니다. (설정일부터 설정한 진입값 이후 추가 진입값에 도달하지못해 모두 진입하지 못하고 청산값에 도달하여도 청산, 청산이나 손절이 나오면 더이상 진입안함) 3. 청산,손절은 전량청산 4. 설정날 저점과 고점을 설정후 고점갱신이 아닌 처음 설정한 저점과고점으로 고정 (설정한 날의 당일은 분봉 고점갱신 설정되고 이후날부터 고점갱신없음 , 당일 분봉으로만 고점갱신. 후일 고점갱신없음) 위 내용 부탁드립니다. 감사합니다. --------------------------------------------------------------- input : ndate(20180601),ntime(90000),수량(1),고점(100),저점(90); input : 매매구분(1),rate(0.652),청산1(0.7),청산2(0.6),청산조건가격(0.4),손절(0.3); var : Tcond(false),HH(0),ll(0),t1(0),entrycount(0),dd(0),gap(0); if bdate != bdate[1] Then t1 = TotalTrades; if MarketPosition == 0 Then entrycount = TotalTrades-t1; Else entrycount = TotalTrades-t1+1; if sdate == ndate and stime == ntime Then { Tcond = true; hh = 고점; ll = 저점; dd = sdate; } if Tcond == true then { if sdate >= dd and H > hh Then hh = h; var1 = hh-(hh-LL)*rate; if 매매구분 == 1 and entrycount < 1 and L > var1 and stime < 144000 Then buy("b",AtLimit,var1,수량); if MarketPosition == 1 Then { gap = (EntryPrice-var1[BarsSinceEntry])/var1[BarsSinceEntry]*100; if lowest(L,BarsSinceEntry) > (hh-(hh-LL)*청산조건가격)*(1+gap/100) then ExitLong("bp1",atlimit,(hh-(hh-LL)*청산1)*(1+gap/100)); Else ExitLong("bp2",atlimit,(hh-(hh-LL)*청산2)*(1+gap/100)); ExitLong("bl",AtStop,(hh-(hh-LL)*손절)*(1+gap/100)); } } SetStopEndofday(151500);
프로필 이미지
스누피독
2018-08-20
168
글번호 121440
시스템
답변완료

문의드립니다.

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 지표 -5분봉 a-일봉크기 절대값의 [200개] 평균 plot1= dayopen + a 표준편차1 plot2= dayopen + b 표준편차1 *[]은 외부변수
프로필 이미지
잡다백수
2018-08-19
160
글번호 121439
시스템