커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3362
글번호 230811
답변완료
수식질문드립니다.
저는 시가후에 지정해 놓은 숫자를 돌파하면 매수하는 수식을 만들었습니다. 손절은 SetStopLoss 으로 그 가격에 도달하면 바로 손절을 하도록 테스트를 할수 있는데진입은 봉이 완성되어야만 그가격에 진입이 되어서 "돌파" 보다 위에서 진입가격이 형성되거나 봉완성전에 가격이 다시 내려오면 진입신호가 안나오게 됩니다. 그가격을 지나가기만 하면 돌파 가격에 바로 포지션을 잡는것으로 가정하는 수식을 작성하고 싶은데 방법이 없는지 문의드립니다.#매수진입if crossup(c,dayopen+돌파) && MarketPosition==0 && count < 횟수 then buy("b");SetStopLoss(손절*PriceScale,PointStop);
2025-11-18
155
글번호 228153
답변완료
재질문 드립니다.
안녕하세요.지난 주에 주신 답변 내용으로 시도를 해봤는데, 원하는 결과가 나오지 않고 있습니다.또한, 매수신호인데 "if MarketPosition <= 0 Then"이라는 조건식이 맞는건지 확인부탁드리고 싶습니다.감사합니다아래는 제 질문과 답변에 주신 내용입니다.------------------------------------------저는 가장 기본적인 청산식으로 아래와 같은 함수를 사용합니다. Buy("매수", OnClose, Def, 3); ExitLong("매수익절1", Atlimit, EntryPrice + PriceScale*10, "매수", 1, 1); 그런데 이 청산 방식은 신호 발생한 캔들 바로 다음 캔들 에서는 실행되지 않고, 2번째 캔들 이후부터 실행이 됩니다. 2번째가 아닌 1번째 캔들에서 실행되게 할 수 있는지 여쭤봅니다.감사합니다------------------------------------------안녕하세요예스스탁입니다.진입이 onclose이므로EntryPrice나 MarketPosition 그다음봉 완성시부터 사용이 가능합니다.아래와 같이 처리하시면진입신호 다음봉에서 청산신호를 내실수 있습니다if MarketPosition <= 0 Then ExitLong("매수익절1.", Atlimit,C + PriceScale*10, "매수", 1, 1); Else ExitLong("매수익절1", Atlimit, EntryPrice + PriceScale*10, "매수", 1, 1); 즐거운 하루되세요
2025-11-18
141
글번호 228152
답변완료
부탁드립니다
input : p(10); var : A(Nan),B(Nan),ph(Nan),tx(0); if Highest(H,p)[1]< H Then { A = H; B = 0; } Else { B = B+1; } if B == p and A > H Then { PH = H[p]; } Plot1(ph,"ph"); FixPlotShift(1,2); if ph[2] != ph[3] Then { tx = Text_new(sDate,sTime,ph,NumToStr(ph,2)); Text_SetStyle(tx,2,1); } 위의것을 지수이평으로 부탁드립니다
2025-11-18
128
글번호 228151
답변완료
문의 드립니다.
안녕하세요 ~ 평소 많은 도움 주심에 감사드립니다. RSI(5)가 70 이상일떼에, 현재가격이 아래의 1, 2번 항/라인을 동시에 Crossup 하거나, 1번라인이 2번라인을 Crossup하는 종목의 검색식을 부탁 드립니다. 1번. 13일 단순 가격 이평선 2번. (highest(high,24)+lowest(low,24)+highest(high,8)+lowest(low,8)+highest(high,49)+lowest(low,49))/6감사합니다.
2025-11-18
195
글번호 228146
답변완료
수식부탁드립니다
1. 꼬리가 캔들의 2/3 이상 일때 양봉아래에 (빵강점), 음봉위에 (파랑점)이 생기게 부탁드립니다 2. 꼬리가 캔들의 4/5 이상 일때 양봉아래에 (빵강점), 음봉위에 (파랑점)이 생기게 부탁드립니다위의 두 경우 모두 한 차트에서 표시 되도록 부탁드립니다
2025-11-18
139
글번호 228143
답변완료
문의합니다..
아래 수식 지표식으로
캔들차트에서 사용하던 지표값들을 계산하여
포지션 시스템 요청드립니다..
감사합니다..
input:renkoSize(0.5);
var:j(0),k(0),renkoCnt(0),gubun(0),
printOK(False), //데이터 검증을 위해 출력해보고 싶으면 true로 바꿔주면 됨
filename("renko.txt"); //파일은 C:\예스트레이더\YesLang\ 폴더에 생긴다.
array:OO[50](0),HH[50](0),LL[50](0),CC[50](0);
If DayIndex == 0 Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산
gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산
For j = 49 DownTo 1 { //금일 시가봉을 신규 추가
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
HH[0] = C;
LL[0] = C;
CC[0] = C;
}
Else {
If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점
If OO[0] - renkoSize >= C Then { //위 루틴에서 1개봉을 추가했으므로 여기서는 추가없이
gubun = -1; //상방향,하방향에 따라 값만 세팅
CC[0] = OO[0] - renkoSize;
HH[0] = OO[0];
LL[0] = CC[0];
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
Else If OO[0] + renkoSize <= C Then {
gubun = 1;
CC[0] = OO[0] + renkoSize;
HH[0] = CC[0];
LL[0] = OO[0];
j = 0;
if printOK then print(filename,"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
If LL[0] - renkoSize >= C Then { //아래 방향으로 렌코 형성
gubun = -1;
renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); //추가될 렌코 개수
if renkoCnt > 49 then renkoCnt = 49; //오류방지를 위한 방어코드
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = LL[j+1];
CC[j] = LL[j+1] - renkoSize;
HH[j] = OO[j];
LL[j] = CC[j];
if printOK then print(filename,"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If HH[0] + renkoSize <= C Then { //위 방향으로 렌코 형성
gubun = 1;
renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = HH[j+1];
CC[j] = HH[j+1] + renkoSize;
HH[j] = CC[j];
LL[j] = OO[j];
if printOK then print(filename,"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If Time >= 151500 Then { //당일 종가봉에서,
For j = 49 DownTo 1 {
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
If LL[1] > C Then { //종가가 이전 봉보다 아래 형성
OO[0] = LL[1];
CC[0] = C;
HH[0] = OO[0];
LL[0] = CC[0];
} Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성
OO[0] = HH[1];
CC[0] = C;
HH[0] = CC[0];
LL[0] = OO[0];
} Else { //종가가 이전 봉의 중간에 형성
OO[0] = C;
CC[0] = C;
HH[0] = C;
LL[0] = C;
}
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
If OO[0] > 0 Then Plot1(OO[0],"OO");
If CC[0] > 0 Then Plot2(CC[0],"CC");
2025-11-18
289
글번호 228138
wscamtk 님에 의해서 삭제되었습니다.
2025-11-18
1
글번호 228137
답변완료
문의 드립니다.
도움에 감사 드립니다.사용자 함수를 만들려고 하지만 되지 않습니다."사용자함수 내에서 Function - End Function 구문을 사용할 수 없습니다" 라고 뜹니다"사용자 함수로 부탁 드립니다.미리 감사 드립니다. input : len(88),mult(2.0);var : src(0),crr(0),k(0),sum(0),i(0),dev(0);var : nmid(0),nupper(0),nlower(0);var : upper(0),lower(0);Array : dizii[500](0);src = (h+l+c)/3;Function cr Numeric input : x(Numeric),y(Numeric); var : z(0),weight(0),i(0); z = 0.0; weight = 0.0; for i = 0 to y - 1 step 1 { z = z + x[i] * ((y - 1) / 2 + 1 -abs(i - (y - 1) / 2)); } cr = z / ((y + 1) / 2 * (y + 1) / 2);EndFunctioncrr = cr(src, 2 * len - 1);for k = 0 to len - 1 step 1{ sum = 0.0; for i = 0 to 2 * len - 2 - k step 1 { sum = sum + (len - abs(len - 1 - k - i)) * src[i] / (len * len - k * (k + 1) / 2); } dizii[k] = sum;}dev = mult * std(src, len);nmid = wma(src, len);nupper = nmid + wma(dev,len);nlower = nmid - wma(dev,len);upper = crr + cr(dev, 2 * len - 1);lower = crr - cr(dev, 2 * len - 1);var1=(upper+lower)/2;
2025-11-17
186
글번호 228136
답변완료
볼밴드
월봉에서 년봉 검색식으로 볼린져 5밴드가 상단 하단 반전 되는 종목 검색 부탁드립니다 상단하단 반전이 계속 유지되면 계속 검색이 될수 있게 해주세요
2025-11-17
165
글번호 228135