커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6388
글번호 230811
답변완료
문의 드립니다
1.
Inputs: PercentRLen(10), OverSold(10), OverBought(90), Trigger(62);
Variables: PcntR(0), AvgValue(0), Setup1(False), Setup2(False);
PcntR = PercentR(PercentRLen);
AvgValue = MA(Close, PercentRLen);
If PcntR < OverSold Then
Setup1 = True;
If PcntR > OverBought Then
Setup1 = False;
If PcntR > OverBought Then
Setup2 = True;
If PcntR < OverSold Then
Setup2 = False;
If Setup1 AND AvgValue > AvgValue[1] AND Crossup(PcntR,Trigger) Then Begin
Setup1 = False;
Buy ("%R_LE");
End;
If Setup2 AND AvgValue < AvgValue[1] AND CrossDown(PcntR, Trigger) Then Begin
Setup2 = False;
ExitLong ("%R_SE");
End;
2.
Inputs: PercentRLen(10), OverSold(10), OverBought(90), Trigger(62);
Variables: PcntR(0), AvgValue(0), Setup1(False), Setup2(False);
PcntR = PercentR(PercentRLen);
AvgValue = MA(Close, PercentRLen);
If PcntR < OverSold Then
Setup1 = True;
If PcntR > OverBought Then
Setup1 = False;
If PcntR > OverBought Then
Setup2 = True;
If PcntR < OverSold Then
Setup2 = False;
If Setup1 AND AvgValue > AvgValue[1] AND Crossup(PcntR,Trigger) Then Begin
Setup1 = False;
ExitShort ("%R_LE");
End;
If Setup2 AND AvgValue < AvgValue[1] AND CrossDown(PcntR, Trigger) Then Begin
Setup2 = False;
Sell ("%R_SE");
End;
------------------
1번 수식어에서 40선 아래에서 매수는 매도 전환
2번 수식어에서 40선 위에서 매도신호는 매수전환의
추가 수식어를 부탁합니다.
3.
input : StartTime(160000),EndTime(50000),진입횟수(10);
input : 익절틱수(400),손절틱수(50);
Inputs: Length(15), Pval(0.05);
var : Tcond(False),entry(0);
Variables: Mom(0);
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;
entry = 0;
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 (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
Mom = C- C[Length];
if Tcond == true and entry < 진입횟수 Then
{
If Mom > 0 AND Mom >= Mom[1] AND MarketPosition() <> 1 Then
Buy ("Mom_LE", AtStop, High + Pval);
If Mom < 0 AND Mom <= Mom[1] AND MarketPosition() <> -1 Then
ExitLong ("Mom_SE", AtStop, Low - Pval);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
4.
input : StartTime(160000),EndTime(50000),진입횟수(10);
input : 익절틱수(400),손절틱수(50);
Inputs: Length(10), Pval(0.05);
var : Tcond(False),entry(0);
Variables: Mom(0);
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;
entry = 0;
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 (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
Mom = C- C[Length];
if Tcond == true and entry < 진입횟수 Then
{
If Mom > 0 AND Mom >= Mom[1] AND MarketPosition() <> 1 Then
ExitShort ("Mom_LE", AtStop, High + Pval);
If Mom < 0 AND Mom <= Mom[1] AND MarketPosition() <> -1 Then
Sell ("Mom_SE", AtStop, Low - Pval);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
---------------------------
3번 수식어의 Inputs: Length(15), Pval(0.05);
4번 수식어의 Inputs: Length(10), Pval(0.05);
둘을 단일 수식어에 묶어서
3번은 Inputs: Length(15), Pval(0.05);
4번은 Inputs: Length(10), Pval(0.07);
변경해서 수식어 작성을 하고 싶습니다.
늘 감사드립니다.
2023-09-01
1069
글번호 172030
답변완료
지표 부탁드립니다.
안녕하세요
1. 봉챠트 캔들을 볼때 전환선위로는 음봉이건 양봉이건 상관없이 빨강.
전환선 아래는 파랑색으로만 표시되었으면 합니다.
2 또한 단순 5 이평색상을 전환선 위는 빨강.
전환선 아래는 파랑
3. 전환선에 걸쳐있는경우는 캔들이나, 이평이나 녹색으로 표시 되었으면 합니다
이렿게 지표부탁드립니다.
고맙습니다.
2023-08-31
1104
글번호 172029
답변완료
종목 검색 시 어떻게 수식을 짜야하는지요?
{
if c<(th7-승수*th8)*th9 and
C<th3-승수*th13 and
C< th4-승수*th14 and
C<(th10-승수*th11)*th12 Then
Find(1);
}
예스트레이더에서 위의 4가지 조건을 만족하는 종목을 검색하고 싶습니다.
조건들은 모두 var로 정의해 놨는데, 종목을 검색할 때 어떻게 짜야 되는지요?
이대로 검색하니 엉뚱한 종목들이 함께 검색되고 있어서 어디서 오류가 발생했는지를 모르겠네요.
2023-08-31
1185
글번호 172028
답변완료
수식 부탁드립니다.
1. 종목검색수식에서 주가의 위치가 변동폭의 일정율이하이어야 한다는 조건 수식을
추가하고 싶은데 어케 해야하나요?
A=highest(H,120) ; 최고가
B=lowest(L,120) ; 최저가
최저가대비 최고가의 변동폭이 100%이상이면 현재의 주가는 변동폭의 50%이하이어야 하고
100%미만이라면 70%이하를 만족하는 수익을 만들고 싶습니다
2. DP = DIPlus(Period);
DM = DIMinus(Period);
AX = ADX(Period);
DP[2]-DP[1]차이와 DP[1]-DP의 차이간의 절대치로써 비교하고자 하는 수식을
만들고자하는데 어케 해야하나요?
2023-08-31
1274
글번호 172021
답변완료
문의
국내선물 거래
DayClose(25)를 기준으로 시장을 6등분 하고자 합니다
c < DayClose(25)+maxgap and c > DayClose(25)+mingap
위 식으로 아래 input 변수를 사용하면 되는지요?
DayClose(25)기준 상승범위
input : maxgap(7.50),mingap(0.00);
input : maxgap(15.00),mingap(7.50);
input : maxgap(9999),mingap(15.00);
dayclose(25)기준 하락범위
input : maxgap(0.00),mingap(-7.50);
input : maxgap(-7.50),mingap(-15.00);
input : maxgap(-15.00),mingap(-9999);
2023-09-01
1071
글번호 172017
답변완료
부탁드립니다
하루 매매횟수 1회로 제한하려면 넣는 수식 있을까요? 1차매수기준으로요 totaltrades ==0 넣어도 되나요? 아니면 다른 수식이 있을까요
2023-08-31
1027
글번호 172016
답변완료
수식문의
안녕하세요?
수식 부탁드립니다.
감사합니다.
2023-09-01
1022
글번호 172005
답변완료
nthhighestbar 이거 함수 정상작동 하도록 구현 요청드립니다.
83573 번 문의한 내용답변 잘봤씁니다 그럼 궁금한게 검색식에서 nthhighestbar와 동일한 기능을 하도록 구현하고싶은데 어떻게 구현해야되는지궁금합니다.
작성해주신 내용은 nthhighestbar(1,h,48) 에서만 작동하는데
예를들어 nthhighestbar(3,h,48) 혹은 nthhighestbar(5,c,48) 이런것도
작동하도록 검색식에서 구현하고싶은데 어떻게할지궁금합니다.
안녕하세요
예스스탁입니다.
수식은 계산에 필요한 최소봉수(MaxBarsBack) 이후에 계산을 하게 됩니다.
수식에 NthHighestBar(1,h,period)가 있기 때문에
내부적으로 MaxBarsBack이 48로 고정으로 잡히게 됩어
48개 이상 봉이 없는 종목은 검색되지 못합니다.
아래와 같이 작성하시면 MaxBarsBack를 1로 잡히게 할수 있습니다.
루프로 현재봉에서 첫봉까지 가면서 최고가를 계산하고
이전봉이 48개봉 이전이면 루프를 멈추게 됩니다.
input : period(48);
var : hh(0),cnt(0);
hh = 0;
For cnt = 0 to Index
{
if (hh == 0 or (hh > 0 and h[cnt] > hh)) and cnt < period Then
hh = h[cnt];
#for문 빠져나감
if cnt >= period Then
cnt = Index+1;
}
if h == hh Then
Find(1);
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : 검색함수가 정상작동하지않습니다.
> input : period(48);
var : nflagh(0),nflagCnt(0);
if nflagcnt!= 0 Then
nflagcnt = nflagcnt + 1;
var1 = BarIndex;
if BarIndex+1 >= period Then
{
if NthHighestBar(1,h,period)==0
//&& NthHighestBar(1,h,period)[1]!=0
Then
{
Find(1);
}
}
Else
{
if nflagh < h Then
{
nflagh = h;
nflagcnt = 1;
}
if LastBarOnChart==1 Then
if nflagcnt==1
//&& nflagcnt[1] != 1
Then
Find(1);
}
48봉중 최고가인 검색식을작성했습니다.
신규주나 생긴지 얼마안되는 것은 즉 48봉 미만인경우는 아래 else를타고 48봉 이상이 존재하는 주식은 if 문을 타도록 구현했는데요 지표에서는 잘 작동하는데 검색식으로는
위에 해당하는종목이 검색이안됩니다. 예를들어 오늘 뷰노같은 경우는 아에 검색식에 뜨지 않습니다.
디버깅해보니 NthHighestBar 함수 존재 유무에따라 검색이 되고 안되는 거같은데
이거 NthHighestBar 함수가 파라미터에 들어오는수만큼 없는경우는 검색식인경우 정상작동하지 않는 거같은데요 확인 요청드립니다.
아 해당검색식은 월봉에서 찾는걸로 수행했습니다 월봉상 48벙미만인정목은 해당함수때문에아에검색동닥이안하네요 ㅠㅜ
그리고해당함수에문제가있다면 우회해서 제가짜고싶은로직은 어떻게구현해야하나요?
2023-08-30
1388
글번호 172004
답변완료
부탁드립니다
1. 2개 이상 연속된 양봉이 발생한 후 음봉이 하나 발생하면 해당 봉에 파란색으로, 2개 이상 연속된 음봉이 발생한 후 양봉이 하나 발생하면 해당봉에 빨강색으로 구현해 주세요
2. 종가가 2개 이상 연속된 양봉이고, 가장 최근의 2개 이상 연속된 음봉을 합한 최고가 이상으로 올라가면 파란색으로, 종가가 2개 이상 연속된 음봉이고, 가장 최근의 2개 이상 연속된 양봉을 합한 최저가 이하로 내려가면 빨강색으로 구현해 주세요
고맙습니다.
2023-08-30
1280
글번호 172003