커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

옵션시뮬레이터 자동 백테스트

안녕하세요 옵션 시뮬레이터 단점이 일일이 수동으로 백테스트를 하루하루 해주어야 한다는 것인데, 혹시 예스트레이더 처럼 한번에 백테스트를 할 수 있는 방법이 있을까요? 예들 들면 매일 아침 9시 30분 마다 등가격 양매도를 하는데 이 1년동안의 수익을 단번에 볼 수 있는 방법이 있는지 궁금합니다
프로필 이미지
히익
2022-10-21
1491
글번호 163170
시스템
답변완료

​​시스템 수식변환

&#8203;&#8203;&#8203;항상 고맙습니다 &#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;아래 수식은 키움증권 Heikin- ashi &#8203;챠트 수식입니다. &#8203;봉챠트 변환 부탁드립니다 &#8203; ********************************** &#8203;차트종류 Heikin- ashi&#8203;&#8203;(키움 변횐전 챠트) 수식1 ma(c,기간,종류); 기간:20 ,종류:가중 &#8203; 수식2 A=ma(c,기간,종류); if(A>A(1)*(1+PT()/1000), A, 0) &#8203; 수식3 A=ma(c,기간,종류); if(A<A(1)*(1-PT()/1000), A, 0) &#8203;&#8203; &#8203; 수식4 A=ma(c,기간,종류); if(A<=A(1)*(1+PT()/1000) && A>=A(1)*(1-PT()/1000),A,0) &#8203;*** 1.시스템변환식&#8203;&#8203;(Heikin-ashi챠트 ----> 봉챠트 ) &#8203;&#8203;&#8203; 수식2 조건만족시 매수 &#8203;&#8203; 수식3 조건만족시 매도 &#8203;***시스템 1-1 &#8203;&#8203;&#8203;&#8203;&#8203; 수식4조건만족시 발생가를 var1에저장 &#8203;&#8203;&#8203;&#8203; 헌재가(종가) var1 상승돌파 매수 &#8203;&#8203;&#8203;&#8203; 현재가 var1 하락돌파 매도 &#8203;*** 시스템 1-2 &#8203;&#8203; 1)음봉중심 돌파시 매도 a=(o(1)+c(1))/2; o(2)<c(2)and crossdown(c,a) &#8203;&#8203;&#8203; 2)양봉중심 돌파시 매수 a=(o(1)+c(1))/2; o(1)>c(1) and crossup(c,a) *** 2. 지표식&#8203;&#8203;(상승하락횡보) &#8203;&#8203;&#8203; 수식2 조건만족시 1(red) &#8203;&#8203; 수식3 조건만족시 -1 (blue) 중싱선 0 &#8203;&#8203;&#8203;&#8203;&#8203;&#8203;***지표식2-1(sss) 기간:20 ,종류:&#8203;&#8203;&#8203;&#8203;지수(이지표식만 지수적용) 수식4 조건만족시 원형점(노란색)&#8203;으로 표시 &#8203;***강조식 &#8203;&#8203;&#8203; 수식2 조건만족시 &#8203;바탕색(red) &#8203;&#8203; 수식3 조건만족시 &#8203;바탕색 (blue) &#8203;&#8203; 감사합니다 &#8203;
프로필 이미지
조민철
2022-10-21
1345
글번호 163169
시스템
답변완료

추세선

input : Period(10); Var:선두께(1),상승색(red), 하락색(blue); Var:j(0),T(0); Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0); Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/; Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0); r[0] = 0; r[1] = 2; r[2] = 3.; r[3] = -1; r[4] = -2.; r[5] = 1; r[6] = 0.5; For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(H,Period)[1]) Then T = 1; if CrossDown(c,Lowest(L,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; //ZZ[j+1] = ZZ[j]; } LoVal[0] = L; LoBar[0] = 0; //ZZ[0] = L; date11 = date[HiBar[0]]; time11 = stime[HiBar[0]]; Value11 = HiVal[0]; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,하락색); Tx = Text_New(date11,time11,Value11,"●"); #동그라미 색상, 빨강 Text_SetColor(Tx,Green); Text_SetStyle(Tx,2,2); Text_SetSize(tx,7); //tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine+NumToStr(value11,2)+NewLine); //Text_SetStyle(tx,2,1); date21 = date[HiBar[0]]; time21 = stime[HiBar[0]]; date22 = date[0]; time22 = stime[0]; for j = 0 to 6 { fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]); } #TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]); #TL_SetColor(TL2[1],RED); #TL_SetStyle(TL2[1], 3); #TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]); #TL_SetColor(TL2[2],RED); #TL_SetSize(TL2[2],1); #TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2)); #Text_SetColor(Tx2[2],BWHITE); #Text_SetStyle(TX2[2],1,1); #TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]); #TL_SetColor(TL2[3],RED); #TL_SetStyle(TL2[3], 3); #TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]); #TL_SetColor(TL2[4],RED); #TL_SetSize(TL2[4],1); #TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2)); #Text_SetColor(Tx2[4],BWHITE); #Text_SetStyle(TX2[4],1,0); } If LoVal[0] > L Then { LoVal[0] = L; LoBar[0] = 0; //ZZ[0] = L; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date22 = date[0]; time22 = stime[0]; TL_SetEnd(TL2[0],date22,time22,fr[0]); TL_SetEnd(TL2[1],date22,time22,fr[1]); TL_SetEnd(TL2[2],date22,time22,fr[2]); Text_SetLocation(TX2[2],date22,time22,fr[2]); TL_SetEnd(TL2[3],date22,time22,fr[3]); TL_SetEnd(TL2[4],date22,time22,fr[4]); Text_SetLocation(TX2[4],date22,time22,fr[4]); TL_SetEnd(TL2[5],date22,time22,fr[5]); TL_SetEnd(TL2[6],date22,time22,fr[6]); TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); } } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; //ZZ[j+1] = ZZ[j]; } HiVal[0] = H; HiBar[0] = 0; //ZZ[0] = H; date11 = date[LoBar[0]]; time11 = stime[LoBar[0]]; Value11 = LoVal[0]; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,상승색); Tx1 = Text_New(date11,time11,Value11,"●"); #동그라미 색상, 파랑 Text_SetColor(Tx1,Green); Text_SetStyle(Tx1,2,2); Text_SetSize(tx1,7); //tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2)+NewLine+NumToStr(value11,2)); //Text_SetStyle(tx,2,0); date31 = date[LoBar[0]]; time31 = stime[LoBar[0]]; date32 = date[0]; time32 = stime[0]; for j = 0 to 5 { fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]); } } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; //ZZ[0] = H; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date32 = date[0]; time32 = stime[0]; TL_SetEnd(TL3[0],date32,time32,fr[0]); TL_SetEnd(TL3[1],date32,time32,fr[1]); TL_SetEnd(TL3[2],date32,time32,fr[2]); Text_SetLocation(TX3[2],date32,time32,fr[2]); TL_SetEnd(TL3[3],date32,time32,fr[3]); TL_SetEnd(TL3[4],date32,time32,fr[4]); Text_SetLocation(TX3[4],date32,time32,fr[4]); TL_SetEnd(TL3[5],date32,time32,fr[5]); TL_SetEnd(TL3[6],date32,time32,fr[6]); TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); } } TL_SetSize(TL1,선두께); //TL_SetEnd(tl,NextBarSdate,NextBarStime,NextBarOpen); 양선에 매수,음선에 매도. 감사합니다.
프로필 이미지
고성
2022-10-20
1155
글번호 163168
시스템

강물처름 님에 의해서 삭제되었습니다.

프로필 이미지
강물처름
2022-10-20
0
글번호 163167
시스템
답변완료

Time 사용법

현재봉이 완성되는데 소용되는 시간을 측정하는데 Time-sTime 또는 Time-Time[1] 로 계산될 수 있다고 생각합니다. 근데 시간 단위가 변경되는 구간, 예를 들면 95900 에서 100100 구간의 경우는 수치가 터무니 없이 나오네요. 매 시간변경 구간에선 같은 현상입니다. 가능한 수식 부탁드립니다.
프로필 이미지
뉴하트
2022-10-20
997
글번호 163165
지표
답변완료

피라미딩에서 청산안된 수량 강제청산방법

늘 도움받아 감사합니다. 하나 더 여쭙니다 피라미딩상황에서..(5회분할매수) 1차 첫매수후... 가격이 떨어질때마다 추가로 매수하는데.. 다 정리하고 남은 첫매수가 고가권이라 정리가 안되있을때 남은 매수수량을 정리하는 방법을 알고싶어요. 예를들어..가격이 하락할때마다 분할매수하는데.. 1차 9XXX원에 첫매수 b1 수량 10개 2차 7XXXX원에 추가매수 b2 수량 10개 3차 6XXXX원에 추가매수 b3 수량 20개 ..... 이렇게 했을때. 평균단가(avgentry) 가 5%이상이면 정리하게 해서.. b2와 b3는 청산됬는데... 남은 b1이 고가에서 사진거라.. 이익5%가 안되 청산되지못할때.. b1매수가격의 본절(수수료때문에 매수가x1.25% 시 본절가)이면 강제로 청산시키는 방법을 알고싶어요. ( 계속 매매가 되야하는데..청산되지않은물량때문에 신규매수가 이뤄지지 못하는 점때문에..알고싶습니다.)
프로필 이미지
포에니
2022-10-31
1100
글번호 163164
시스템

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

프로필 이미지
knb
2022-10-20
28
글번호 163163
지표
답변완료

부탁드립니다

수고하십니다 79257번 재질문입니다 콜등가대입이나 풋등가대입은 지정한 값의 수만큼 지정하시는 부분입니다. 라고 말씀하셨는데 어떻게 무슨뜻인지... (예제로 부탁드립니다)
프로필 이미지
파생돌이
2022-10-20
1128
글번호 163158
지표
답변완료

시가기준 상단, 하단 매매

시가 기준으로 상단/하단 기준을 정하고, 현재가가 그 밖으로 나갔다 들어올때 진입하는 코드를 짰는데 종종 진입을 안하네요 수정부탁드립니다. --<개념>----------------------------------------------------------------------- 1) 시가-1.5pt 기준으로 선을 긋고, 현재가가 그 선 밑으로 내려갔다가 시가-1.5pt을 터치하면 매수 2) 시가+1.5pt 기준으로 선을 긋고, 현재가가 그 선 위로 올라갔다가 시가+1.5pt을 터치하면 매도 3) 종가청산 --<코드>---------------------------------------------------------------- Input : 상단포인트(1.5), 하단포인트(1.5); # 진입 # # 매수 진입 # if CrossUp(C,DayOpen-하단포인트) and ExitDate(1) <> date and MarketPosition == 0 then # 시가 대비 -1.5pt를 Cross Down하고, 첫 진입이라면, 보유 포지션이 없다면 buy("매수", AtLimit, DayOpen-하단포인트); # 시가대비 -1.5pt로 체결 # 매도 진입 # if CrossDown(C,DayOpen+상단포인트) and ExitDate(1) <> date and MarketPosition == 0 then # 시가 대비 +1.5pt를 Cross Up하고, 첫 진입이라면, 보유 포지션이 없다면 sell("매도", AtLimit, DayOpen+상단포인트); # 시가대비 +1.5pt로 체결 # 종가 청산 # SetStopEndofday(154000);
프로필 이미지
퀀트드래곤
2022-10-20
1416
글번호 163157
시스템