커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1465
글번호 230811
답변완료
부탁드립니다
1. 매 40분마다 양봉일 때 누적된 거래량이 많으면 캔들에 파란색으로, 음봉일 때 누적된 거래량이 많으면 캔들에 빨강색으로 구현해 주세요
2. 매일 양봉일 때 누적된 거래량이 많으면 캔들에 파란색으로, 음봉일 때 누적된 거래량이 많으면 캔들에 빨강색으로 구현해 주세요
고맙습니다.
2024-01-14
904
글번호 175717
선행 님에 의해서 삭제되었습니다.
2024-01-14
0
글번호 175716
양치기 님에 의해서 삭제되었습니다.
2024-01-18
38
글번호 175715
답변완료
문의 드립니다!
안녕하세요!
아래 2개수식을 아침 9시부터 적용(시작)이 되는 수식으로 각각 변환 부탁드립니다
감사합니다!
-----------------------------------------------------
(수식 1)
INPUT : RsiPeriod(13),PLPeriod(2),TSLPeriod(7), BandPeriod(34), 표준편차(1.6185);
var :RSIV(0), RSIPL(0), TSL(0), MidBand(0), UpBand(0),DnBand(0) ;
var : TL1(0), TL2(0), TLi1(0), TLi2(0), TX1(0), TX2(0), TX3(0), TX4(0), TX5(0), TX6(0);
var : TXi1(0),TXi2(0),TXi3(0),TXi4(0);
#RSI
RSIV = RSI(RSIPeriod);
#RSI시그널1
RSIPL = ma(RSIV,PLPeriod);
#RSI시그널2
TSL = ma(RSIV,TSLPeriod);
#RSI 볼밴 중단
MidBand = ma(RSIV,BandPeriod);
#RSI 볼밴 상단
UpBand = MidBand + (표준편차 * std(RSIV, BandPeriod));
#RSI 볼밴 하단
DnBand = MidBand - (표준편차 * std(RSIV, BandPeriod));
#RSI시그널1이 50이하에서 상승반전
if RSIPL > RSIPL[1] and RSIPL[1] < RSIPL[2] and RSIPL < 50 then
{
#RSI시그널1값
var1 = RSIPL[1];
#직전 상승반전시 RSI시그널1값
var2 = var1[1];
#저가
var3 = L[1];
#직전 상승반전시 저가
var4 = var3[1];
#날짜
var5 = sdate[1];
var6 = var5[1];
#시간
var7 = stime[1];
var8 = var7[1];
#현재 RSI시그널1값이 직전 상승반전시 RSI시그널1값보다 크고
#현재 저가는 직전 상승반전시 저가보다 작으면 1
if var1 > var2 and var3 < var4 then
var9 = 1;
}
else #상승반전아니면 0
var9 = 0;
if var9 == 1 then
{
TL1 = TL_New(var6,var8,var4,var5,var7,var3);
TL_SetSize(TL1, 5);
TL_SetColor(TL1, magenta);
TLi1= TL_New_self(var6,var8,var2,var5,var7,var1);
TL_SetSize(TLi1, 5);
TL_SetColor(TLi1, magenta);
TX1 = Text_new(var5, var7, L, "★");
Text_SetColor(Tx1,black);
Text_SetStyle(Tx1,0,0);
Text_SetSize(Tx1,18);#크기
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
TXi1 = Text_New_Self(var5, var7, var1, "★");
Text_SetColor(Txi1,black);
Text_SetStyle(Txi1,0,0);
Text_SetSize(Txi1,18);#크기
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
}
if CrossUp(RSIPL, DnBand) then
{
TX3 = Text_new(sdate, stime, L, "▲");
Text_SetColor(Tx3,black);
Text_SetStyle(Tx3,2,0);
Text_SetSize(Tx3,10);#크기
TXi3 = Text_New_Self(sdate, stime, RSIPL, "▲");
Text_SetColor(Txi3,black);
Text_SetStyle(Txi3,2,0);
Text_SetSize(Txi3,10);#크기
}
#RSI시그널1이 50위에서 하락반전
if RSIPL < RSIPL[1] and RSIPL[1] > RSIPL[2] and RSIPL > 50 then
{
#RSI시그널1값
var11 = RSIPL[1];
#직전 상승반전시 RSI시그널1값
var12 = var11[1];
#고가
var13 = H[1];
#직전 상승반전시 고가값
var14 = var13[1];
#날짜
var15 = sdate[1];
var16 = var15[1];
#시간
var17 = stime[1];
var18 = var17[1];
#현재 RSI시그널1값이 직전 하락반전시 RSI시그널1값보다 작고
#현재 고가는 직전 하락반전시 고가보다 크면 1
if var11 < var12 and var13 > var14 then
var19 = 1;
}
else #하락반전 아니면 0
var19 = 0;
if var19 == 1 then
{
TL2 = TL_New(var16,var18,var14,var15,var17,var13);
TL_SetSize(TL2, 5);
TL_SetColor(TL2, Blue);
TLi2= TL_New_self(var16,var18,var12,var15,var17,var11);
TL_SetSize(TLi2, 5);
TL_SetColor(TLi2, Blue);
TX2 = Text_new(var15, var17, H, "★");
Text_SetColor(Tx2,black);
Text_SetStyle(Tx2,0,1);
Text_SetSize(Tx2,18);#크기
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
TXi2 = Text_New_Self(var15, var17, var11, "★");
Text_SetColor(Txi2,black);
Text_SetStyle(Txi2,0,1);
Text_SetSize(Txi2,18);#크기
PlaySound("C:₩예스트레이더(X64)₩data₩Sound₩.wav");
}
if CrossDown(RSIPL, UpBand) then
{
TX4 = Text_new(sdate, stime, H, "▼");
Text_SetColor(Tx4,black);
Text_SetStyle(Tx4,2,1);
Text_SetSize(Tx4,18);#크기
TXi4 = Text_New_Self(sdate, stime, RSIPL, "▼");
Text_SetColor(Txi4,black);
Text_SetStyle(Txi4,2,1);
Text_SetSize(Txi4,18);#크기
}
plot1(RSIPL, "RSIPL",Lgreen,def,0);
plot2(TSL,"TSL",DarkRed,def,1);
plot3(MidBand,"MidBand",Yellow,def,1);
plot4(UpBand,"UpBand",Blue,def,0);
plot5(DnBand,"DnBand",Magenta,def,0);
if CrossUp(RSIPL,DnBand) then
plot6(RSIPL, "상향돌파시점");
if CrossDown(RSIPL, UpBand) then
plot7(RSIPL, "하향이탈시점");
if var9 == 1 then
plot8(RSIPL, "상승다이버전스");
if var19 == 1 then
plot9(RSIPL, "하락다이버전스");
(수식 2)
input : af(0.2), maxAF(0.3);
input : 텍스트출력(0),선굵기(5);
var : T(0),cnt(0),count(0);
var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0),day1(0),day0(0),TL3(0);
var : TL1(0),TL2(0),tx1(0),tx2(0),tx11(0),tx22(0),idx(0),tx99(0),tx88(0);
Array : HD[20](0),HT[20](0),HH[20](0),LD[20](0),LT[20](0),LL[20](0);
Array : HI[20](0),LI[20](0);
var1 = CSar(af,maxAF);
if bdate != bdate[1] Then
{
day0 = sdate;
day1 = day0[1];
}
if crossup(c,var1) Then
{
T = 1;
HH[0] = H;
HD[0] = sdate;
HT[0] = stime;
HI[0] = index;
for cnt = 1 to 19
{
HD[cnt] = HD[cnt-1][1];
HT[cnt] = HT[cnt-1][1];
HH[cnt] = HH[cnt-1][1];
HI[cnt] = HI[cnt-1][1];
}
if LL[0] > 0 Then
{
Condition1 = false;
for cnt = 1 to 19
{
if Condition1 == false and abs(LL[0]-LL[cnt]) <= PriceScale*1 and LD[cnt] >= day1 Then
{
Condition1 = true;
TL1 = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]);
TL_SetSize(TL1,선굵기);
TL_SetColor(TL1,cyan);
idx = abs(LI[0]-LI[cnt]);
//tx99 = Text_New(LD[0],LT[0],LL[0],NumToStr(idx,0));
Text_SetColor(tx99,cyan);
Text_SetStyle(tx99,0,3);
Text_SetBold(tx99,2);
PlaySound("C:₩예스트레이더(x64)₩data₩Sound₩.wav");
}
}
}
}
if CrossDown(c,var1) Then
{
T = -1;
LL[0] = L;
LD[0] = sdate;
LT[0] = stime;
LI[0] = index;
for cnt = 1 to 19
{
LD[cnt] = LD[cnt-1][1];
LT[cnt] = LT[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
LI[cnt] = LI[cnt-1][1];
}
if HH[0] > 0 Then
{
Condition2 = false;
for cnt = 1 to 19
{
if Condition2 == false and abs(HH[0]-HH[cnt]) <= PriceScale*1 and HD[cnt] >= day1 Then
{
Condition2 = true;
TL2 = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]);
TL_SetSize(TL2,선굵기);
TL_SetColor(TL2,cyan);
idx = abs(HI[0]-HI[cnt]);
//tx99 = Text_New(HD[0],HT[0],HH[0],NumToStr(idx,0));
Text_SetColor(tx99,cyan);
Text_SetStyle(tx99,0,3);
Text_SetBold(tx99,2);
PlaySound("C:₩예스트레이더(x64)₩data₩Sound₩.wav");
}
}
}
}
if T == 1 then
{
if H > HH[0] Then
{
HH[0] = H;
HD[0] = sdate;
HT[0] = stime;
if Condition3 == false and abs(HH[0]-HH[cnt]) <= PriceScale*1 and HD[cnt] >= day1 Then
{
Condition3 = true;
TL3 = TL_New(HD[cnt],HT[cnt],HH[cnt],HD[0],HT[0],HH[0]);
TL_SetSize(TL3,선굵기);
TL_SetColor(TL3,cyan);
idx = abs(HI[0]-HI[cnt]);
//tx88 = Text_New(HD[0],HT[0],HH[0],NumToStr(idx,0));
Text_SetColor(tx88,cyan);
Text_SetStyle(tx88,0,3);
Text_SetBold(tx88,2);
PlaySound("C:₩예스트레이더(x64)₩data₩Sound₩.wav");
}
}
}
if T == -1 then
{
if L < LL[0] Then
{
LL[0] = L;
LD[0] = sdate;
LT[0] = stime;
if Condition3 == false and abs(LL[0]-LL[cnt]) <= PriceScale*1 and LD[cnt] >= day1 Then
{
Condition3 = true;
TL3 = TL_New(LD[cnt],LT[cnt],LL[cnt],LD[0],LT[0],LL[0]);
TL_SetSize(TL3,선굵기);
TL_SetColor(TL3,cyan);
idx = abs(LI[0]-LI[cnt]);
//tx88 = Text_New(LD[0],LT[0],LL[0],NumToStr(idx,0));
Text_SetColor(tx88,cyan);
Text_SetStyle(tx88,0,3);
Text_SetBold(tx88,2);
PlaySound("C:₩예스트레이더(x64)₩data₩Sound₩.wav");
}
}
}
2024-01-13
746
글번호 175714
답변완료
예스에서 종목검색하고 싶어요
A=(highest(high(1),26)+lowest(low(1),26))/2;
B=(highest(high(1),52)+lowest(low(1),52))/2;
A1=(highest(high,26)+lowest(low,26))/2;
B1=(highest(high,52)+lowest(low,52))/2;
A==B AND (A1>A OR B1>B)
예스스탁에서 종목검색할 수 있도록 변환 부탁드립니다.
항상 감사합니다.^^
2024-01-15
875
글번호 175713
답변완료
부탁드립니다
안녕하세요.
항상 큰 도움 주셔서 감사드립니다.
아래의 TV지표를 YS지표로 사용하고 싶습니다.
study(title = "Volume Flow Indicator [LazyBear]", shorttitle="VFI_LB")
length = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(5)
smoothVFI=input(false, type=bool)
ma(x,y) => smoothVFI ? sma(x,y) : x
typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )
vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )
d=vfi-vfima
plot(0, color=gray, style=3)
showHisto=input(false, type=bool)
plot(showHisto ? d : na, style=histogram, color=gray, linewidth=3, transp=50)
plot( vfima , title="EMA of vfi", color=orange)
plot( vfi, title="vfi", color=green,linewidth=2)
2024-01-13
765
글번호 175712
답변완료
수식 요청
input : Price(31850),진입횟수(1);
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;
if NextBarSdate == sDate and
NextBarStime >= 91500 and
H < price and
entry < 진입횟수 Then
Buy("b",AtStop,price);
★ 위 수식이 당일 장이 시작되는 09:00부터 생성되는 봉만으로 판단하여 작동될 수 있도록 변경 부탁드리겠습니다. 노고에 늘 감사드립니다.
2024-01-14
640
글번호 175711
답변완료
문의드립니다
볼린저밴드 이평,상단,하단에 현재가가 터치하면 알람이 울리게 하는 지표식 부탁합니다
터치할때만 한번 울리고 계속 울리지는 말구요
감사합니다.
2024-01-13
622
글번호 175710
답변완료
85357번 추가 질의 드립니다.
전환선쪽 표식이 캔들과 상당히 떨어져 있는데, 조정이 안되는 걸까요? ㅠㅠ
2024-01-13
662
글번호 175709