커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

수고합니다. 틱봉 갯수 관련으로 종목검색 문의 및 답변을 받았는데 틱봉 관련 추가 종목검색식 요청드립니다. 1. 금일만 누적 틱봉(예:30틱) 갯수가 전일(09:00~15:00)전체의 틱봉(예:30틱)보다 큰 종목 검색(검색 실행 시간은 임의의 현재 시간입니다.) 2. 금일 장시작 이후 임의의 시간까지(예 09:10) 틱봉(예:30틱) 갯수가 전일(09:00~15:00)전체의 틱봉(예:30틱)보다 큰 종목 검색(검색 실행 시간은 임의의 현재 시간입니다.)
프로필 이미지
영삼이
2015-11-13
154
글번호 92397
종목검색
답변완료

시스템식 일부 검토 부탁드립니다.

안녕하세요. 아래 전체시스템식 중 다음 일부분이 오류가 납니다. ----------------------------------------------------------------------- # data2의 1일전 대비 등락율 D2rate = data2((C-CloseD(1))/CloseD(1)*100); # data2 등락률이 전일대비하락률 이하이면 투매시 매수금액으로 매수 # 투매매수금액은 전략매수금액의 1/2만 매수 if D2rate <= 전일대비하락 Then { 전략매수금액 = 투매매수금액; 투매매수금액 = 전략매수금액*0.5; } ----------------------------------------------------------------------------- 즉, 지수가 -3% 이상 하락시 전략매수금액을 모두 매수하는 것이 아니라, 보수적으로 매매를 하기 위해 전략매수금액의 1/2만 매수하기 위한 식입니다. 그런데, "값을 대입할 수 있는 변수나 배열의 요소, 입력변수, 입력변수 배열의 요소가 와야 합니다." 라는 오류 메세지가 나오는데 검토 부탁드립니다. 또는 다음과 같이 수정을 해도 오류가 나네요. if D2rate <= 전일대비하락 Then { 전략매수금액 = 전략매수금액*0.5; } 전체 시스템식은 아래와 같습니다. ---------------------------------------------------------------------------- ## 지수데이타를 참조하여, 매수비중을 달리함. ## 하향추세 판단을 15일선과 120일선의 위치를 비교하여 판단함. ## 시간제한 있음. ## 외부변수 설정 ## input : 전략시작일자(20150105), 전략시작시간(090000), 전략매수금액(1500); input : 전략종료일자(20161230); input : 악재시갭하락(5), 악재보정계수(5), 이평보정계수(1), 전일대비하락(-3), 지수보정계수(2); input : 매수위치보정(1), 매수기준엔벨(5); input : 매수위치1차(5), 매수위치2차(5), 매수위치3차(10); input : 매도위치1차(5), 매도위치2차(10); input : 전략진입횟수(100); input : 타점보유일수(5); input : 매수비중1차(30), 매수비중2차(35), 매수비중3차(35); input : 매도비중1차(50), 매도비중2차(50); ## 내부변수 설정 ## var : sum(0,data1),mav(0,data1),cnt(0,data1),eup(0,data1),edn(0,data1); var : Didx(0,data1),LatestEntryDidx(0,data1),Ecnt(0,data1); var : TimeCond(false,data1),Xcond1(false,data1),Xcond2(false,data1),Loss(0,data1),LatestEntrylow(0,data1); var : Period(0,data1),매수1차(0,data1); var : cum1(0,data1),cum2(0,data1),ma1(0,data1),ma2(0,data1),ma3(0,data1); var : D2rate(0,data2), 투매매수금액(0,data1); # 일자수 계산 if date != date[1] Then Didx = Didx+1; # 일봉 120이평 계산 cum1 = 0; for cnt = 1 to 119 { cum1 = cum1+DayClose(cnt); } ma1 = cum1/120; # 일봉 15이평 계산 cum2 = 0; for cnt = 0 to 14 { cum2 = cum2+DayClose(cnt); } ma2 = cum2/15; # 기본값은 기간은 P, %는 매수위치1차 Period = 매수기준엔벨; 매수1차 = 매수위치1차; # 악재가 발생하여 갭하락하면 # 기간은 기존 Period값 + 악재보정계수 # %는 기존 매수1차값에 + 악재보정계수 if dayopen < DayClose(1)*(1-악재시갭하락/100) Then { Period = Period + 악재보정계수; 매수1차 = 매수1차 + 악재보정계수; } # 15일 이평이 120이평 아래에 있으면 (또한 지정한 기간의 일봉데이타가 있으면) # 기간은 기존 Period값+이평보정계수 # %는 기존 매수1차값에 + 이평보정계수 if ma2 < ma1 and DayClose(120+1) > 0 Then { Period = Period + 이평보정계수; 매수1차 = 매수1차 + 이평보정계수; } # data2의 1일전 대비 등락율 D2rate = data2((C-CloseD(1))/CloseD(1)*100); # data2 등락률이 전일대비하락률 이하이면 투매시 매수금액으로 매수 # 투매매수금액은 전략매수금액의 1/2만 매수 if D2rate <= 전일대비하락 Then { 전략매수금액 = 투매매수금액; 투매매수금액 = 전략매수금액*0.5; } # 당일포함 일봉 Period개의 종가를 누적 sum = 0; for cnt = 0 to Period-1 { sum = sum+DayClose(cnt); } # 누적값을 Period로 나누어 평균값 산출 mav = sum/Period; # 엔벨로프 상단 계산 Eup = mav+mav*(매수1차/100); # 엔벨로프 하단 계산 Edn = mav-mav*(매수1차/100); # 지정일 지정시간이 되면 TimeCond는 True(그전에는 false) if sdate == 전략시작일자 and (stime == 전략시작시간 or (stime > 전략시작시간 and stime[1] < 전략시작시간 )) then TimeCond = true; if sdate > 전략종료일자 Then TimeCond = false; ########################################################################################################################### ### TimeCond가 True가 된 후 ### if TimeCond == true then { if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "1차매수" Then Ecnt = Ecnt+1; # 무포지션 상태에서 매수위치1차에 도달하면 매수 if MarketPosition == 0 and Ecnt < 전략진입횟수 and stime < 144200 Then buy("1차매수",atlimit,Edn*(1+매수위치보정/100),Floor((전략매수금액*10000/c)*(매수비중1차/100))); ## 첫매수이후 ## if MarketPosition == 1 Then { # 추가진입이 발생하면 1차매도가 다시 발생할수 있도록 false로 초기화 if CurrentContracts > CurrentContracts[1] Then Xcond1 = false; # 최근 진입시점의 일자수 저장 if CurrentContracts > CurrentContracts[1] Then { LatestEntryDidx = Didx; LatestEntrylow = L; } # 1차매수 발생 후 매수위치2차에 도달하면 매수 if MaxEntries == 1 and stime < 144200 Then buy("2차매수",atlimit,Edn[BarsSinceEntry]*(1-매수위치2차/100),Floor((전략매수금액*10000/c)*(매수비중2차/100))); # 1차매수 발생 후 매수위치3차에 도달하면 매수 if MaxEntries == 2 and stime < 144200 Then buy("3차매수",atlimit,Edn[BarsSinceEntry]*(1-매수위치3차/100),Floor((전략매수금액*10000/c)*(매수비중3차/100))); # 1차매도가 한번 발생하면 더이상 발생못하도록 Xcond1은 true if CurrentContracts < CurrentContracts[1] and (LatestExitName(0) == "1차매도") then Xcond1 = true; # 2차매도가 한번 발생하면 더이상 발생못하도록 Xcond2는 true if CurrentContracts < CurrentContracts[1] and (LatestExitName(0) == "2차매도") then Xcond2 = true; # Xcond1이 false일때 # 진입이후 최저가에서 매도위치1차 만큼 상승하면 일부 청산 if Xcond1 == false and stime < 144200 Then exitlong("1차매도",Atlimit,lowest(L,BarsSinceEntry)*(1+매도위치1차/100),"",Floor(MaxContracts*(매도비중1차/100)),1); # Xcond2가 false일때 # 진입이후 최저가에서 매도위치2차 만큼 상승하면 전량청산 if Xcond2 == false and stime < 144200 Then exitlong("2차매도",Atlimit,lowest(L,BarsSinceEntry)*(1+매도위치2차/100)); # 최근 진입후 보유일수 이상 경과(현재 일자수가 최근진입시점의 일자수보다 보유일수 이상 증가) if Didx >= LatestEntryDidx+타점보유일수 and Xcond1 == false and CurrentContracts == CurrentContracts[1] Then { # 최근 진입이후 보유일수가 되었을때의 최근진입일 포함 보유일수동안 최저가 계산 if date != date[1] and Didx == LatestEntryDidx[BarsSinceEntry]+3 Then { Loss = daylow(1); for cnt = 1 to (타점보유일수-1) { if daylow(cnt) < Loss Then Loss = daylow(cnt); } } # Loss값 이하로 가격하락하면 전량 청산 exitlong("손절",AtStop,Loss); } # 최종 매수일 포함 5일경과되면 다음날 시가에 매도 if Didx == LatestEntryDidx+(타점보유일수-1) and stime == 150000 Then { exitlong("익절1",AtMarket); } # 1차매도가 발생한 상황 # 가장 최근 진입일의 당일최저가보다 낮은 시세 발생하면 전량청산 # if L < LatestEntrylow and Xcond1 == false Then # LatestEntrylow = L; # if Xcond1 == true and CurrentContracts == CurrentContracts[1] Then { # exitlong("익절2",AtStop,LatestEntrylow); # "익절2"는 상황에 따라 적용유무를 달리함. # } } # 105번행 # 첫매수이후 if MarketPosition == 1 Then { 의 괄호를 닫아 줌. ## 매수포지션이 아니면 false로 초기화 ## else { Xcond1 = false; Xcond2 = false; } } # 96번행 # TimeCond가 True가 된 후 if TimeCond == true then { 의 괄호를 닫아 줌.
프로필 이미지
종풍화성
2015-11-13
182
글번호 92395
시스템
답변완료

글번호 45008 재질문

아래의 함수 요청드립니다. # 당일에만 전일의 고가와 저가를 표시하고자 합니다 여기서 당일, 전일이 날짜변경에 의한 하루 개념이 아니라 해외선물의 거래시간입니다. 써머타임 : 7:00~6:00 써머타임 종료 : 8:00~7:00
프로필 이미지
통큰베팅
2015-11-13
142
글번호 92394
지표
답변완료

수식요청드립니다.

안녕하세요. 틱봉 주기 차트에서 장시작 후 연속해서 3개의 양봉 발생시 다음봉 시가에 매수 진입 당일청산 연속해서 3개의 음봉 발생시 다음봉 시가에 매도 진입 당일청산 수식 요청 드립니다.
프로필 이미지
dandy
2015-11-13
140
글번호 92384
시스템
답변완료

부탁드립니다.

1. 시스템식에서 MDD의 개념을 도입할 수 있는지요. 2. 있다면 기존의 MDD와는 좀 다른 SMDD를 설정해보고 싶은데요. 누적수익이 전고잠을 돌파하면 SMDD는 0이 되고(그동란 발생한 MDD는 무시) 그때부터 새로 SMDD를 계산. 즉 SMDD=누적수익곡선최고점-현재의 누적수익 SMDD가 N이하이면 1개 진입 N초과이면 2개 진입 3. 위의 SMDD를 지표식으로 나타낼 수는 없는지요.
프로필 이미지
묘선낭자
2015-11-13
146
글번호 92383
시스템
답변완료

문의드립니다

input : Left(4),Right(4),Left1(4),Right2(4) ; var : SHcount(0),SHdate(0),SHtime(0),SHvalH(0),SHcount1(0),SHdate2(0),SHtime3(0),SHvalH4(0),TL1(0); var : PreSHdate(0),PreSHtime(0),PreSHvalH(0),Shidx(0),PreSHdate1(0),PreSHtime2(0),PreSHvalH3(0),Shidx4(0),TL2(0); var : TL11(0),TL12(0); var : TL21(0),TL22(0); if Swinghigh(1,h,Left,Right,Left+Right+1) != -1 Then{ SHcount = SHcount +1; SHdate = sdate[Right]; SHtime = stime[Right]; SHvalH = h[Right]; PreSHdate = SHdate[1]; PreSHtime = SHtime[1]; PreSHvalH = SHvalH[1]; if Shcount >= 2 Then{ { TL1= TL_New(PreSHdate, PreSHtime, PreSHvalH, SHdate,SHtime,SHvalH); TL_SetColor(TL1,RED); TL_SetSize(TL1,1); TL11 = TL_New(PreSHdate, PreSHtime, PreSHvalH, SHdate,SHtime,PreSHvalH); TL_SetColor(TL11,RED); TL_SetSize(TL11,1); } TL_Delete(TL12); TL12 = TL_New(SHdate, SHtime, SHvalH, Sdate,Stime,SHvalH); TL_SetColor(TL12,RED); } 질문1 ( TL11 ) 이분분라인값과 바로이전라인값과 &#48820;기하여지표화하고 TL11 = TL_New(PreSHdate, PreSHtime, PreSHvalH, SHdate,SHtime,PreSHvalH); 질문2 ( TL11 )의 이동평균 20을 만들고 십습니다 부탁드립니다 감사합니다
프로필 이미지
파파리리
2015-11-13
172
글번호 92382
지표
답변완료

문의 드립니다.

1. 전에 질문한 내용입니다. 날짜가 바뀌면 전일 마지막 봉부터 N(20)번째 봉의 value값을 오늘 첫 봉의 value값으로 바꿔주고 싶습니다. value = ~~~;#value계산식 if date != date[1] Then value = value[20]; 위와 같이 답변을 주셨는데 제 질문과 반대의 식입니다. input : N(20); var : value(0); array : kv[20](0); value = ~~~;#value계산식 kv[1] = (value+(var1*var2)); kv[2] = (value+(var1+var2)); 이런 수식일 때 날짜가 바뀌면 value[20] = 첫봉의 value값; value[19] = 첫봉의 value값; value[18] = 첫봉의 value값; . . . value[1] = 첫봉의 value값; 이런식으로 과거의 계산값을 오늘 첫봉의 값으로 치환해서 kv를 변경하고 싶은건데요. 어떻게 처리해야 원하는 결과를 얻을 수 있을까요? 2. 시세를 감시하다가 박스가 나오면 박스를 돌파할 때 차트에 표시하는 지표식과, 시스템식을 알고 싶습니다. 당일 고저와는 상관없이 N틱 이내의 진폭을 만들고, 그 진폭안에서 작은 박스를 만들고 박스 안에서 m틱 이상의 진폭이 3번 이상 나왔을 때, 차트에 표시하는 지표식 부탁 드립니다. 유로 3분차트를 보시면 (기준시간 : 서울/도쿄) 18시 18분부터 박스를 만듭니다. N틱 30틱 이내에서 M틱 10틱 정도의 움직임이 반복됩니다. M틱의 움직임이 3번 이상 나왔을 때 차트에 표시하고 싶습니다. 진입식은 M틱의 움직임이 3번 이상 나온 후, N틱의 고가나 저가를 돌파할 때 입니다. N틱 이내의 박스를 고가 돌파에 매수했으면 저가 이탈에 손절입니다. 부탁 드립니다. 행복한 주말되세요.
프로필 이미지
고운무지개
2015-11-13
167
글번호 92379
지표
답변완료

지표식

안녕하세요~ 간단한 지표식 부탁합니다. 60일 지수이평값이 최저가에서 상승하는값의 차이가 5틱이면 1의값 10틱이면 2의값 15틱이면 3의값을 주고싶습니다. 수고하세요~
프로필 이미지
느림
2015-11-13
136
글번호 92378
지표
답변완료

수식 부탁합니다

스토캐스틱 골든크로스만 특정시간에 걸쳐 검색할수 있나요 예를 드러 10/1일 부터 10/20일 기간 중에 아침 10시 부터 14시 사이에 발생한 골든크로스만 나타나는 지표식 부탁합니다 특정기간 동안 특정시간에 발생한 골든크로만 나타나는 지표식 부탁합니다
프로필 이미지
미래테크
2015-11-13
126
글번호 92377
지표