커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 검토부탁드립니다.

5분 챠트를 열어놓고, 15분봉을 보고 매매를 하는 시스템입니다. 18번 매매식은 양봉 5개이면 매수 29번은 음봉 5개이면 매도 입니다. 여기서 이상한 점은 29번의 SetStopProfittarget(0.15,PointStop); 을 0.06, 0.09, 0.15로 바꾸면, 18번 이익프로핏이 0.13이 아니라 29번 프로핏타켓과 같은 값으로 청산을 합니다. 항상 그런것은 아니고, 29번 매 뒤에 18번 매매가 올 경우에 그렇습니다. 그리고, 29번 뒤에 18번 거래가 나올경우에는 반대로 29번의 이익틱이 18번 거래에 적용됩니다. 번거로우시겠지만, 수식 검토좀 부탁드립니다. Input : M15_md18(1), CDTY_15m_md18(1), Deal_15m_md18(0), N_15m_md18(5); Input : M15_md29(1), CDTY_15m_md29(0), Deal_15m_md29(1), N_15m_md29(5); Var : TF_15m(0), OpenV_15m(0), CloseV_15m(0), Cnt_15m(0), dealcond_15m(False); Var : count11_15m(0), count12_15m(0); Var : A1max_15m(0), A2max_15m(0); Array : D1_15m[20](0), A1_15m[20](0), D2_15m[20](0), A2_15m[20](0), CC_15m[20](0), OO_15m[20](0); If M15_md18 == 1 Then { TF_15m = TimeToMinutes(sTime)%15; If DayIndex == 0 or (TF_15m < TF_15m[1] and stime > stime[1]) Then { OpenV_15m = O; } CloseV_15m = C; If TF_15m == 10 Then { If CloseV_15m > OpenV_15m Then { CC_15m[0] = CloseV_15m; OO_15m[0] = OpenV_15m; D1_15m[0] = 1; A1_15m[0] = Abs(OpenV_15m - CloseV_15m); For Cnt_15m = 1 to 19 { CC_15m[Cnt_15m] = CC_15m[Cnt_15m - 1][1]; OO_15m[Cnt_15m] = OO_15m[Cnt_15m - 1][1]; D1_15m[Cnt_15m] = D1_15m[Cnt_15m - 1][1]; A1_15m[Cnt_15m] = A1_15m[Cnt_15m - 1][1]; } } If CloseV_15m < OpenV_15m Then { # C < O : nega.candle CC_15m[0] = closeV_15m; OO_15m[0] = OpenV_15m; D1_15m[0] = -1; A1_15m[0] = Abs(OpenV_15m - CloseV_15m); For Cnt_15m = 1 to 19 { CC_15m[Cnt_15m] = CC_15m[Cnt_15m - 1][1]; OO_15m[Cnt_15m] = OO_15m[Cnt_15m - 1][1]; D1_15m[Cnt_15m] = D1_15m[Cnt_15m - 1][1]; A1_15m[Cnt_15m] = A1_15m[Cnt_15m - 1][1]; } } } dealcond_15m = False; #initial value is False count11_15m = 0; count12_15m = 0; A1max_15m = 0; A2max_15m = 0; For Cnt_15m = 0 to N_15m_md18 - 1 { If D1_15m[Cnt_15m] == 1 Then # D1 : posi. candle numbers count11_15m = count11_15m + 1; If D1_15m[Cnt_15m] == -1 Then # D1 : nega. candle numbers count12_15m = count12_15m + 1; If A1_15m[Cnt_15m] > A1max_15m Then A1max_15m = A1_15m[Cnt_15m]; If A2_15m[Cnt_15m] > A2max_15m Then A2max_15m = A2_15m[Cnt_15m]; } If CDTY_15m_md18 == 0 Then { dealcond_15m = count12_15m == N_15m_md18 and A1_15m[N_15m_md18 - 1] == A1max_15m; } If CDTY_15m_md18 == 1 Then { dealcond_15m = count11_15m == N_15m_md18 and A1_15m[N_15m_md18 - 1] == A1max_15m; } /************************* // enter section // *************************/ If TF_15m == 10 and dealcond_15m == True and Deal_15m_md18 == 0 and (MarketPosition == 0 or MarketPosition == 1) Then { Buy("B_15m_md18", OnClose, DEF, 1); } If TF_15m == 10 and dealcond_15m == True and Deal_15m_md18 == 1 and (MarketPosition == 0 or MarketPosition == -1) Then { Sell("S_15m_md18", OnClose, DEF, 1); } } If M15_md29 == 1 Then { TF_15m = TimeToMinutes(sTime)%15; If DayIndex == 0 or (TF_15m < TF_15m[1] and stime > stime[1]) Then { OpenV_15m = O; } CloseV_15m = C; If TF_15m == 10 Then { If CloseV_15m > OpenV_15m Then { # C > O : posi.candle CC_15m[0] = CloseV_15m; OO_15m[0] = OpenV_15m; D1_15m[0] = 1; A1_15m[0] = Abs(OpenV_15m - CloseV_15m); For Cnt_15m = 1 to 19 { CC_15m[Cnt_15m] = CC_15m[Cnt_15m - 1][1]; OO_15m[Cnt_15m] = OO_15m[Cnt_15m - 1][1]; D1_15m[Cnt_15m] = D1_15m[Cnt_15m - 1][1]; A1_15m[Cnt_15m] = A1_15m[Cnt_15m - 1][1]; } } If CloseV_15m < OpenV_15m Then { # C < O : nega.candle CC_15m[0] = closeV_15m; OO_15m[0] = OpenV_15m; D1_15m[0] = -1; A1_15m[0] = Abs(OpenV_15m - CloseV_15m); For Cnt_15m = 1 to 19 { CC_15m[Cnt_15m] = CC_15m[Cnt_15m - 1][1]; OO_15m[Cnt_15m] = OO_15m[Cnt_15m - 1][1]; D1_15m[Cnt_15m] = D1_15m[Cnt_15m - 1][1]; A1_15m[Cnt_15m] = A1_15m[Cnt_15m - 1][1]; } } } dealcond_15m = False; count11_15m = 0; count12_15m = 0; A1max_15m = 0; A2max_15m = 0; For Cnt_15m = 0 to N_15m_md29 - 1 { If D1_15m[Cnt_15m] == 1 Then count11_15m = count11_15m + 1; If D1_15m[Cnt_15m] == -1 Then count12_15m = count12_15m + 1; If A1_15m[Cnt_15m] > A1max_15m Then A1max_15m = A1_15m[Cnt_15m]; If A2_15m[Cnt_15m] > A2max_15m Then A2max_15m = A2_15m[Cnt_15m]; } If CDTY_15m_md29 == 0 Then { dealcond_15m = count12_15m == N_15m_md29 and A1_15m[N_15m_md29 - 1] == A1max_15m; } If CDTY_15m_md29 == 1 Then { dealcond_15m = count11_15m == N_15m_md29 and A1_15m[N_15m_md29 - 1] == A1max_15m; } /************************* // enter section // *************************/ If TF_15m == 10 and dealcond_15m == True and Deal_15m_md29 == 0 and (MarketPosition == 0 or MarketPosition == 1) Then { Buy("B_15m_md29", OnClose, DEF, 1); } If TF_15m == 10 and dealcond_15m == True and Deal_15m_md29 == 1 and (MarketPosition == 0 or MarketPosition == -1) Then { Sell("S_15m_md29", OnClose, DEF, 1); } } If EntryName == "B_15m_md18" or EntryName == "S_15m_md18" Then { SetStopProfittarget(0.13,PointStop); SetStopLoss(0.36,PointStop); } If EntryName == "B_15m_md29" or EntryName == "S_15m_md29" Then { SetStopProfittarget(0.15,PointStop); SetStopLoss(0.40,PointStop); }
프로필 이미지
파쿠3
2013-10-01
217
글번호 68011
시스템
답변완료

추가 부탁합니다

안녕하세요 기존 시스템에 매수 매도 2로 해서 추가를 했으면 합니다 2봉전이 양봉이고 꼬리가 있는 고가 종가로 마감하고 1봉전이 음봉이고 2봉전 고가와 1봉전 고가가 같고 2봉전 종가와 1봉전시가가 같아야 하고 현재봉이 5일 이평선을 이탈하고 1봉전 종가보다 현재가가 낮아야 한다 매도1 매수의 경우도 부탁합니다 그리고 기존 시스템에 추가하는 부분이라서 자세히좀 부탁합니다
프로필 이미지
상영중
2013-10-01
134
글번호 68010
시스템
답변완료

수식 부탁드립니다

if stime == 151500 Then var1 = highest(H,36); if stime == 092900 Then var1 = highest(H,30); if stime == 095900 Then var1 = highest(H,30); if stime == 102900 Then var1 = highest(H,30); if stime == 105900 Then var1 = highest(H,30); if stime == 112900 then var1 = highest(H,30); if stime == 115900 then var1 = highest(H,30); if stime == 122900 then var1 = highest(H,30); if stime == 125900 then var1 = highest(H,30); if stime == 132900 then var1 = highest(H,30); if stime == 135900 then var1 = highest(H,30); if stime == 142900 then var1 = highest(H,30); if stime == 151500 then var2 = lowest(L,36); if stime == 092900 then var2 = lowest(L,30); if stime == 095900 then var2 = lowest(L,30); if stime == 102900 then var2 = lowest(L,30); if stime == 105900 then var2 = lowest(L,30); if stime == 112900 then var2 = lowest(L,30); if stime == 115900 then var2 = lowest(L,30); if stime == 122900 then var2 = lowest(L,30); if stime == 125900 then var2 = lowest(L,30); if stime == 132900 then var2 = lowest(L,30); if stime == 135900 then var2 = lowest(L,30); if stime == 142900 then var2 = lowest(L,30); plot1(var1); plot2(var2); --------------------------------------------------------- 재질문요 위에서요 종가가 plot1(var1)보다 높으면 1 종가가 plot2(var2)보다 낮으면 -1 로 만들어 주시면 너무 고맙겠습니다
프로필 이미지
회원
2013-10-01
136
글번호 68005
지표
답변완료

질문입니다.

1. 시스템을 자동주문으로 걸오놓을때 SMS와 복수계좌 선택에 관해 알고싶습니다. 문자서비스는 별도의 비용없이 받아볼수 있는것인가요? 그리고 복수계좌라는 것은 무었인가요? 또한 한 사람의 계좌에 주식계좌와 선물옵션 계좌가 하나가 아닌 여러개가 계설이 가능한지 궁금합니다. 2. 만약에 시스템 트레이딩을 자동으로 실행하고 있다고 할때, 매수, 매수청산, 매도, 매도청산 신호가 나왔을때, 이를 디버깅창에 출력하는 방법이 있을까요? 이를테면 매수가 나오면 1, 매수청산은 2, 매도는 3, 매도청산은 4 이렇게 말이지요. 가능하다면 간단한 코딩 예시를 알고 싶습니다. 그리고 함수 중에 MessageLog, Alert, AlertEnabled, ClearDebug, PlaySound, Print와 같은 출력함수에 관해 그 사용법을 상세히 알고 싶습니다. 설명 부탁드릴께요. 감사합니다.
프로필 이미지
회원
2013-10-01
219
글번호 67991
시스템
답변완료

문의 드립니다...

선물 데이트레이딩하는데 있어서 AD Line을 차트에 띄울려고 하는데 없네요... 지표식이 어떻게 되는지요? 계산식이 이렇던데 이것을 지표로 구현을 못해서요.. ∑[{(종가-저가)-(고가-종가)/(고가-저가)} * 거래량] 보면은 AD Line과 시그널 두개의 선이 있던데 시그널은 AD Line의 이동평균 정도 의미인가 보네요.. 제가 잘 몰라서요..부탁드립니다..
프로필 이미지
머니사이언스
2013-10-01
149
글번호 67989
지표
답변완료

질문입니다.

1.value11,value12,value13은 모두 특정시점의 index를 갖고 있습니다. value11의 index로부터 20봉초과 경과하고 value12 index로부터 10봉초과 경과하고 value13의 index로부터 5봉초과 경과시점을 모두 만족하는 최초의 index를 value14로 지정한다는 수식이 아래의 수식이 맞는지요? 수정부탁드립니다. if value11>0 and value12>0 and value13>0 and (index-value11)>20 and (index-value12)>10 and (index-value13)>5 Then{ value14=index;}
프로필 이미지
회원
2013-10-01
142
글번호 67988
지표
답변완료

시스템 질문입니다

다른 시간대에서 매매횟수를 제한 하고 싶습니다 같은 이평선크로스 전략인데 090001-095959 시간대에서 매수매도 상관없이 N회 100001-115959 시간대에서 매수매도 상관없이 M회 으로 제한 하고싶습니다
프로필 이미지
파인애플
2013-10-01
153
글번호 67987
시스템
답변완료

다시 질문드립니다

이 식을 사용하면 글씨가 여러번 계속해서 나오고 있습니다 삭재가 되지 않습니다 다시 이렇게 수정좀 부탁합니다 하루종일 차트 중앙 상단에 두줄로 글씨만 나왔으면 합니다 시간과 없어지는것 없이 단 한번만요 색깔은 들었갔으면 좋겠습니다 그리고 힘들겠지만 한번 해보시고 올려주세요 input : N(30); var : TM(0); TM = TimeToMinutes(stime)%N; #Text_Delete(var1); if dayindex == 0 or (TM < TM[1]) Then{ var1 = Text_New(sdate,stime,H+PriceScale*5,"AAAAAAAA"); var2 = Text_New(sdate,stime,H+PriceScale*6,"BBBBBBBB"); Text_SetColor(var1,RED); Text_SetStyle(var1,2,2); Text_SetColor(var2,blue); Text_SetStyle(var2,2,2); }
프로필 이미지
정소장
2013-09-30
190
글번호 67986
지표

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

프로필 이미지
회원
2013-09-30
26
글번호 67985
시스템