커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2670
글번호 230811
답변완료
문의드립니다
그림과같이 제가 작성한 수식은 맞지않는것같습니다
PMAX 아래이면 파랑이어야하는데 빨강이고 위에 막대표현된 검색식과는
다르게 나오고 있습니다
전문가님의 손길이 필요합니다
검색식입니다 추운데 감기 조심하시고 노고에 다시한번 감사 드립니다
input : Periods(10),Multiplier(3.0),length(10);
var : src(0),ATRv(0),valpha(0),VARr(0),vud1(0),vDD1(0),vUD(0),vDD(0),vCMO(0);
var : wwalpha(0),WWMA(0),zxLag(0),zxEMAData(0),ZLEMA(0);
var : lrc(0),lrc1(0),lrs(0),TSF(0);
var : MAvg(0),longStop(0),longStopPrev(0);
var : shortStop(0),shortStopPrev(0);
var : dir(0),PMax(0);
src = (h+l)/2;
atrv = atr(Periods);
valpha=2/(length+1);
vud1 = iff(src>src[1],src-src[1],0);
vdd1 = iff(src<src[1],src[1]-src,0);
vUD=AccumN(vud1,9);
vDD=AccumN(vdd1,9);
vCMO=(vUD-vDD)/(vUD+vDD);
VARr = 0;
VARr = (valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*VARr[1];
wwalpha = 1/ length;
WWMA = 0;
WWMA = wwalpha*src + (1-wwalpha)*WWMA[1];
zxLag = IFf(length/2==round(length/2,0) , length/2 , (length - 1) / 2);
zxEMAData = (src + (src - src[zxLag]));
ZLEMA = ema(zxEMAData, length);
lrc = LRL(src, length);
lrc1 = lrc[1];
lrs = (lrc-lrc1);
TSF = Lrc+lrs;
MAvg = ma(src, length);
longStop = MAvg - Multiplier*atrv;
longStopPrev = IFf(isnan(longStop[1]) == true,longStop,longStop[1]);
longStop = iff(MAvg > longStopPrev , max(longStop, longStopPrev) , longStop);
shortStop = MAvg + Multiplier*atrv;
shortStopPrev = IFf(isnan(shortStop[1]) == true,shortStop,shortStop[1]);
shortStop = iff(MAvg < shortStopPrev , min(shortStop, shortStopPrev) , shortStop);
dir = 1;
dir = IFf(isnan(dir[1]) == true,dir,dir[1]);
dir = iff(dir == -1 and MAvg > shortStopPrev , 1 ,IFf(dir == 1 and MAvg < longStopPrev , -1 , dir));
PMax = IFf(dir == 1 , longStop , shortStop);
if CrossUp(MAvg,PMax) Then
Plot1(H,"검색",RED);
if CrossDown(MAvg,PMax) Then
Plot1(L,"검색",BLUE);
2021-11-19
854
글번호 153710
ㅁ
ㅁ
2021-11-18
554
글번호 153708
답변완료
수식 문의
특정 조건을 만족한 경우에 어떤 값이 도출되고,
해당 조건을 다시 만족하기 전까지는 그 값이 유지되는 수식을 알고 싶습니다.
가령 5일 이평선이 20일 이평선을 돌파하는 것이 조건이라고 하고,
그때 도출되는 값은 돌파한 날의 종가라고 할때,
10월 20일에 5일 이평선이 20일 이평선을 한번 돌파하고, 이후에 11월 10일에 다시한번 돌파할 때,
10월 20일부터 11월 9일까지는 10월 20일의 종가가 값으로 유지되고, 11월 10일부터 다음 조건 발생전까지는 11월 10일의 종가로 값이 유지되는 수식을 알고 싶습니다
(10월 20일, 10월 21일, 10월 22일 등등 11월 9일까지 해당 수식의 값은 10월 20일 종가, 11월 10일부터는 다음 조건 만족전까지는 특정일자의 값이 11월 10일의 종가로)
2021-11-18
866
글번호 153707
답변완료
수식문의
수식작성 부탁드립니다
매수:5일 이평과20이평이 골든크로스 2계약 매수
1.매수청산경우:스톡캐스틱 데드크로스시 1차매도1개,5/20이평 데드크로스2차청산1개
단,5/20이평데드시는 2계약전부청산
2.매수청산경우:50틱수익일때 1차매도1개,5/20이평 데드크로스2차청산1개
단,5/20이평데드시는 2계약전부청산
2021-11-18
680
글번호 153706
답변완료
문의드립니다.
LTL = TL_New(소추세전지지날짜,소추세전지지시간,소추세전지지가,소추세지지날짜,소추세지지시간,소추세지지가);
추세선을 그려볼려고 하는데
변수를 만들고
이렇게 작성했는데 변수수치가 완성되는 순간부터나오는게 아니라 한참뒤에부터 그려지더라고요
오랜만에 추세선 그려볼려다보니 모르겠네요.ㅠ.ㅠ 추세선그려지는 것이 변수가 완성되는 순간부터 그려지는 것 아닌가요? 변수가 바뀔 때마다 계속그려지는것 아닌가요?
답변부탁드려요 수고하세요^^
2021-11-18
863
글번호 153705
답변완료
문의 드립니다.
수고많으십니다.
아래수식에 아래 내용으로 수정 부탁드립니다.
현재캔들에서 이전 N번째 캔들들의 최고가 돌파와 최저가 돌파시 매수 매도가 아닌
N번째 캔들 고가 돌파시 종가에 매수, 저가 돌파시 종가에 매도 수식 부탁드립니다.
bx,cx는 매수는 n번째 캔들 저가 돌파시, 매도는 n번째 캔들 고가 돌파시로 해주세요.
감사합니다.
input : n1(5);
input : StartTime(233000),EndTime(013000);
input : 익절틱수(80),손절틱수(0),거래횟수(3);
var : Tcond(false), T(0), entry(0);
Array : H1[50](0),L1[50](0);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (NextBarSdate != sdate and NextBarStime >= EndTime) or
(NextBarSdate == sdate and NextBarStime >= EndTime and stime < EndTime) Then
Tcond = False;
if (NextBarSdate != sdate and NextBarStime >= StartTime) or
(NextBarSdate == sdate and NextBarStime >= StartTime and stime < StartTime) Then
{
T = 0;
Tcond = true;
entry = 0;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true Then
{
if H > Highest(H,n1)[1] and C > O and entry < 거래횟수 Then
Buy("b");
if L < Lowest(L,N1)[1] and C < O and entry < 거래횟수 Then
Sell("s");
if MarketPosition == 1 Then
ExitLong("bx",AtStop,L[BarsSinceEntry]-PriceScale*1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,H[BarsSinceEntry]+PriceScale*1);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2021-11-18
844
글번호 153704
답변완료
지난 N봉동안 교차횟수가 N회이상인 종목
감사합니다.
예를 들어
지난 60봉동안
이평(5), 이평(20)의 교차횟수가
2회 이상인 종목을 검색하는 식을 구합니다.
2021-11-18
688
글번호 153700
답변완료
컴파일 에러 : memory exhausted
수고하십니다. 안녕하십니까!!!
1번.
C:₩예스트레이더₩data₩InterestGroup 내에 있는
관심종목XXX.gup 의 file format과 encoding 방식, 사용 에디터 등을 알고 싶습니다.
2번.
컴파일 에러 : memory exhausted
변수를 아래와 같이 0 ~ 940 까지 분기를 시켰을 때 컴파일하면
가상 메모리 부족이라는 뜻 "memory exhausted" 메시지가 뜹니다.
if buyfilter1 == 0 Then Condition1 = True;
#--------------------------------------------------------------------------------------------
Else if buyfilter1 == 1 Then Condition1 = con31000 == true and con49020 == true;
Else if buyfilter1 == 2 Then Condition1 = con31000 == true and con50000 == true;
Else if buyfilter1 == 3 Then Condition1 = con31000 == true and con56000 == true;
~~~~~~~~~~~~~~~~~~중략
Else if buyfilter1 == 399 Then Condition1 = con31006 == true and con56000 == true;
Else if buyfilter1 == 400 Then Condition1 = con31040 == true and con56030 == true;
~~~~~~~~~~~~~~~~~~중략
Else if buyfilter1 == 798 Then Condition1 = con31900 == true and con56800 == true;
~~~~~~~~~~~~~~~~~~중략
Else if buyfilter1 == 940 Then Condition1 = con31090 == true and con56900 == true;
#--------------------------------------------------------------------------------------------
Else Condition1 = False;
여러 번 테스트 한 결과 변수 1개의 분기 처리 갯수가 400개를 넘지 못하는 것 같습니다.
미봉책으로 399개 단위로 컴파일하고 나머지는 주석처리해서 테스트하고 있는데,
근본적으로 해결할 수 있는 방안을 부탁드리겠습니다.
2021-11-18
647
글번호 153699
답변완료
문의드립니다.
안녕하새요.
매수
무포지션에서 음봉 뒤에 양봉으로 2연속 양봉이 연속 발생하면
매수준비1 이 완성됩니다,
음봉 뒤에 최초 양봉의 시가 = 대양봉의 시가 라고 정의 합니다.
매수준비1 이 성립된 후에 음봉이 발생하면
음봉 바로 직전의 양봉의 종가 = 대양봉의 종가
대양봉 몸통 폭 = 대양봉의 종가 - 대양봉의 시가 라고 정의 합니다
헤제
이 음봉의 종가가 가장 최근에 발생한 양봉중에서 현재봉에서 첫 번째 이전에 발생 된 양봉을 즉
가장 최근의 첫번째의 양봉의 시가를 아래로 깨면 매수준비1 은 성립을 해제 합니다.
이 때의 가장 최근의 첫번째 양봉의 종가를 매수준비가 a 라고 정의 합니다,
매순준비 1 이 계속 유효한 상태에서 음봉이 1회 발생하고 이후에 새로 생기는 양봉의
종가가 매수준비가 a 위에 있으면 매수 합니다.
손절 청산
매수후 발생한 음봉 종가가 매수봉의 시가를 깨면 손절합니다,
청산
매수후에 위에서 구한 대양봉 몸통폭 값만킁 이익이 생기면 이익 청산합니다.
매도
반대논리로 부탁드립니다.
2021-11-18
626
글번호 153691