커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1541
글번호 230811
답변완료
수식 문의 드립니다.
매수 5 이평선 위에서 전일종가보다 7% 상승시 즉시매수
매도: 매수점 보다 수익이 마이너스 이고 당일 봉이 음봉일 경우 즉시 매도
매도: 이전5봉중 최고점대비 10% 하락시 즉시매도
매도: 수익이 10% 이상일때, 최고수익대비 수익의 50% 이하로 감소시 즉시 매도
2023-04-21
942
글번호 168366
답변완료
수식 문의 드립니다.
매수 5 이평선 위에서 전일종가보다 7% 상승시 즉시매수
매도: 매수점 보다 수익이 마이너스 이고 당일 봉이 음봉일 경우 즉시 매도
매도: 이전5봉중 최고점대비 10% 하락시 즉시매도
2023-04-20
1129
글번호 168365
답변완료
수정부탁드립니다
박스색상 채우기 와 안 채우울 결우 사각박서 선표시 및 지그재그선 추가시 지그재그선은 후행성 사각박스 종료시 선표시 부탁드립니다.
input : Period(12),선두께(2);
Var:상승색(Red), 하락색(Blue);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/;
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
var : box(0),box1(0);
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
//ZZ[j+1] = ZZ[j];
}
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
box = box_new(date11,time11,Value11,date12,time12,Value12);
Box_SetColor(box,하락색);
Box_SetFill(box,true);
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date22 = date[0];
time22 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
//ZZ[j+1] = ZZ[j];
}
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
box = box_new(date11,time11,Value11,date12,time12,Value12);
Box_SetColor(box,상승색);
Box_SetFill(box,true);
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
}
}
2023-04-20
1100
글번호 168364
답변완료
수정부탁드립니다.
안녕하세요?
진입횟수 설정후, 마지막매매에 스위칭이 안되게끔 하고싶은데요,
혼자 수정해보려니 잘 안되네요...
부탁드립니다.
Input : maPeriod(20), ROCPeriod(12), stoPeriod1(5), stoPeriod2(3), sPeriod(12), lPeriod(26);
input : 진입횟수(3);
var : entry(0);
if Bdate != Bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
value1 = ema(BW(maPeriod,ROCPeriod,stoPeriod1,stoPeriod2), sPeriod);
value2 = ema(BW(maPeriod,ROCPeriod,stoPeriod1,stoPeriod2), lperiod);
# 매수/매도청산
if CrossUp(value1-value2,0) Then
{
if entry < 진입횟수 Then
Buy();
Else
ExitShort();
}
# 매도/매수청산
if CrossDown(value1-value2,0) Then
{
if entry < 진입횟수 Then
Sell();
Else
ExitLong();
}
2023-04-20
1293
글번호 168363
답변완료
수정 부탁드립니다.
https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=168974&ref=168956&Sort=&KeyField=NickName&KeyWord=%BF%D0%B6%F3%BD%BA
에서 ,,,손실이 많아 수정 부탁드립니다.
////////////////////////////////////////////
> 1.유진선물 사용
2.수식은
매수 :: 스톡케스틱이 20 이상 그리고 봉2개가 20일선 위에서 시고저종이 올라섯을때
손절은 5,20 이평 매도크로스
청산은 오전 10 부터 오후 5시사이에는 20틱익절
오후 5부터 새벽 3시까지는 40틱익절 ...
/////////////////////////////////////////////
위는 예전 수식입니다.
1.봉 2개가 20이평선 위에 있을때 진입가는 20이평선 가격으로 수정...
2.매도는 반대 조건으로 해주시고
3.손절 삭제 , 스토캐스틱은 삭제
4.반대가 청산후 20 이평선 가격을 기다리면서 왓을때 진입 햇으면 합니다.
미리 감사드립니다.
2023-04-20
1213
글번호 168360
답변완료
문의드립니다
문의드립니다.
위클리 C 330 종목에서 (2초봉입니다)
9:00:02 2.57 (시가,고가,저가,종가 모두 동일)
9:00:04 2.55 (시가,고가,저가,종가 모두 동일)
9:00:06 2.50 (시가,고가,저가,종가 모두 동일)
9:00:20 2.20 (시가,고가,저가,종가 모두 동일)
9:00:28 시가 2.16
저가 2.14
고가 2.20
종가 2.20
시스템상 9:00:28 에 매수신호가 나와야 하는데,,
신호가 발생하지 않네요
신호 발생이전봉들이 시고저종 값이 모두 동일해서 발생하는 문제인가요 ?
해결 방법 부탁드립니다.
2023-04-20
1227
글번호 168354
답변완료
수식 수정 부탁합니다
아래 수식은 이전 분차트의 고가 저가 종가 를 나타내는 수식인데
다른 분차트는 돼는데 1분만 안돼는데 1분도 되게 수정 부탁합니다
예) 1분차트 고가 저가를 틱차트에서 사용할려고 합니다
==============================================================================
input : 분(240),pp(10);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
Array : OO[10](0),HH[10](0),LL[10](0),CC[10](0);
if index == 0 or Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%분;
if bdate != Bdate[1] or
(Bdate == Bdate[1] and TF < TF[1])Then
{
OO[0] = O;
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49
{
OO[cnt] = OO[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
plot1(HH[1]);
plot2(LL[1]);
plot3(OO[0]);
plot4(CC[1]);
plot5((HH[1]+LL[1])/2);
}
2023-04-20
1234
글번호 168352
답변완료
함수요청
안녕하세요?
아래글번호 81756번 재질문입니다.
당일 매매인데 매수든 매도든 진입 기준 최대 1번으로 수정 부탁드립니다.
즉 당일에 신호가 생성된다면,
1. 매수진입-> 매수청산
2. 매도진입-> 매도청산
둘 중 하나입니다.
1
input : short(12),long(26),sig(9);
var : macdv(0),macds(0);
macdv = macd(short,long);
macds = ema(macdv,sig);
if Bdate != Bdate[1] Then
{
var1 = 0;
Var2 = 0;
}
Condition1 = macdv > 0 and macds > 0 and CrossDown(macdv,macds);
Condition2 = macdv < 0 and macds < 0 and CrossUp(macdv,macds);
if Condition1 == true Then
{
var1 = var1+1;
if var1 == 3 Then
Sell("s",AtMarket);
}
if MarketPosition == -1 and Condition2 == true Then
ExitShort("sx",AtMarket);
if Condition2 == true Then
{
var2 = var2+1;
if var2 == 3 Then
Buy("b",AtMarket);
}
if MarketPosition == 1 and Condition1 == true Then
ExitLong("bx",AtMarket);
SetStopEndofday(152000);
2023-04-20
993
글번호 168337
답변완료
도움 요청 드립니다.
아래 지표를 트레이딩뷰에서 찾았는데요,
예트로 변환하고 싶어서 말씀올립니다.
항상 감사드립니다~
src = input(close, title ="Source")
len = input(14, title ="Length")
oblevel = input(70, title ="OB Level", maxval = 99, minval = 1)
oslevel = input(30, title ="OS Level", maxval = 99, minval = 1)
bullz = input(60, title ="Bull Zone Level", maxval = 99, minval = 1)
bearz = input(40, title ="Bear Zone Level", maxval = 99, minval = 1)
fillbtw = input(true, title ="Fill between OB and OS lines")
showbbzone = input(false, title ="Show Bull/Bear Zones")
drawmidl = input(false, title ="Draw Midline")
emasmt = input(1, title ="EMA Smoothing", minval = 1)
my_rsi(x, len) =>
u = max(x - x[1], 0)
d = max(x[1] - x, 0)
sumu = 0.0, sumd = 0.0
sumu := (u + (len - 1) * nz(sumu[1])) / len
sumd := (d + (len - 1) * nz(sumd[1])) / len
rs = sumu / sumd
res = 100 - 100 / (1 + rs)
[res, sumu, sumd]
[Rsi, sumu, sumd] = my_rsi(close, len)
diffupob = (sumd * ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnob = (sumu / ((100 / (100 - oblevel)) -1 )) * len - (len - 1) * nz(sumd[1])
diffupos = (sumd * ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnos = (sumu / ((100 / (100 - oslevel)) -1 )) * len - (len - 1) * nz(sumd[1])
oblev = Rsi <= oblevel ? close + diffupob : close - diffdnob
oslev = Rsi <= oslevel ? close + diffupos : close - diffdnos
oblev := ema(oblev, emasmt)
oslev := ema(oslev, emasmt)
obl = plot(oblev, color = color.red)
osl = plot(oslev, color = color.green)
fill(obl, osl, color = fillbtw ? color.new(color.gray, 89) : color.new(color.white, 100))
plot((oblev + oslev) / 2, color = drawmidl ? color.gray : color.new(color.white, 100))
//Bull/Bear Zones
diffupblzn= (sumd * ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnblzn = (sumu / ((100 / (100 - bullz)) -1 )) * len - (len - 1) * nz(sumd[1])
diffupbrzn= (sumd * ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumu[1])
diffdnbrzn = (sumu / ((100 / (100 - bearz)) -1 )) * len - (len - 1) * nz(sumd[1])
bullzone = Rsi <= bullz ? close + diffupblzn : close - diffdnblzn
bearzone = Rsi <= bearz ? close + diffupbrzn : close - diffdnbrzn
bullzone := ema(bullzone, emasmt)
bearzone := ema(bearzone, emasmt)
bullzln = plot(bullzone, color = showbbzone ? color.lime : na)
bearzln = plot(bearzone, color = showbbzone ? color.lime : na)
fill(obl, bullzln, color = bullz < oblevel and showbbzone ? color.new(color.lime, 90) : color.new(color.white, 100))
fill(osl, bearzln, color = bearz > oslevel and showbbzone ? color.new(color.red, 90) : color.new(color.white, 100))
2023-04-20
923
글번호 168336