커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

질문드리겠습니다

안녕하세요 몇가지 여쭤보겠습니다 질문1) 아래와 같은 수식에서 1 to (var2-var1)-1 구간의 평균을 value1 에 구해놨는데요,, 1 to (var2-var1)-1 구간에서 value1 값보다 큰 H 값이 나올때마다 저장을하고 (최고가 값을 구하는게 아님) 그 모든 H 값들을 더해서 평균을 구하는 수식을 만들고 싶습니다 감사합니다 var : cnt(0), sum1(0), sumi(0),tt(0),hh(0),ll(0); var : t(0),StartBarIndex(0); Array : ii[50](0),aa[50](0); if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; sum1=0; sumi=0; For cnt = 1 to (var1-Var2)-1 { sum1=sum1+h[cnt]; sumi=sumi+1; } value1=sum1/sumi; if value1>0 then Plot11(value1,"sma",Blue,Def,1); } 질문2) countif 관련 질문인데요 countif 는 현재봉 기준으로 과거 일정 기간동안 조건이 횟수만큼 발생하면 신호가 나오는게 맞지 않나요? 아래 수식과 같이 h>l*1.08 라는 조건문 안에 countif 가 있으면, if CountIf(aa[0] > aa[1]*1.05,5)>=4 이 부분을 어떻게 처리하는건지 궁금합니다 현재봉이 직전봉 (배열) 보다 5%이상 크다 라는 조건이 4회이상 나온다 라는 의도로 작성했습니다. 처음에는 100봉 같이 기간을 길게 잡고 했었는데 5봉 같이 짧은기간에도 나오길레 조건만족봉에서 뒤로 5개봉이내가 아니라 조건만족에 해당한 봉들 5개 이내이며, countif 에 들어간 조건은 h>l*1.08 조건만족 해당할때만 (즉 조건 두가지 모두 만족), 이라는 의미인거 같은데.. 조건에 맞지 않는데도 신호가 나올때가 있어서 헷갈리네요 if h>l*1.08 Then { TL_NEW(sDatE,sTimE,h*1.01,sDatE,sTimE,99999); var1 = Index; Var2 = var1[1]; For cnt = 49 DownTo 1 { aa[cnt] = aa[cnt-1]; } aa[0] = h; if aa[0] > aa[1]*1.05 Then Plot12(h,"aa comp",Green,Def,1); if CountIf(aa[0] > aa[1]*1.05,5)>=4 Then Plot13(h,"CountIf",Red,Def,1); }
프로필 이미지
yamu
2025-01-13
630
글번호 187143
지표
답변완료

안녕하세요

수고하십니다. 챠트에서 상하 여백을 100으로 설정하면 보조지표도 같이 상하 100으로 변경되는데.. 챠트만 상하여백 100되고 보조챠트(거래량 나오는칸) 변경 안되게 하는방법 없어면.. 각각 수정 부탁합니다' 추가로 현재가 기준으로 챠트 중앙에 위치 하도록 하는 기능이 있으면 합니다. (보조툴바에 넣었으면 합니다. 전체적용 일부챠트적용 각각 나누어서..) 피보나치 목적치 값을 볼려고 하면 현재가가 도달해야 보이니 .. 30초 챠트도 지원 부탁합니다.
프로필 이미지
fill
2025-01-13
581
글번호 187142
시스템
답변완료

자동정정주문관련

시장가로 주문 설정을 하였는데 시세급변으로 주문거부가 나서 체결이 안될 경우 설정창에서 자동정정주문을 설정하면 기존 주문은 취소가 되고 해당되는 초 후에 당시의 상대호가 (상대5호까지 설정가능하던데) 설정한 호가에 주문이 다시 나가는 지 궁금합니다. 주문거부에 대한 답변을 메일로 보내드렸습니다. 확인좀 부탁드립니다.
프로필 이미지
산수유
2025-01-13
513
글번호 187135
시스템
답변완료

해외선물 분봉 시스템입니다 .부탁드립니다.

수식 좀 부탁드립니다 도와주시면 제가 그거 보고 연구해서 공부해보겠습니다. 메뉴얼만 봐서는 이해가 잘 안가서요. 해외선물에서 종목 선택 후 시스템을 돌려놓으면 뉴욕장 시작 이후에만 신호가 들어갔으면 합니다. 매수법칙은 -뉴욕장 시작 후 그날의 시가(그날의 시가는 아침의 시가입니다. )를 10분봉으로 종가로 돌파하면 매수입니다. (매수 주문이 나가기 위해서는 시가는 시가 아래에 있어야 하고 종가로 시가를 돌파해야 합니다) -그리고 매수주문이 나가면 그 돌파봉의 저가를 스탑주문으로 자동으로 두게 합니다. -그리고 만약 그 돌파봉의 저가를 종가로 깨게되면 자동으로 매도로 바꾸고 그 도파봉의 고가를 스탑으로 하는 매도주문이 발동됩니다. -이런 스위치는 3회까지만 허용하고 만약 3회 손절 나간경우 그날 거래는 끝이 나게 됩니다. -이익거래의 경우 특정 시간(제가 지정한 시간에(예를들어 새벽 5시)) 자동 청산하게 됩니다. 감사합니다.
프로필 이미지
불비타인
2025-01-13
513
글번호 187128
시스템

관리자에 의해 프로그램 사용법 QnA로 이동되었습니다

프로필 이미지
하날랑
2025-01-13
6
글번호 187127
시스템
답변완료

종목검색식 부탁드림니다.

항상 노고에 감사드림니다. 아래의 수식을 종목검색식으로 부탁드림니다. Crossup(ADX(120),DIMinus(120))
프로필 이미지
존슨비치
2025-01-13
501
글번호 187123
종목검색
답변완료

문의 드립니다

input:length(2),a틱(30),b틱(30),c틱(2); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),Text1(0),process(0),T(0); Array:HH[10,2](0),LL[10,2](0); input : StartTime(100000),EndTime(53000); var : Tcond(false); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; IF Endtime <= starttime Then { SetStopEndofday(0); } } process = 0; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If LL[1,1] > L Then process = -1; If HH[1,1] < H Then process = 1; } Else If Highest(H,length) == H and lastHiVal <> H Then process = 1; Else If Lowest(L,length) == L and lastLoVal <> L Then process = -1; If process == 1 Then { T = 1; lastHiVal = H; If HH[1,2] < LL[1,2] Then { For j = 10 DownTo 2 { HH[j,1] = HH[j-1,1]; HH[j,2] = HH[j-1,2]; } } If HH[1,2] < LL[1,2] or HH[1,1] < H Then { HH[1,1] = H; HH[1,2] = Index; sBar = Index - LL[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } if LL[1,1] > 0 Then { TL1 = TL_New(sDate[sBar],sTime[sBar],LL[1,1],sDate[eBar],sTime[eBar],HH[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],HH[1,1],"+"+NumToStr(abs(HH[1,1]-LL[1,1])/PriceScale,0)); Text_SetStyle(Text1, 2, 1); } Else { Text_Delete(text1); Text1 = Text_New(sDate[eBar],sTime[eBar],HH[1,1],"+"+NumToStr(abs(HH[1,1]-LL[1,1])/PriceScale,2)); Text_SetStyle(Text1, 2, 1); } Text_SetStyle(Text1, 2, 1); } if MarketPosition <= 0 and HH[2,1] >= LL[2,1]+PriceScale*a틱 and LL[1,1] <= HH[2,1]-PriceScale*b틱 and Tcond == true Then Buy("b",AtStop,HH[2,1]+PriceScale*c틱); } If process == -1 Then { T = -1; lastLoVal = L; If LL[1,2] < HH[1,2] Then { For j = 10 DownTo 2 { LL[j,1] = LL[j-1,1]; LL[j,2] = LL[j-1,2]; } } If LL[1,2] < HH[1,2] or LL[1,1] > L Then { LL[1,1] = L; LL[1,2] = Index; sBar = Index - HH[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } if HH[1,1] > 0 Then { TL1 = TL_New(sDate[sBar],sTime[sBar],HH[1,1],sDate[eBar],sTime[eBar],LL[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],LL[1,1],"-"+NumToStr(abs(HH[1,1]-LL[1,1])/PriceScale,0)); Text_SetStyle(Text1, 2, 0); } Else { Text_Delete(text1); Text1 = Text_New(sDate[eBar],sTime[eBar],LL[1,1],"-"+NumToStr(abs(HH[1,1]-LL[1,1])/PriceScale,0)); Text_SetStyle(Text1, 2, 0); } } if MarketPosition >= 0 and LL[2,1] <= HH[2,1]-PriceScale*a틱 and HH[1,1] >= LL[2,1]+PriceScale*b틱 and Tcond == true Then Sell("s",AtStop,LL[2,1]-PriceScale*c틱); } if MarketPosition == 1 and IsEntryName("b") == true Then Sell("bs",AtStop,EntryPrice-PriceScale*50); if MarketPosition == -1 and IsEntryName("s") == true Then Buy("sb",AtStop,EntryPrice+PriceScale*50); 위 수식어에 당일 매매중 70틱 수익에 매매정지를 포함해 주시면 감사하겠습니다.
프로필 이미지
푸른
2025-01-13
682
글번호 187117
시스템
답변완료

수식변환 부탁드립니다

늘 도움 주심에 감사드립니다. 아래와 같이 키움의 한 개의 지표를 예스랭귀지로 변환 부탁드립니다. 감사합니다. 수식1: 중심선=BBandsC(Period,D1); 상단선=BBandsUp(Period,D1); 하단선=BBandsDown(Period,D1); aa=(상단선-하단선)/중심선*k; if(c>중심선,aa,0) 수식2: if(c<중심선,-aa,0) 수식3: if(c<=중심선,aa,0) 수식4: if(c>중심선,-aa,0) 수식5: 중심선=BBandsC(Period,D1); 상단선=BBandsUp(Period,D1); 하단선=BBandsDown(Period,D1); aa=(상단선-하단선)/중심선*k;
프로필 이미지
이큐
2025-01-13
554
글번호 187115
지표
답변완료

종목 검색식 부탁드립니다.

diff = diff + (upvol-downvol); 아래와 같은 당일체결조건을 만족하는 종목검색을 하고 싶습니다 1. 당일 첫봉 ~ 10개봉 평균값 < diff(현재값) 2. 당일 diff값 최저값이 마이너스가 아닌경우
프로필 이미지
허밍스타
2025-01-13
483
글번호 187114
종목검색