커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4373
글번호 230811
답변완료
일봉
수고 많으십니다.
질문
1. 국내선물 근월물 일봉의 상장때(첫거래일)부터 현재까지의 시(작)가, 고가, 저가를 표시하는 식(참고로 현재 거래되는 근월물은 2024년 9월 13일에 첫거래가 있었습니다.)
2. 이 기간 첫거래부터 현재까지의 거래량, 거래대금을 누적시키는 수식
2025-06-17
301
글번호 191818
답변완료
시스템수식 작성 부탁드립니다.
안녕하십니까.
시스템 수식 작성 부탁드립니다.
1. 조건
현재가를 X라고 할 때,
X가 시가 위에 있고, 시가 < X < (시가+5) 범위 내로 처음 내려왔을 일 경우
(즉 현재가가 시간 위이고 시가+5포인트 범위 내에 처음 들어왔을 경우)
2. 진입
시가+1포인트 가격에서 지정가 매수 진입
3. 청산
1) 익절
진입한 가격에서 +10포인트 되었을 때 그 순간 지정가 매도(익절)
2) 손절
(1) 매수 진입한 캔들의 현재가가 시가-10포인트 이하가 되었을 때 바로 시장가 Stop매도(손절)
또는
(2) 매수 진입한 캔들의 저가가 시가-3포인트 이하가 되었을 경우, 현재가가 시가에 왔을때 시가 지정가 Stop매도(본절)
항상 많은 도움 주셔서 감사합니다.
2025-06-17
267
글번호 191817
답변완료
부탁드립니다^^
아래 지표 수식을 화면 box 강세, 약세로 변환 부탁드립니다.
input : length(50);
input : factor(1.0);
input : col_up(Red);
input : col_dn(Lime);
input : col_ul(Cyan);
var : direction(0),count_up(0),count_dn(0);
var : volatility(0),upper(0),lower(0),sig_up(False),sig_dn(False);
var : upper_band(0),lower_band(0);
var : hlc3(0),alpha(0),ATrv(0);
var : tx1(0),tx2(0);
var1 = ma(C,25);
var2 = ma(C,length);
hlc3 = (H+L+C)/3;
volatility = ma(high-low, 70) * factor;
upper = highest(var1 + volatility, int(length/2));
lower = lowest(var2 - volatility, int(length/2));
sig_up = CrossUp(hlc3, upper);
sig_dn = CrossDown(hlc3, lower);
if sig_up == true Then
direction = 1;
if sig_dn == true Then
direction = -1;
upper = iff(direction == 1 , Nan , upper);
lower = iff(direction == -1 , Nan , lower);
if direction == 1 Then
{
count_up = count_up+ 0.5;
count_dn = 0;
}
if direction == -1 Then
{
count_dn = count_dn+0.5;
count_up = 0;
}
count_up = iff(count_up > 70 , 70 , count_up);
count_dn = iff(count_dn > 70 , 70 , count_dn);
alpha = 1 / 100 ;
ATrV = IFf(IsNan(ATrV[1]) == true, ma(TrueRange,100) , alpha * TrueRange + (1 - alpha) * IFf(isnan(ATrV[1])==true,0,ATrV[1]));
upper_band = lower + ATRV*5;
lower_band = upper - ATRV*5;
if IsNaN(upper_band) == False Then
plot1(upper_band, "Upper Wave",iff(index % 2 == 0 , nan , col_ul));
Else
NoPlot(1);
if IsNaN(lower_band) == False Then
plot2(lower_band, "Lower Wave",iff(index % 2 == 0 , nan , col_ul));
Else
NoPlot(2);
if IsNaN(upper) == False Then
plot3(upper, "Upper Band",col_dn);
Else
NoPlot(3);
if IsNaN(lower) == False Then
plot4(lower, "Lower Band",col_up);
Else
NoPlot(4);
plot5(C);
if direction != direction[1] and direction == 1 Then
{
tx1 = Text_New_Self(sDate,sTime,Lower,"●");
Text_SetStyle(tx1,2,2);
Text_SetColor(tx1,col_up);
Text_setsize(Tx1,15);
tx2 = Text_New_Self(sDate,sTime,L,"▲");
Text_SetStyle(tx2,2,0);
Text_SetColor(tx2,col_up);
Text_setsize(Tx2,19);
}
if direction != direction[1] and direction == -1 Then
{
tx1 = Text_New_Self(sDate,sTime,upper,"●");
Text_SetStyle(tx1,2,2);
Text_SetColor(tx1,col_dn);
Text_setsize(Tx1,15);
tx2 = Text_New_Self(sDate,sTime,H,"▼");
Text_SetStyle(tx2,2,1);
Text_SetColor(tx2,col_dn);
Text_setsize(Tx2,19);
}
감사합니다~맛점하세요^^
2025-06-17
283
글번호 191814
답변완료
안녕하세요
데이트레이딩에서
당일 고점 또는 저점을 갱신시
매수 또는 매도 진입 하는시스템 식을 부탁드립니다.
청산은 당일 청산입니다 ^^
2025-06-17
228
글번호 191798
회원 님에 의해서 삭제되었습니다.
2025-06-17
24
글번호 191797
답변완료
수식좀 요청 드립니다.
ㅇ항상 많은 도움에 고맙습니다.
ㅇ 아래 수식에 보면 3등분선이 나오는데 색상좀 부탁 드림니다.
##
input : n(20);
input : BW(1);
var : hh(0),ll(0),idx(0),tf(0),hh1(0),ll1(0),hh2(0),ll2(0);
var : TL1(0),TL2(0),d1(0),t1(0),TL3(0);
var : HTL1(0),HTL2(0),HTL3(0),HTL4(0),HTL5(0),HTL6(0),ii(0),tx(0);
if Bdate != Bdate[1] Then
idx = 0;
Else
idx = idx+1;
TF = idx%n;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
hh = h;
ll = l;
hh1 = hh[1];
ll1 = ll[1];
hh2 = hh1[1];
ll2 = ll1[1];
d1 = sDate;
t1 = sTime;
ii = 1;
#TL_Delete(TL1);
//TL1 = TL_new(d1,t1,hh,NextBarSdate,NextBarStime,HH);
// TL1 = TL_new(d1,t1,hh,NextBarSdate,NextBarStime,NextBarStime);
TL1 = TL_New(sDate,sTime,HH[0],NextBarSdate,NextBarStime,HH[0]);
//TL1 = TL_New(sDate[0],sTime[0],HH,sDate,sTime,HH);
TL_SetColor(TL1,RgB(0,0,255));
TL_SetSize(TL1,BW);
//TL_SetEnd(TL1[0],sDate,sTime,NextBarStime);
//TL1 = TL_new(sDate,sTime,HH+0.25,NextBarSdate,NextBarStime,HH+0.25);
//TL_SetEnd(TL1,sDate,sTime,HH+0.25);
//TL_SetExtRight(TL1[10],true);
#TL_Delete(TL2);
TL2 = TL_new(d1,t1,ll,NextBarSdate,NextBarStime,ll);
TL_SetColor(TL2,RgB(0,0,255));
TL_SetSize(TL2,BW);
//TL_SetStyle((TL2,2,1);
#TL_Delete(TL3);
TL3 = TL_new(d1,t1,(hh+ll)/2,NextBarSdate,NextBarStime,(hh+ll)/2);
TL_SetColor(TL3,Rgb(0,0,255));
TL_SetSize(TL3,BW);
}
Else
{
ii = ii +1;
TL_SetEnd(TL1,sDate,sTime,HH);
TL_SetEnd(TL2,sDate,sTime,LL);
TL_SetEnd(TL3,sDate,sTime,(HH+LL)/2);
if ii%2 == 0 Then
{
tx = Text_New(sDate,sTime,HH,NumToStr(ii,0));
Text_SetStyle(tx,2,1);
}
}
#if h > hh Then
#{
# hh = h;
// TL_SetBegin(TL1,d1,t1,hh);
// TL_SetBegin(TL3,d1,t1,(hh+ll)/2);
#}
#if l < ll Then
#{
# ll = l;
//TL_SetBegin(TL2,d1,t1,ll);
// TL_SetBegin(TL3,d1,t1,(hh+ll)/2);
#}
//TL_SetEnd(TL1,NextBarSdate,NextBarStime,hh);
//TL_SetEnd(TL2,NextBarSdate,NextBarStime,ll);
//TL_SetEnd(TL3,NextBarSdate,NextBarStime,(hh+ll)/2);
//var1 = (hh+ll)/2;
//var2 = (hh1+ll1)/2;
//var3 = (hh2+ll2)/2;
//Var4 = MA(var1,5) ;
// Plot1(Var4-PriceScale*10,"1",RgB(255,0,255),DeF,2) ;
//Plot2(var2,"2",RgB(0,0,255),DeF,3) ;
//Plot3(var3,"3",RgB(0,0,0),DeF,3) ;
input : n2(20);
var : hh3(0),ll3(0),idx3(0),tf3(0),hh4(0),ll4(0),hh5(0),ll5(0);
var : TL11(0),TL12(0),d13(0),t13(0),TL13(0);
if Bdate != Bdate[1] Then
idx3 = 0;
Else
idx3 = idx+1;
tf3 = idx3%n2;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and tf3 < tf3[1]) Then
{
hh3 = h;
ll3 = l;
hh4 = hh3[1];
ll4 = ll3[1];
hh5 = hh4[1];
ll5 = ll4[1];
d13 = sDate;
t13 = sTime;
#TL_Delete(TL11);
// TL11 = TL_new(d13,t13,hh3,NextBarSdate,NextBarStime,hh3);
#TL_Delete(TL12);
// TL12 = TL_new(d13,t13,ll3,NextBarSdate,NextBarStime,ll3);
#TL_Delete(TL13);
// TL13 = TL_new(d13,t13,(hh+ll)/2,NextBarSdate,NextBarStime,(hh+ll)/2);
}
if h > hh3 Then
{
hh3 = h;
TL_SetBegin(TL11,d13,t13,hh3);
TL_SetBegin(TL13,d13,t13,( hh3 + ll3)/2);
}
if l < ll3 Then
{
ll3 = l;
TL_SetBegin(TL12,d13,t13,ll3);
TL_SetBegin(TL13,d13,t13,( hh3 + ll3)/2);
}
//TL_SetEnd(TL11,NextBarSdate,NextBarStime,hh3);
//TL_SetEnd(TL12,NextBarSdate,NextBarStime,ll3);
//TL_SetEnd(TL13,NextBarSdate,NextBarStime,(hh+ll)/2);
var1 = ( hh3 + ll3)/2;
var2 = ( hh4 + ll4)/2;
var3 = ( hh5 + ll5)/2;
Var4 = MA(var1,5) ;
//Plot1(Var4-PriceScale*1,"1",RgB(255,0,255),DeF,0) ;
* 항상 많은 도움에 고맙습니다. 수고하십시요.
2025-06-17
314
글번호 191796
답변완료
수식 수정 의뢰 드립니다.
안녕하세요!
아래 수식을 예스로 변환을 좀 부탁드립니다!
감사합니다!
//@version=6
indicator('AWMA', overlay = true)
//inputs
_Period1 = input(3, 'WMA1 Period')
_Period2 = input(5, 'WMA2 Period')
_Period3 = input(8, 'WMA3 Period')
_Period4 = input(10, 'WMA4 Period')
_Period5 = input(12, 'WMA5 Period')
_Period6 = input(15, 'WMA6 Period')
_Period7 = input(30, 'WMA7 Period')
_Period8 = input(35, 'WMA8 Period')
_Period9 = input(40, 'WMA9 Period')
_Period10 = input(45, 'WMA10 Period')
_Period11 = input(50, 'WMA11 Period')
_Period12 = input(60, 'WMA12 Period')
//calculate wma
wma1 = ta.wma(close, _Period1)
wma2 = ta.wma(close, _Period2)
wma3 = ta.wma(close, _Period3)
wma4 = ta.wma(close, _Period4)
wma5 = ta.wma(close, _Period5)
wma6 = ta.wma(close, _Period6)
wma7 = ta.wma(close, _Period7)
wma8 = ta.wma(close, _Period8)
wma9 = ta.wma(close, _Period9)
wma10 = ta.wma(close, _Period10)
wma11 = ta.wma(close, _Period11)
wma12 = ta.wma(close, _Period12)
plot(wma1, color = color.new(#4fc3d2, 0), title = 'short1')
plot(wma2, color = color.new(#4fc3d2, 0), title = 'short2')
plot(wma3, color = color.new(#4fc3d2, 0), title = 'short3')
plot(wma4, color = color.new(#4fc3d2, 0), title = 'short4')
plot(wma5, color = color.new(#4fc3d2, 0), title = 'short5')
plot(wma6, color = color.new(#4fc3d2, 0), title = 'short6')
plot(wma7, color = color.new(#fe0d5f, 0), title = 'long1')
plot(wma8, color = color.new(#fe0d5f, 0), title = 'long2')
plot(wma9, color = color.new(#fe0d5f, 0), title = 'long3')
plot(wma10, color = color.new(#fe0d5f, 0), title = 'long4')
plot(wma11, color = color.new(#fe0d5f, 0), title = 'long5')
plot(wma12, color = color.new(#fe0d5f, 0), title = 'long6')
2025-06-17
318
글번호 191795
답변완료
수식부탁합니다
시스템 수식 부탁합니다
일정금액(100만원)을 정해놓고
시스템식을 가동시키면 바로 일정금액에 맞춰 시장가로 매수 주문이 나가고
매도는 익절은 매수가격 대비 퍼센트를 적용해 매도(7%) 이때도 바로 시장가로
전량 매도
손절도 매수가격 대비 일정 퍼센트를 적용해 바로 시장가로 손절매도 하는 시스템식
부탁합니다
2025-06-17
283
글번호 191794
답변완료
안녕하세요! 답변은 잘받았습니다. 한가지만 더 부탁드리겠습니다!
안녕하세요. 시스템트레이딩 코딩 부탁드립니다.
> 안녕하세요 담당자님 고생많으십니다.
input : lengthMA_MACD(34), lengthSignal(9);
var: src(0), hi(0), lo(0), mi(0);
var: ema1(0), ema2(0), ema_zlema(0);
var: md(0), sb(0), HISTO(0);
// 1) 기준값
src = (High + Low + Close) / 3;
// 2) ZLEMA 계산
ema1 = ema(src, lengthMA_MACD);
ema2 = ema(ema1, lengthMA_MACD);
ema_zlema = ema1 + (ema1 - ema2);
// 3) 고가/저가 평균 (Wilder SMMA)
hi = IFF(IsNaN(hi[1]),
Average(High, lengthMA_MACD),
(hi[1] * (lengthMA_MACD - 1) + High) / lengthMA_MACD);
lo = IFF(IsNaN(lo[1]),
Average(Low, lengthMA_MACD),
(lo[1] * (lengthMA_MACD - 1) + Low) / lengthMA_MACD);
mi = (hi + lo) / 2;
// 4) Kiwoom 스타일 MD 계산
md = IFF(ema_zlema > hi,
ema_zlema - hi,
IFF(ema_zlema < lo,
ema_zlema - lo,
0));
// 5) Signal & Histogram
sb = Average(md, lengthSignal);
HISTO = md - sb;
// 6) 시각화
Plot1(0, "ZeroLine", Gray);
Plot2(md, "PaulMACD", Red);
Plot3(sb, "Signal", Blue);
Plot4(HISTO, "Histogram", IFF(md > sb, Red, Blue));
이렇게 지표는 만드는데 성공을 해서 시각화 까지 잘 되었는데요
그 다음 시스템트레이딩으로 만드는데 어려움이 있어서요 ㅠ
-----------------------------------------------------------------------------------
소중한 답변 정말 감사합니다.한가지만 더 부탁드리겠습니다. 진입사이 임계치를 넣으니 진입횟수가 거의 없어서요 ㅠㅠ
1. 입력 변수
MA MACD Length: 34
Signal Length: 9
2. 지표 계산 방식
src = (High + Low + Close) / 3
ZLEMA = EMA(src, 34) + (EMA(src, 34) - EMA(EMA(src, 34), 34))
고가·저가에 대해 SMMA(34) 적용
hi = SMMA(High, 34)
lo = SMMA(Low, 34)
mid = (hi + lo) / 2
Paul MACD(md) 계산
pascal
복사
편집
md = IFF(ema_zlema > hi,
ema_zlema - hi,
IFF(ema_zlema < lo,
ema_zlema - lo,
0));
Signal(sb) 및 Histogram(HISTO)
pascal
복사
편집
sb = SMA(md, 9);
HISTO = md - sb;
3. 매매 로직
진입(Short)
md[1] > sb[1]인 상태에서 md < sb로 하향 교차할 때
주문: SellShort
청산(Cover)
md[1] < sb[1]인 상태에서 md > sb로 상향 교차할 때
주문: BuyToCover
진입은 paulmacd선이 시그널선을 하향교차할때
청산은 paulmacd선이 시그널선을 상향교차할때
진입사이 임계치를 제외하고 이렇게 부탁드리겠습니다. 감사합니다!
2025-06-16
392
글번호 191793