커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7634
글번호 230811
답변완료
갭보정식으로부탁드림니다
안녕하세요?
1.갭보정식으로부탁드립니다
Inputs: Length1(10),Length2(3),Length3(3),OverSold(30),OverBought(70);
Variables: KLine(0), DLine(0);
KLine = StochasticsK(Length1,Length2);
DLine = StochasticsD(Length1,Length2,Length3);
If Crossup(KLine, DLine) AND KLine < OverSold AND DLine < OverSold Then
Buy ("Stch_LE");
If CrossDown(KLine, DLine) AND KLine > OverBought AND DLine > OverBought Then
Sell ("Stch_SE");
2.갭보정식으로부탁드립니다
input : P3(5);
var91 = BollBandUp(20,2);
var92 = BollBandDown(20,2);
var93 = ma(c,10);
var94 = MACD(12,26);
var95 = ema(var94,7);
if C < C[1] and var92 < var92[1] and#주가와 볼밴하단 하향
crossup(c,var92) and #종가가 볼댄하단 상향돌파
C > O*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉
crossup(c,ma(c,5)) and # 종가가 5이평 상향돌파
crossup(var94,var95) Then#MACD가 시그널선 상향돌파
buy("bo1");
/
if max(ma(c,5),ma(C,10),ma(C,20)) <= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집
crossup(c,var93) and #종가가 볼댄중심 상향돌파
C > O*(1+P3/100) And #P%이상의 몸통을 가지는 장대양봉
crossup(c,ma(c,5)) and # 종가가 5이평 상향돌파
crossup(var94,var95) Then#MACD가 시그널선 상향돌파
buy("bo2");
if C > C[1] and var91 > var91[1] and#주가와 볼밴상단 상향
CrossDown(c,var91) and #종가가 볼댄상단 하향돌파
C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉
CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈
CrossDown(var94,var95) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파
Sell("sbo1",AtLimit,C);
if max(ma(c,5),ma(C,10),ma(C,20)) <= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집
CrossDown(c,var93) and #종가가 볼댄상단 하향돌파
C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉
CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈
CrossDown(var94,var95) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파
Sell("sbo2");
if max(ma(c,5),ma(C,10),ma(C,20)) >= Min(ma(c,5),ma(C,10),ma(C,20))*1.01 and#3이평이 1%안 밀집
CrossDown(c,var93) and #종가가 볼댄상단 하향돌파
C < O*(1+P3/100) And #P%이상의 몸통을 가지는 장대음봉
CrossDown(c,ma(C,5)) and # 종가가 5이평 하향이탈
CrossDown(var95,var94) and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn Then#MACD가 시그널선 상향돌파
Sell("sbo3",AtLimit,C);
3.갭보정식으로부탁드립니다
Input:Periods(15),Rsi변동폭(20);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
/*
Array:고[20](0),저[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
*/
RsiV = RSI(Periods);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RsiV[1] &&
Rsi고[0][1] - Rsi변동폭 > RsiV Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RsiV;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RsiV[1] &&
Rsi저[0][1] + Rsi변동폭 < RsiV Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RsiV;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 시스템식
#==========================================#
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
Rsi저[1][1] != Rsi저[1][0] &&
Rsi저[2] < Rsi저[1] Then
{
Buy("상승다이버전스");
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
Rsi고[1][1] != Rsi고[1][0] &&
Rsi고[2] > Rsi고[1] Then
{
Sell("하락다이버전스");
}
4.갭보정식으로부탁드립니다
var : MAv(0),BBup(0),BBdn(0)
MAv = ma(C,20);
BBup = BollBandUp(20,2);
BBdn = BollBandDown(20,2);
var: 피봇포인트(0);
피봇포인트 = (DayHigh(1)+DayLow(1)+DayClose(1))/3;
if C > 피봇포인트 and crossup(C, SAR(af, maxAF)[1]) and c>bbup[1] and c[1] <= BBUp[1] then
buy("VL",AtLimit,L);
if C < 피봇포인트 and crossdown(C, SAR(af, maxAF)[1]) and c<bbdn[1] and c[1] >= BBDn[1] then
sell("VS",AtLimit,C);
5.갭보정식으로부탁드립니다
if crossup(c,ma(c,25)) and H>기준선 and CrossUp(C, sar(af,maxAF)) Then
buy("상승");
if CrossDown(c,ma(c,25))and O<기준선[1] and CrossDown(C, sar(af,maxAF)) and c<bbdn Then
Sell("하락",AtLimit,C);
2012-08-29
429
글번호 54168
답변완료
종목검색관련..
가령, 어제종가가 단순이평60일선 위에 있는 종목을 고르고 싶다.. 하면
다음과 같이 작성하면 되는 것 아닌가요?
if c[1] > ma(c,60) Then
find(1);
그런데 보면은 60일선 위에 있는 애들 아래 있는 애들 다 나오네요. 헐.;;
무엇이 잘못된 것인가요?
2012-08-29
288
글번호 54167
답변완료
문의
트레이드스테이션 수식에서,
showlongstop 에 해당하는 예스랭귀지 함수는 어떻게 되나요?
if LastBarOnChart then {
value1 = showlongstop(EntryPrice + entryatr);
value2 = showlongstop(EntryPrice - entryatr);
}
2012-08-28
288
글번호 54165
답변완료
캔들표현이 궁금합니다.
안녕하세요 항상 많은 도움을 받네요
챠트에서 다음의 사항이 표현될수 있다면 지표식을 부탁드립니다.
1.이평선을 돌파하는 캔들만 표시(5일선)
2.종가기준 0.5P 이상 캔들만 표시
3.위 1번2번만 챠트에 나오게 할수 있나요
4.만일 불가능하다면 챠트에서 1번 2번의 내용만 특정색으로 나올게 하는 지표식 부탁드려요
감사합니다.
2012-08-28
342
글번호 54164
답변완료
문의
트레이드스테이션 예제프로그램에 아래표현이 나오는데,
maxtradeclose 에 대체되는 예스랭귀지 표현이 궁금합니다.
if maxtradeclose >= entryprice + breakevenlx*atr Then
감사합니다.
2012-08-28
294
글번호 54163
답변완료
야간선물 시간설정 문의
if stime >= 180100 and stime <= 240000 Then{ ... }
if stime >= 000000 and stime <= 045900 Then{ ... }
이렇게 야간선물시간 설정하면 일단 신호는 다 나오는데
새벽 마감시간에 강제청산을 추가 적용하면 밤12시부터 새벽까지만 신호가 나오고
저녁 18시부터 24시까지 신호는 안나오게 됩니다.
05시 마감시간에 강제청산 적용하고 18시부터 다음날 05시까지 신호가 다 나오게 수식 좀 부탁드립니다
2012-08-28
350
글번호 54162
답변완료
문의드립니다.
일봉상 엔벨로프 5,5 하단선을 실시간으로 3분봉상에 나타낼 수 있는 지표를 작성하고자 합니다.
그리고 3분봉상에서 위에 작성한 지표의 하단선 닿는 경우에 매수 주문을 넣을수 있을까요?
잘부탁드립니다.
2012-08-28
318
글번호 54161
문의드립니다.
현물매매 일봉 조건상 5일선과의 5% 하방으로 이격 발생시 5% 단위로 추가 매수 하려고 합니다. 처음 5일선과의 이격이 5% 발생시 매수는 봉완성시에 되는 것인가요? 아니면 조건 완성시 바로 매수 주문이 발생하는 것인가요?
2012-08-28
221
글번호 54159
답변완료
다시질문
답변 감사히 읽었습니다.
의도한 답은 아니었지만 그 또한 좋은 정보라서 나중에 활용하면 되겠네요.
다름 아니라, 제가 원했던 것은...
"매수신호가 난 시간의 매수가격 - 그당시까지의 당일 최저점" 사이의
거리를 구하는 식을 쓰려면 어떻게 하나요?
이렇게 여쭤본 것은 봉갯수를 알고자 함이 아니라
단순히 가격간의 차이를 구한 식을 여쭌것입니다.
최저점이 100이고 진입가가 101이면 101-100 = 1이 되는 식으로말입니다.
다시한번 부탁드립니다^^
안녕하세요
예스스탁입니다.
if L == daylow Then
var1 = index;
if MarketPosition != 0 Then
value1 = index[BarsSinceEntry]-var1[BarsSinceEntry];
value1이 진입봉의 봉번호에서 진입이전 당일최저가봉의 봉번호를 뺀 값입니다.
봉갯수로 리턴됩니다.
즐거운 하루되세요
> 대단한콩 님이 쓴 글입니다.
> 제목 : 거리계산
> 안녕하세요.
분봉이 데이트레이딩 환경에서(예 5분봉)
50 이동평균선을 돌파하면 매수한다는 식을 쓴 다음
"매수신호가 난 시간의 매수가격 - 그당시까지의 당일 최저점" 사이의
거리를 구하는 식을 쓰려면 어떻게 하나요?
감사합니다.
2012-08-28
291
글번호 54158