커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

함수변환요청드립니다.

안녕하세요? 키움에서 사용하였던 수식입니다. 예스트레이더로 사용할 수 있도록 함수 변환 요청드립니다. 크루드 오일 60분봉에 적용하여 써머타임 적용 현재 8시에 완성되는 봉을 기준으로 (써머타임 해제 적용 기간은 9시에 완성되는 봉을 기준으로) 그 봉이 시가 = 고가이면 N번째 이후 봉 시가로 매수 진입이며 시가 = 저가 이면 N번째 이후 봉 시가로 매도 진입하고자 합니다. 진입 후 M번 이후째 봉 시가로 강제청산 하고자합니다. 당일청산입니다. Vars : ii( 0 ), st( 0 ), et( 0 ); V1 = Dayofweek((10000 * Year(D)) + (100 * 3) + 1); If V1 = 0 Then Value2 = 8 Else Value2 = 15 - V1; V2 = Dayofweek((10000 * Year(D)) + (100 * 11) + 1); If V2 = 0 Then Value4 = 1 Else value4 = 8 - V2; If date > (10000 * Year(D)) + (100 * 3) + value2 And date < (10000 * Year(D)) + (100 * 11) + value4 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]; Inputs : Ncount(1), Mcount(1); Vars : Bcond(False), Scond(False), DayIndex_user(0); If condition1 Then Begin If O = H Then Bcond = true Else Begin Bcond = False; Scond = False; End; If O = L Then Scond = True Else Begin Bcond = False; Scond = False; End; DayIndex_user = 0; End; DayIndex_user = DayIndex_user + 1; If Bcond And DayIndex_user = Ncount Then Buy("매수", atmarket); If Scond And DayIndex_user = Ncount Then Sell("매도", atmarket); If BarsSinceEntry >= Ncount + Mcount Then Begin ExitLong(); ExitShort(); End;
프로필 이미지
통큰베팅
2017-10-16
115
글번호 113373
시스템
답변완료

수식에서 조건발생시 당일1회진입 부탁드립니다.

var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0),거래기간(110); Input : af(0.015), maxAF(0.09); Var : value(0); value = sar(af,maxAF); 전환선 = (highest(H,9)+lowest(L,9))/2; 기준선 = (highest(H,26)+lowest(L,26))/2; 후행스팬 = C; 선행스팬1 = (전환선+기준선)/2; 선행스팬2 = (highest(H,52)+lowest(L,52))/2; IF ma(v,거래기간)*10<v and DayVolume>50000 and ma(DayVolume,5)>50000 and 선행스팬1<c and 선행스팬2<c and 기준선 < c and value < c then buy("b"); var1 = (Highest(H, 26) + Lowest(L, 26)) / 2; if MarketPosition == 1 and CrossDown(h,var1) Then exitlong("bx"); SetStopProfittarget(3,PercentStop); SetStopLoss(4,PercentStop); 위 조건에서 10시이전 조건발생시 당일1회 진입만 되게 하고 싶습니다.
프로필 이미지
디얼디어
2017-10-16
117
글번호 113372
시스템
답변완료

문의드립니다

oc Histogram와MACD지표겹치기을하고 MACD선과시그널선 교차시 상승의빨강색 하락의파랑색 잘 부탁드립니다
프로필 이미지
용각산
2017-10-15
113
글번호 113371
지표
답변완료

수식 점검 부탁드립니다.

if sdate >= 지정일 and MarketPosition == 0 and C > HH and (V1 == 0 or V1 >= 150000) and stime == 150000 and C < DayClose(1) and C < O then Buy("매수",OnClose,def,Floor(매수금액/C)); if MarketPosition == 1 Then { if MaxEntries == 5 and C <= AvgEntryPrice*0.75 Then cond = true; if stime == 150000 and C < DayClose(1) and C < O and C < AvgEntryPrice then { if ((cond == false and MaxEntries > 1 and MaxEntries < 5) or (cond == true and MaxEntries > 5 and MaxEntries < 10)) then { Buy("매수1",OnClose,def,Floor(매수금액/C)); } } 위 수식을 적용해 본 결과 음봉이 발생하는 3시에 정상적으로 매수가 되는 것을 확인하였는데요. 문제는 5회까지 분할 매수가 안되고 첫 매수 이후 매수에 대한 매도가 완료되어야 다음 매수 진입을 하네요. 제가 구상한 로직은 아래와 같습니다. - 아 래 - - 매수 시작일 설정 - 1회 매수 금액 500,000원 - 분할 매수 5회(총 2,500,000원)까지 제한 (단, 5회 매수후 주가 지속하락하여 평단가대비 -25% 발생시 재작동하여 다시 5회(총 2,500,000원 + 2,500,000원 = 5,000,000원)까지 분할 매수) ** 코스피(코스닥) 지수가 일봉상 스토캐스틱(20,12,12) 과열권 진입시 신규 매수 제한 (기 보유종목에 대한 매수는 진행) - 30분봉 챠트에 적용하며 전일종가(직전봉이 아닌 날짜상의 전일 종가)보다 낮은 음봉이며 평단가보다 낮은 경우 150000에 매수 끝. 위와 같이 만들어보려 했는데 수정에 수정을 거듭해도 성과가 나질 않아서 부득이 요청드립니다. 고견을 좀 주시면 많은 도움이 되리라 사료되면 늘 감사한 마음 전합니다.
프로필 이미지
승부사1
2017-10-15
116
글번호 113370
시스템
답변완료

이것저것 문의드립니다.

수식왕 예스스탁님 감사합니다 . 1. 시스템관련 미완성 봉 관련해서 질문드립니다. 만약에 갭상승하면 그쪽 방향으로 매수한다·매도한다는 전략을 30분봉에 적용시켰다 하면, 갭상승 신호를 확인한 후 30분 01초에(예를 들어) 진입이 들어간다고 보면 되는 건가요? 만약 갭상승 이후에 상승방향과 완전 다른 하락 방향에 갔다 하더라도 진입신호는 발생했으므로 30분01초가 되면(봉이 완성되면)진입을 하게 되는 건가요? setstoptrailing을 시간대를 다르게 해보니 전부다 다른 시뮬레이션 리포트가 나오더라구요. 제 생각으론 고점 대비 떨어진 수치는 똑같으니까 같은 수익률이 나오지 않을까 생각했는데 아니었습니다. 여전히 개념이 잘 안 잡히네요. 2. 시스템 진입 -a(변수)거래일간 상승률이 50%(변수)인 상태에서 -b% 하락했을 때 진입 청산 진입시점에서 상승률이 c%가 됐을 때 청산 비고: 상승률 거래일 하락후 상승률은 일간으로 해주시되 적용은 1분봉으로 부탁드립니다. 3. 미완성봉에 대해 2 오늘 한번 소액으로 시험매매를 해봤는데요. 30분이 되더니 매수가 들어가고 setstop을 짧게 잡으니 사자마자 바로 청산을 시키더라구요. 시뮬리포트의 우상향 그래프를 보다가 실제와 크게 다른 것을 보니 당황했습니다. 그럼 시뮬레이션 리포트의 계산은 진입시점에 들어갔다 진입시점에 setstop을 했을 것을 가정하고 나서 계산을 하는 것인가요? 반면 실제의 매매의 30분 이후에 매매를 들어가게 되므로 시뮬결과와는 완전히 다르다고 보면 될까요? 자세한 설명을 들었지만 여전히 헷갈립니다. 다른 분들은 그럼 어떤 식으로 사고하고 코딩을 짜고 매매하는 지도 궁금하기도 하구요. 4. 가장 시뮬레이션과 비슷한 결과를 얻고 싶다면 가장 짧은 봉으로 시뮬을 하고 적용을 하면 될까요? 5. 아래와 같은 식은 그럼 미완성이라도 실제 매매가 바로 일어나게 되나요? 아래와 같은 식은 어떻게 가능한 건가요? 원리가 궁금합니다. 아래와 같은 코딩은 시뮬레이션 리포트와 실매매와 비슷하게 나올까요?(물론 차이가 없을 수는 없겠지만 비슷하게는 되는가라는 질문입니다.) Re : 봉 미완성 진입 안녕하세요 예스스탁입니다. 시초가 +0.8이상의 시세발생시 즉시 매수진입 시초가 -0.8이하의 시세발생시 즉시 매도진입 되게 변경했습니다. var : cnt(0),count(0); count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } if count < 1 then{ if MarketPosition == 0 Then{ buy("b",AtStop,dayopen+0.8); sell("s",AtStop,dayopen-0.8); } } SetStopProfittarget(0.55,PointStop); SetStopLoss(0.8,PointStop); SetStopEndofday(150000);
프로필 이미지
잡다백수
2017-10-16
153
글번호 113369
시스템

이섭대천 님에 의해서 삭제되었습니다.

프로필 이미지
이섭대천
2017-10-14
1
글번호 113368
지표
답변완료

함수 요청입니다..

사용자함수에 data2가 들어간 함수를 만들었는데요. 제함수 = 함수내용; 마무리하고 올바로 검증된뒤에 다른 지표식에 넣고 어제 데이터를 불러오려고 (1)를 넣으면 '함수의 입력 값이 필요 없습니다.' 라고 나옵니다. 어떤 곳에 오류가 생기면 이렇게 나오나요?
프로필 이미지
stockric
2017-10-14
112
글번호 113367
사용자 함수
답변완료

이평선변곡

안녕하세요? 첨부한 그림처럼 7이동평균선이 하락하다가 상승전환하는 B점에서 라인이 출력되고 있는데 이동평균선이 -를 유지하다 +로 전환되는 점을 기준으로 A점의 일정틱수(변수)아래 또는 위에 라인출력되도록 부탁드립니다. 예를들면 이평선이 하락하다 상승전환되면 "5틱아래"에 매수신호 상승하다 하락하면 "5틱 아래"에 매도신호 발생되도록 부탁드립니다 현재사용공식은 ~~~ input : P(7); var : mav(0),T(0); mav = ma(C,P); if mav > mav[1] Then T = 1; if mav < mav[1] Then T = -1; if T[1] == 1 and T[1] != T[2] Then var1 = O; if T[1] == -1 and T[1] != T[2] Then var1 = O; if T == 1 Then plot1(var1,"1",RED); if T == -1 Then plot1(var1,"1",blue); 입니다...
프로필 이미지
추세승리
2017-10-16
318
글번호 113359
지표
답변완료

부탁드립니다

아래수식은 당일 최고거래량을 나타내는 지표입니다 여기다 "거래량은 5000개이상"을 삽입해주십시요 var : HV1(0),HH1(0),HV2(0),HH2(0),HV3(0),HH3(0); if Bdate != Bdate[1] then { HV1 = V; HH1 = H; HV2 = 0; HH2 = O; HV3 = 0; HH3 = O; } Else{ if V > HV1 Then{ HV1 = V; HH1 = C; HV2 = HV1[1]; HH2 = HH1[1]; HV3 = HV2[1]; HH3 = HH2[1]; } if V < HV1 and V > HV2 Then{ HV2 = V; HH2 = C; } if V < HV1 and V < HV2 and V > HV3 Then{ HV3 = V; HH3 = C; } } plot1(HH1,"최고거래량고가"); plot2(HH2,"두번째최고거래량고가"); plot3(HH3,"세번째최고거래량고가");
프로필 이미지
매화산삼
2017-10-13
127
글번호 113355
지표