커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

렌코차트 관련 문의드립니다

렌코차트 관련해서 2가지 문의사항이 있습니다. 1. input:단위호가(0.4); var:j(0),벽돌크기(0),벽돌개수(0),방향(0),단기이평(0),중기이평(0),단기가중이평(0),중기가중이평(0), 상승(1),하락(-1),Sum(0),CSum(0); array:고[10](0),저[10](0),렌코[500](0); if index == 0 then { 방향 = 0; 벽돌크기 = 단위호가; 고[0] = C; 저[0] = C; 렌코[0] = C; } #==========================================# # 렌코 계산 #==========================================# if 방향 == 0 then { if 저[0] - 벽돌크기 >= C then { 벽돌개수 = int((저[0]-C)/벽돌크기); 저[0] = 저[0] - 벽돌크기 * 벽돌개수; 방향 = 하락; for j = 499 downto 벽돌개수 { 렌코[j] = 렌코[j-벽돌개수]; } for j = 벽돌개수 - 1 downto 0 { 렌코[j] = 렌코[j+1] - 벽돌크기; } } else if 고[0] + 벽돌크기 <= C then { 벽돌개수 = int((C-고[0])/벽돌크기); 고[0] = 고[0] + 벽돌크기 * 벽돌개수; 방향 = 상승; for j = 499 downto 벽돌개수 { 렌코[j] = 렌코[j-벽돌개수]; } for j = 벽돌개수 - 1 downto 0 { 렌코[j] = 렌코[j+1] + 벽돌크기; } } } else if 방향 == 하락 then { if 저[0] - 벽돌크기 >= C then { 벽돌개수 = int((저[0]-C)/벽돌크기); 저[0] = 저[0] - 벽돌크기 * 벽돌개수; for j = 499 downto 벽돌개수 { 렌코[j] = 렌코[j-벽돌개수]; } for j = 벽돌개수 - 1 downto 0 { 렌코[j] = 렌코[j+1] - 벽돌크기; } } if 저[0] + 2*벽돌크기 <= C then { for j = 8 downto 0 { 고[j+1] = 고[j]; } 방향 = 상승; 벽돌개수 = int((C-저[0])/벽돌크기); 고[0] = 저[0] + 벽돌크기 * 벽돌개수; for j = 499 downto (벽돌개수-1) { 렌코[j] = 렌코[j-(벽돌개수-1)]; } 렌코[벽돌개수-2] = 렌코[벽돌개수-1] + 2*벽돌크기; if 벽돌개수 > 2 then { for j = 벽돌개수 - 3 downto 0 { 렌코[j] = 렌코[j+1] + 벽돌크기; } } } } else if 방향 == 상승 then { if 고[0] + 벽돌크기 <= C then { 벽돌개수 = int((C-고[0])/벽돌크기); 고[0] = 고[0] + 벽돌크기 * 벽돌개수; for j = 499 downto 벽돌개수 { 렌코[j] = 렌코[j-벽돌개수]; } for j = 벽돌개수 - 1 downto 0 { 렌코[j] = 렌코[j+1] + 벽돌크기; } } if 고[0] - 2*벽돌크기 >= C then { for j = 8 downto 0 { 저[j+1] = 저[j]; } 방향 = 하락; 벽돌개수 = int((고[0]-C)/벽돌크기); 저[0] = 고[0] - 벽돌크기 * 벽돌개수; for j = 499 downto (벽돌개수-1) { 렌코[j] = 렌코[j-(벽돌개수-1)]; } 렌코[벽돌개수-2] = 렌코[벽돌개수-1] - 2*벽돌크기; if 벽돌개수 > 2 then { for j = 벽돌개수 - 3 downto 0 { 렌코[j] = 렌코[j+1] - 벽돌크기; } } } } if 방향[1]==하락 and 방향==상승 then plot1(저[0],"렌코차트",Blue); if 방향[1]==상승 and 방향==하락 then plot1(고[0],"렌코차트",RED); plot2(렌코[0],"렌코값",iff(방향==상승,Red,Blue)); 위 수식을 사용해서 렌코 차트를 그리면 plot1 부분은 실제 렌코차트와 비슷하게 나오지만 최근 벽돌 몇개는 그려지지 않고 plot2 부분은 최근 벽돌 끝까지 전부 그려지지만 모양이 들쑥날쑥해서 보기가 불편합니다. plot1을 실제 렌코차트처럼 정확하게 나오는 방법이 있을까요? 2. 렌코차트를 사용하여 포지션 정리를 하려면 어떤 수식을 써야할까요? 포지션 진입은 따로 수식이 있고 손절할때만 사용할겁니다 예) 롱 포지션을 들고있고 벽돌[0] 이 가장 최근, 벽돌[3] 이 뒤로 4번째 벽돌이라고 했을 때, 벽돌[3] & 벽돌[2] 가 상승 벽돌, 벽돌[1] & 벽돌[0] 이 하락 벽돌로 변했을 때 롱 포지션 정리
프로필 이미지
시트
2023-09-29
908
글번호 172807
지표
답변완료

문의 드립니다.

var2 = ema(Ema(Ema(c,period2),period2),period2); 위 테마 수식으로 엔벨로프처럼 테마선을 중심으로 2퍼센트 위에 상단선 2퍼센트 아래에 하단선을 만들어주세요. 퍼센트는 수정이 가능하도록 해주세요.
프로필 이미지
신대륙발견
2023-09-29
655
글번호 172806
지표

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

프로필 이미지
234fsdae
2023-09-29
377
글번호 172805
시스템

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

프로필 이미지
심홍
2023-09-29
7
글번호 172804
종목검색
답변완료

수식요청드려요

스토캐스틱 k선과 d 선 모두 20선 아래잇고, rsi는 50기준선 위에 잇고 5이평선이 20이평선 골드크로스시 매수
프로필 이미지
234fsdae
2023-09-28
770
글번호 172803
시스템
답변완료

문의 드립니다

1. input : StartTime(170000),EndTime(50000); input : 익절틱수(0),손절틱수(30); var : Tcond(False),entry(0); Variables: Mom(0); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } 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); } } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then { Tcond = False; } if Tcond == true Then { if L ==lowest(L,2) and highest(H,2) >= lowest(L,2)+PriceScale*1 Then { Buy("b",AtStop,(highest(H,2)+lowest(L,2))/2); } if MarketPosition == 1 and BarsSinceEntry == 8 Then ExitShort(); } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); 2. input : StartTime(170000),EndTime(50000); input : 익절틱수(0),손절틱수(30); var : Tcond(False),entry(0); Variables: Mom(0); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } 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); } } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then { Tcond = False; } if Tcond == true Then if H == highest(H,2) and lowest(L,2) <= highest(H,2)+PriceScale*1 Then { Sell("s",AtStop,(lowest(L,2)+highest(H,2))/2); } if MarketPosition == -1 and BarsSinceEntry == 8 Then ExitLong(); SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); 3. input : StartTime(210000),EndTime(60000); input : 익절틱수(0),손절틱수(40); var : Tcond(False),entry(0); Variables: Mom(0); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } 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); } } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then { Tcond = False; } if Tcond == true Then { if L ==lowest(L,2) and highest(H,2) >= lowest(L,2)+PriceScale*1 Then { Buy("b",AtStop,(highest(H,2)+lowest(L,2))/2); } if MarketPosition == 1 and BarsSinceEntry == 8 Then ExitShort(); } if H == highest(H,2) and lowest(L,2) <= highest(H,2)+PriceScale*1 Then { Sell("s",AtStop,(lowest(L,2)+highest(H,2))/2); } if MarketPosition == -1 and BarsSinceEntry == 8 Then ExitLong(); SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); 1번 수식어 120선 위 매수신호만 진입 2번 수식어 120선 아래 매도신호만 진입 3번 수식어 1,2번의 합성으로 수정된 수식어 부탁 합니다. 미리 감사드립니다.
프로필 이미지
푸른
2023-10-03
698
글번호 172802
시스템

바닥차기 님에 의해서 삭제되었습니다.

프로필 이미지
바닥차기
2023-09-28
4
글번호 172801
지표
답변완료

수식 부탁드립니다.

안녕하세요. 개발자님 시스템수식 문의드립니다. ---- 사용하는 지표는 스토캐스틱 슬로우입니다. 변수는 fastK : 20 , slowK :12 , slowD : 12 를 사용하고 있습니다. ---- 매수진입조건 "캔들이 마감할때" slowK 가 slowD 를 "상향 돌파" 하였을때 매수 진입, "만약 매도 보유 잔고가 있다면" 청산 후 매수 진입 ---- 매도진입조건 "캔들이 마감할때" slowK가 slowD 를 "하향 돌파" 하였을때 매도 진입, "만약 매수 보유 잔고가 있다면" 청산 후 매도 진입
프로필 이미지
wkehdtks
2023-09-28
921
글번호 172799
시스템
답변완료

문의드립니다.

var : factor(3), AtrPeriod(6); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then direction = 1; if C < LowerBand Then direction = -1; if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; } var : factor(5), AtrPeriod(10); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); if CurrentBar > 1 Then { src = (H+L)/2; alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then direction = 1; if C < LowerBand Then direction = -1; if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; } 2개 지표식은 맨위 변수만 다릅니다. 2개 지표식이 동시에 일치할 때만 매수, 매도가 나오는 시스템 매매식을 만들고 싶습니다. 미리 노고에 감사드립니다~
프로필 이미지
카르마다
2023-09-27
984
글번호 172798
시스템