커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5440
글번호 230811
답변완료
도움을 요청합니다.
안녕하세요?
늘 도음주셔서 마음깊이 감사드립니다.
아래 수식을 항생에 적용하는데요
모든 수식의 데이터를 본장시간(09:15)을 기준으로 적용되도록 부탁드려봅니다.
가급적이면 본장외 데이터는 제외해도 좋습니다.
거듭 감사드리면서 오늘도 좋은시간 보내세요.
======================================
input : N(2),Pre(0);
var : HH(0),LL(0),cnt(0);
var : sum(0),mav(0);
HH = 0;
LL = 0;
sum = DayOpen(Pre+0);
For cnt = Pre+0 to Pre+N-1
{
if HH == 0 or (HH > 0 and DayHigh(cnt) > HH) Then
HH = DayHigh(cnt);
if LL == 0 or (LL > 0 and DayLow(cnt) < LL) Then
LL = DayLow(cnt);
if cnt > pre+0 Then
sum = sum + DayClose(cnt);
}
mav = sum/N;
Plot1(HH, "TOP");
plot2(LL, "BOT");
plot3((HH+LL)/2, "중심선");
plot4((HH+LL)/2*0.075, "중심선+0.75");
plot5((HH+LL)/2*0.025, "중심선-2.5");
plot6(((HH+LL)/2 + (DayHigh(0)+DayLow(0))/2)/2 , "둘둘둘");
plot7(((HH+LL)/2 + (DayHigh(0)+DayLow(0))/2)/2+0.075 , "둘둘둘+0.75");
plot8(((HH+LL)/2 + (DayHigh(0)+DayLow(0))/2)/2-0.025 , "둘둘둘-0.25");
plot9((DayHigh(0)+DayLow(0))/2,"당일중심");
plot11(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.20,"20.0");
plot12(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.25,"25%");
plot13(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.382,"38.2%");
plot14(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.500,"50.0%");
plot15(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.618,"61.8%");
plot16(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.75,"75%");
plot17(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.80,"80%");
plot18(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.50+2.10,"+2.10%");
plot19(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.50-2.10,"-2.10%");
plot20(mav,"N일이평시초가값");
plot21(DayOpen,"시가");
plot22(C,"종가값");
plot23(DayHigh,"고가값");
plot24(DayLow,"저가값");
plot25(DayHigh(0)-(DayHigh(0)-DayLow(0))*0.50,"당일50%");
plot26((DayHigh(0)+DayLow(0))/2+1.5,"당일중심+2.0");
plot27((DayHigh(0)+DayLow(0))/2-1.5,"당일중심-2.0");
plot28((DayHigh(0)+DayLow(0))/2+0.4,"당일중심+0.4");
plot29((DayHigh(0)+DayLow(0))/2-0.4,"당일중심-0.4");
Plot30(HH+3, "TOP+10");
plot31(LL-3, "BOT-10");
2024-04-10
1250
글번호 178451
답변완료
수식전환
수고많으십니다 항상 감사드립니다 아래 4개의 타사 신호수식을 4개의 예스랭귀지 강조신호수식으로 변환 좀 부탁드립니다 타사 경우 4개 아니라 10개라도 화살표등으로 표시할수 있지만 예스에서도 가능한지 궁금하고 여러개도 화살표등으로 표시할수 있으면 좋겠네요^^
신호1-매물대고가돌파
A=H-L;
B=Max(C,O)-L;
조건=A/B>배수&&H/C(1)>(1*상승률/100);
기준가=Valuewhen(1,조건,H);
CrossUp(C,기준가)
신호2-매물대고가돌파+기준V돌파
A=H-L;
B=Max(C,O)-L;
조건=A/B>배수&&H/C(1)>(1*상승률/100);
기준가=Valuewhen(1,조건,H);
기준V=Valuewhen(1,조건,V);
CrossUp(C,기준가)&&V>기준V
신호3-매물대고가돌파+봉수제한
A=H-L;
B=Max(C,O)-L;
조건=A/B>배수&&H/C(1)>(1*상승률/100);
기준가=Valuewhen(1,조건,H);
기준V=Valuewhen(1,조건,V);
봉수=Barssince(조건);
CrossUp(C,기준가)&&봉수<제한봉수
신호4-매물대고가돌파+누적V돌파
Sv=sum(V);
A=H-L;
B=Max(C,O)-L;
조건=A/B>배수&&H/C(1)>(1*상승률/100);
기준가=Valuewhen(1,조건,H);
누적V=Sv-Valuewhen(1,조건,Sv(1))-V;
기준V=Valuewhen(1,조건,V);
C>기준가&&CrossUp(V,누적V)
//PLOTPAINTBAR(어쩌고 저쩌고,,,이게 안됩니다 ㅋ)
2024-04-10
1638
글번호 178450
답변완료
문의 드립니다
input : StartTime(70000),EndTime(55000),Xtime(55500);
var : Tcond(false),entry(0);
var : B1(0),B2(0),BX1(0),BX2(0);
var : S1(0),S2(0),SX1(0),SX2(0);
if sdate != sDate[1] Then
SetStopEndofday(Xtime);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
SetStopEndofday(0);
entry = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
B1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.200;
BX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.990;
S1 = DayHigh(1)+(DayHigh(1)-DayLow(1))*0.382;
SX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.236;
if Tcond == true Then
{
if (MarketPosition == 0 or (MarketPosition == 1 and MaxEntries == 1)) Then
{
if entry < 5 and L > B1 Then
Buy("b1",AtLimit,B1);
}
if MarketPosition == 1 Then
{
ExitLong("bx1",AtLimit,BX1,"B1");
}
if (MarketPosition == 0 or (MarketPosition == -1 and MaxEntries == 1)) Then
{
if entry < 5 and H < S1 Then
Sell("S1",AtLimit,S1);
}
if MarketPosition == -1 Then
{
ExitShort("sx1",AtLimit,SX1,"S1");
}
SetStopProfittarget(PriceScale*0,PointStop);
SetStopLoss(PriceScale*500,PointStop); }
진입 청삼 1회로 수정 부탁드립니다.
2024-04-10
1772
글번호 178449
답변완료
부탁드립니다.
input : conv(50),length(20);
var : src(close),maxv(0),minv(0),diff(0),psi(0);
src = c;
maxv = iff(isnan(maxv[1]) == true, src, max(src, maxv - (maxv - src) / conv));
minv = IFf(isnan(minv[1]) == true, src, min(src, minv + (src - minv) / conv));
diff = Log(maxv - minv);
psi = -50 * correlation(diff, index, length) + 50;
if psi <= 80 Then
{
plot1(psi, "PSI1");
NoPlot(2);
}
Else
{
NoPlot(1);
plot2(psi, "점");
}
PlotBaseLine1(80);
=======================
위 지표에서 psi가 80미만이고 dmi지표에서 dp(플러스)가 dm(마이너스)보다 클때 매수
psi가 80이상일 때 매수 청산
psi가 80미만이고 dmi지표에서 dm가 dp보다 클때 매도
psi가 80이상일때 매도 청산
psi가 80이상일 때 매도 청산
dmi수치를 조정할수 있게 해 주시면 감사합니다.
2024-04-09
1452
글번호 178445
답변완료
검색식 부탁 드립니다
분봉 60
S=sum(1);
R=S%60;
W=R==1;
HH=HighestSince(1,W,H);
X=valuewhen(1,W,HH(1));
LL=LowestSince(1,W,L);
Y=valuewhen(1,W,LL(1));
Z=valuewhen(1,W,C(1));
(X+Y+Z)/3)
1분봉에서 1봉전 60선아래 있던 주가가 0봉에서 60선돌파 종목 검색식 부탁드립니다
파워종목 조건도 알려주세요
2024-04-09
1127
글번호 178441
답변완료
문의
그럼 아래 수식에서 당일거만 표시되게 가능할까요?
var : V1(0,data1);
if crossup(data2(H),data3(L)) or CrossDown(data2(L),data3(H)) Then
v1 = data1(C);
if crossup(data2(H),data3(L)) or CrossDown(data2(L),data3(H)) Then
v1 = data1(C);
2024-04-09
1204
글번호 178439
답변완료
수식문의드립니다
var :q(0),w(0),qq(0),ww(0),qw(0),qwe(0);
q= C-c[1];
w= o-o[1];
qq=(q*5*2);
ww=(w*3*4);
qw=(qq-ww);
qwe=(qwe+qw);
plot1(qwe,"qwe");
지표를 만들려고 합니다
qwe에 qw가 누적되는 값을 구하는데 지표생성이 안되네요
부탁드립니다~
2024-04-09
1131
글번호 178437
답변완료
문의
아래 답변 감사드려요.
제가 혹시나 해서 검색해봤는데 원하는 내용이 있어서 다시 문의드려요
아래 수식에서 보조지표 4개를 원하는데 요리조리 해봐도 잘 안되네요
부탁드립니다
if Bdate != Bdate[1] Then
var1 = 0;
if data2(H) >= data3(H) and data3(H) >= data2(L) Then
var1 = C;
if data2(H) >= data3(L) and data3(L) >= data2(L) Then
var1 = C;
if var1 > 0 Then
plot1(var1);
Else
NoPlot(1);
2024-04-09
1021
글번호 178436
답변완료
재문의입니다
86650문의의 답변에 대한 재문의입니다.
#전월최고당월최저변동율조건매수신호-일봉
#=============================================
input : 표시가격1(L/1.02),표시가격2(L/1.025),표시가격3(L/1.030),표시가격4(L/1.035) ;
input : 변동율(15), 검증기간(3), 출현제한봉수(3),상승률(5);
var : HH(0),H1(0),LL(0),L1(0),F1O(0),F2O(0),LL1(0);
var : ii(0),b(0),bb(0),cc(0);
if sDate > sDate[1]+30 Then
{
TL_New(sDate,sTime,0,sDate,sTime,999999999);
#당월 몸통 최고가 초기값
HH = max(C,O);
#전월 몸통 최고가
H1 = HH[1];
#당월 몸통 최저가 초기값
LL = min(C,O);
#전월 몸통 최저가
L1 = LL[1];
#당월 봉번호 초기값
b = 0;
#조건만족시 봉번호 저장변수 초기값
ii = 0;
#cc 초기값
cc = 0;
}
#당월 봉번호
b = b +1;
#당월 몸통최고가
if HH > 0 and max(C,O) > HH Then
HH = max(C,O);
#당월 몸통최저가
if LL > 0 and min(C,O) < LL Then
LL = min(C,O);
#차트에서 전월값까지 계산되어 있고
#전월몸통 최고가가 당월몸통 최저가보다 20이상 클경우 조건 충족
Condition1 = H1 > 0 and LL > 0 and H1 > LL and ( H1 - LL ) / LL * 100 >= 변동율 ;
Input : Periods(20), Periodm(40),Periodl(60);
input : 기준0선(0) ;
var : VolumeRatioS(0), VolumeRatioM(0), VolumeRatioL(0) ;
VolumeRatioS = VR(Periods);
VolumeRatioM = VR(Periodm);
VolumeRatioL = VR(Periodl);
Var1 = VolumeRatioS - VolumeRatioL / VolumeRatioM *100 ;
#차트에서 전월값까지 계산되어 있고
if H1 > 0 and LL > 0 and
#음봉 뒤 양봉이고
C[1] < O[1] and C > O and
#최근 3봉이내에 조건만족한 경우가 있고
#월초반에 3일이라는 기간에 전월이 포함될수 있으므로 당월봉수와 3중 작은 값을 택하게 작성하셔야 합니다.
CountIf(Condition1==true,min(b, 검증기간)) >= 1 and
#종가가 시가대비 5% 이하 상승
#당월 첫발생(ii가 0일때)이면 조건없이 표시하고
#당월 두번째 이후(ii > 0으로 봉번호 저장이후)는
#직전 발생시점대비 5봉이후이고 직전발생봉의 사가 대비 현재봉 시가가 낮은 경우에만 표시
(ii == 0 or (ii > 0 and Index >= ii+출현제한봉수 and O < bb) ) Then
{
plot1(표시가격1,"전월H당월L변동율신호");
if VolumeRatioS >= VolumeRatioM or Var1 >= 기준0선 Then
plot2(표시가격2,"전월H당월L변동율VR신호");
#조건만족시 봉번호
ii = Index;
#조건만족시 시가
bb = O;
#조건만족봉이 시가대비 종가 상승률이 지정한 값 이하이면
if C <= O*(1+상승률/100) Then
{
#표시
plot3(표시가격3,"전월H당월L변동율상승률1차");
#cc는 0
cc = 0;
}
Else #상승률이 지정한보가 크면
{
#cc에 종가저장
cc = c;
}
}
Else
{
#cc에 종가가 저장되어 있고 음봉 뒤 양봉이고 시가가 cc보다 작으면
if cc > 0 and C[1] < O[1] and C > O and O < cc Then
{
#표시
plot4(표시가격4,"전월H당월L변동율상승률2차");
#cc는 0으로 저장
cc = 0;
}
}
상기 답변에 대한 내용을 적용시켜본 결과 원하는 반영 신호가 나오지 않는 것 같아 재문의 드립니다.
가. PLOT 2, 3, 4의 신호가 <<<VolumeRatioS >= VolumeRatioM or Var1 >= 기준0선>>>를 제대로 반영되지 않는 것 같습니다. 살펴봐주십시요. 위 추가조건을 OR이 아닌 AND방식으로 변경해서 해봐도 표시되지 않아야할 곳에 신호가 표시되고 있읍니다. PLOT 2에는 반영되고
PLOT3, 4에는 반영되고 있지 않는듯 합니다.
나. PLOT4 의 신호 발생시에도 몸통상승율조건( C <= O*(1+상승률/100) )을 반영해주셔야 합니다.
항상 좋은 답변에 감사드립니다.
2024-04-09
887
글번호 178424