커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2553
글번호 230811
답변완료
문의
안녕하세요~~
늘 수고 많으십니다.
아래의 4가지 신호를 하나로 통합 가능할까요?
신호가 중복으로 설정이 안되어서
하나의 신호로 통합하고 싶습니다.
꼭 부탁드립니다.감사합니다.
신호① (월고월저기준가)
input : 입력일(20220913);
var : 기준가(0),월고(0),월저(0);
if data2(sdate == 입력일) Then
기준가 = data2(lowD(0));
if data2(sdate >= 입력일) Then
{
if Data2(월고 == 0 or (월고 > 0 and H > 월고)) Then
월고 = data2(h);
if data2(월저 == 0 or (월저 > 0 and L < 월저)) Then
월저 = data2(l);
}
if data1(CrossUp(c,기준가)) Then
Buy();
if data1(CrossDown(c,기준가)) Then
Sell();
if data1(CrossUp(c,월고)) Then
Buy();
if data1(CrossDown(c,월고)) Then
Sell();
if data1(CrossUp(c,월저)) Then
Buy();
if data1(CrossDown(c,월저)) Then
Sell();
신호② (특정일저가)
input : 입력일(20221020);
var : 특정일저가(0);
if data2(sdate == 입력일) Then
특정일저가 = data2(HighD(0));
if data1(CrossUp(c,특정일 저가)) Then
Buy();
if data1(CrossDown(c,특정일저가)) Then
Sell();
신호③ (특정일고가)
input : 입력일(20221015);
var : 특정일고가(0);
if data2(sdate == 입력일) Then
특정일고가 = data2(HighD(0));
if data1(CrossUp(c,특정일고가)) Then
Buy();
if data1(CrossDown(c,특정일고가)) Then
Sell();
신호④ (특정가격)
input:Price1(2.50),Price2(3.50),Price3(1.20),Price4(4.80);
if CrossDown(c,Price1) or CrossDown(c,Price2) or CrossDown(c,Price3) or CrossDown(c,Price4) Then
sell();
if CrossUp(c,Price1) or CrossUp(c,Price2) or CrossUp(c,Price3) or CrossUp(c,Price4) Then
buy();
2022-10-25
1254
글번호 163260
답변완료
문의 드립니다.
해외선물 매매에서
그래프처럼 피보나치 전일 1 ,2 번 매수후 당일 3 ,4 번 청산의 수식어 부탁드립니다
2022-10-25
1342
글번호 163259
답변완료
수식 의뢰드립니다.
안녕하세요!
매매에 도움을 받고자 수식을 의뢰 드립니다!
1. 분차트, 틱챠트, 일봉챠트 상관 없이 봉이 완성되면 봉의 상단과 하단에 숫자로 고가와 저가가 없어지지 않고 계속 표시되는 수식을 만들고 싶습니다! 월물이 바뀌어도 없어지지 않고 계속 남아있게 만들어 주세요! (주식, 선물, 옵션 모두 적용) / 그리고 가격이 양쪽 봉끝에서 일정 간격 떨어져서 가격이 출력되게 부탁드립니다. 가격이 봉끝에 바로 붙어서 출력이 되면 눈이 안좋아서 읽기가 많이 불편합니다.) / 글자 크기와 간격 그리고 글자색은 외부변수로 부탁드립니다.
2. 고가는 고가끼리(빨강선) , 저가는 저가끼리(파랑선) 계속 지난 봉들을 선으로 연결하는 수식을 만들고 싶습니다. 월물이 바뀌어도 없어지지 않고 계속 남아있게 만들어 주세요! (주식, 선물, 옵션 모두 적용 / 선의 색상과 굵기는 외부변수로 부탁드립니다)
항상 노고에 진심으로 감사드립니다.
2022-10-25
1211
글번호 163258
관리자에 의해 프로그램 사용법 QnA로 이동되었습니다
2022-10-25
6
글번호 163257
답변완료
문의드립니다
아래 지표식에서 지표 라인의 색상이 바뀌면 화면바탕색도 바뀌게 하고싶습니다
검색해보니까 강조식으로 이런식으로 표현하는거 같은데요. (예를 든겁니다)
input : P(20);
var : T(0);
var1 = ma(C,P);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
if T == 1 Then
PlotPaintBar(99999999,0,"강조",RED);
if T == -1 Then
PlotPaintBar(99999999,0,"강조",BLUE);
---------------------------------------------
2가지 버전으로 부탁합니다
1. 아래지표식에서 Plot1 ht 의 색상이 바뀔때 바탕화면 색도 바뀌는 강조식
2. ht의 색상이 바뀔때 세로선이 그어지게 하는 지표식
감사합니다
if trend == 0 Then
{
if IsNaN(trend[1]) == False and trend[1] != 0 Then
{
up = iff(IsNaN(down[1]) == true,down,down[1]);
arrowUp = up - atr2;
}
else
{
up = iff(IsNan(up[1]) == true, maxLowPrice , max(maxLowPrice, up[1]));
}
atrHigh = up + dev;
atrLow = up - dev;
}
else
{
if isnan(trend[1]) == False and trend[1] != 1 Then
{
down = iff(IsNan(up[1]) == true, up , up[1]);
arrowDown = down + atr2;
}
else
{
down = iff(IsNan(down[1]) == true, minHighPrice ,min(minHighPrice, down[1]));
}
atrHigh = down + dev;
atrLow = down - dev;
}
ht = iff(trend == 0 , up , down);
plot1(ht, "HalfTrend",iff(trend == 0 , Rgb(255,90,90), Green));
2022-10-25
1088
글번호 163256
답변완료
감사합니다
전달잘못된거같아서 죄송합니다
다시 부탁드려요 꾸벅
1번
input : Period(10);
var :AA(False),VV(False),box(0);
AA = crossup(C, max((highest(high,9)[25]+lowest(low,9)[25]+highest(high,26)[25]+lowest(low,26)[25])/4 , (highest(high,52)[25]+lowest(low,52)[25])/2));
VV=V>highest(V, Period)[1];
if AA and VV Then
{
box = Box_New(sDate,sTime,H,NextBarSdate,NextBarStime,L);
Box_SetColor(box,Magenta);
Box_SetFill(box,true);
Box_SetExtFill(box,true);
}
2번
input : midPeriod(26),period(20),d1(2);
var : bb(0);
bb = BollBandUp(Period,d1);
if CrossUp(c,bb[midperiod-1]) Then
Plot1(L,"검색");
다른색으로 두식을 을 합처서 표현 하고자 합니다
위 캡처 처럼 부탁 드립니다 감사합니다
2022-10-25
1128
글번호 163255
답변완료
감사 합니다
1번
input : midPeriod(26),period(20),d1(2);
var : bb(0);
bb = BollBandUp(Period,d1);
if CrossUp(c,bb[midperiod-1]) Then
Plot1(L,"검색");
2번
input : Period(10);
var :AA(False),VV(False),box(0);
AA = crossup(C, max((highest(high,9)[25]+lowest(low,9)[25]+highest(high,26)[25]+lowest(low,26)[25])/4 , (highest(high,52)[25]+lowest(low,52)[25])/2));
VV=V>highest(V, Period)[1];
if AA and VV Then
{
box = Box_New(sDate,sTime,H,NextBarSdate,NextBarStime,L);
Box_SetColor(box,Magenta);
Box_SetFill(box,true);
Box_SetExtFill(box,true);
}
1번 2번 수식으로 시스템식 부탁드립니다
1번 시스템 2번시스템으로 부탁드립니다 꾸뻑
2022-10-24
1127
글번호 163254
답변완료
감사 합니다
1번
input : midPeriod(26),period(20),d1(2);
var : bb(0);
bb = BollBandUp(Period,d1);
if CrossUp(c,bb[midperiod-1]) Then
Plot1(L,"검색");
2번
input : Period(10);
var :AA(False),VV(False),box(0);
AA = crossup(C, max((highest(high,9)[25]+lowest(low,9)[25]+highest(high,26)[25]+lowest(low,26)[25])/4 , (highest(high,52)[25]+lowest(low,52)[25])/2));
VV=V>highest(V, Period)[1];
if AA and VV Then
{
box = Box_New(sDate,sTime,H,NextBarSdate,NextBarStime,L);
Box_SetColor(box,Magenta);
Box_SetFill(box,true);
Box_SetExtFill(box,true);
}
1번 2번 두가지 조건으로 종목검색식 부탁드립니다
1번 2번 각 각 부탁드립니다
2022-10-24
1067
글번호 163253
답변완료
문의 드립니다.
input : Period(10);
Var:선두께(1),상승색(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);
r[0] = 0;
r[1] = 2;
r[2] = 3.;
r[3] = -1;
r[4] = -2.;
r[5] = 1;
r[6] = 0.5;
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
{
Sell();
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];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
Tx = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 빨강
Text_SetColor(Tx,Green);
Text_SetStyle(Tx,2,2);
Text_SetSize(tx,7);
//tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine+NumToStr(value11,2)+NewLine);
//Text_SetStyle(tx,2,1);
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]);
}
#TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]);
#TL_SetColor(TL2[1],RED);
#TL_SetStyle(TL2[1], 3);
#TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]);
#TL_SetColor(TL2[2],RED);
#TL_SetSize(TL2[2],1);
#TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2));
#Text_SetColor(Tx2[2],BWHITE);
#Text_SetStyle(TX2[2],1,1);
#TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]);
#TL_SetColor(TL2[3],RED);
#TL_SetStyle(TL2[3], 3);
#TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]);
#TL_SetColor(TL2[4],RED);
#TL_SetSize(TL2[4],1);
#TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2));
#Text_SetColor(Tx2[4],BWHITE);
#Text_SetStyle(TX2[4],1,0);
}
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];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
TL_SetEnd(TL2[0],date22,time22,fr[0]);
TL_SetEnd(TL2[1],date22,time22,fr[1]);
TL_SetEnd(TL2[2],date22,time22,fr[2]);
Text_SetLocation(TX2[2],date22,time22,fr[2]);
TL_SetEnd(TL2[3],date22,time22,fr[3]);
TL_SetEnd(TL2[4],date22,time22,fr[4]);
Text_SetLocation(TX2[4],date22,time22,fr[4]);
TL_SetEnd(TL2[5],date22,time22,fr[5]);
TL_SetEnd(TL2[6],date22,time22,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
Buy();
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];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
Tx1 = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 파랑
Text_SetColor(Tx1,Green);
Text_SetStyle(Tx1,2,2);
Text_SetSize(tx1,7);
//tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2)+NewLine+NumToStr(value11,2));
//Text_SetStyle(tx,2,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]);
}
}
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];
TL_SetEnd(TL3[0],date32,time32,fr[0]);
TL_SetEnd(TL3[1],date32,time32,fr[1]);
TL_SetEnd(TL3[2],date32,time32,fr[2]);
Text_SetLocation(TX3[2],date32,time32,fr[2]);
TL_SetEnd(TL3[3],date32,time32,fr[3]);
TL_SetEnd(TL3[4],date32,time32,fr[4]);
Text_SetLocation(TX3[4],date32,time32,fr[4]);
TL_SetEnd(TL3[5],date32,time32,fr[5]);
TL_SetEnd(TL3[6],date32,time32,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
TL_SetSize(TL1,선두께);
//TL_SetEnd(tl,NextBarSdate,NextBarStime,NextBarOpen);
-------------------------
위 추세선 수식어를 지표식으로 변경하고 (시스템식으로 바로 사용해도 상관없음 )
그걸 응용하여 그래프내용처럼 식을 구하고자합니다.
장시직시 봉차트가 이동평균선 2300선 위일때
계단식 하락 6파동후 매수 2번째 신호시 체결후 상승 5파에 청산
계단식 상승 6파동후 매도 2번째 신호시 체결후 하락 5파에 청산하는식을
한 수식어에 포함하고자 합니다.
처음의 그래프는 위 수식어의 출력자료입니다.
매매시간의 수식어는 아래 분봉시스템 자료를 대입하면 좋겠고
손절은 40틱 입니다.
input : 익절틱수(0),손절틱수(40);
var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False);
var : ST(0),ET(0),entry(0);
if NextBarSdate != sDate Then
{
DD = DayOfWeek(NextBarSdate);
Year = Floor(NextBarSdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1);
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3);
Summer = Sdate > (10000 * Year) + (100 * 3) + v2 and Sdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = 70000;
ET = 55000;
}
Else
{
ST = 80000;
ET = 65000;
}
}
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 Year > 0 Then
{
IF ET > ST Then
SetStopEndofday(ET);
Else
{
if NextBarSdate != sDate Then
SetStopEndofday(ET);
}
if ((NextBarSdate != sDate and NextBarStime >= ST) or
(NextBarSdate == sDate and NextBarStime >= ST and sTime < ST)) Then
{
if ET < ST Then
SetStopEndofday(0);
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2022-10-25
900
글번호 163252