커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1637
글번호 230811
답변완료
추세선
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
{
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
{
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);
양선에 매수,음선에 매도. 감사합니다.
2022-10-20
1040
글번호 163168
강물처름 님에 의해서 삭제되었습니다.
2022-10-20
0
글번호 163167
답변완료
Time 사용법
현재봉이 완성되는데 소용되는 시간을 측정하는데
Time-sTime 또는 Time-Time[1] 로 계산될 수 있다고 생각합니다.
근데 시간 단위가 변경되는 구간, 예를 들면 95900 에서 100100 구간의 경우는 수치가 터무니 없이 나오네요.
매 시간변경 구간에선 같은 현상입니다. 가능한 수식 부탁드립니다.
2022-10-20
814
글번호 163165
답변완료
피라미딩에서 청산안된 수량 강제청산방법
늘 도움받아 감사합니다.
하나 더 여쭙니다
피라미딩상황에서..(5회분할매수)
1차 첫매수후...
가격이 떨어질때마다 추가로 매수하는데..
다 정리하고 남은 첫매수가 고가권이라 정리가 안되있을때
남은 매수수량을 정리하는 방법을 알고싶어요.
예를들어..가격이 하락할때마다 분할매수하는데..
1차 9XXX원에 첫매수 b1 수량 10개
2차 7XXXX원에 추가매수 b2 수량 10개
3차 6XXXX원에 추가매수 b3 수량 20개
.....
이렇게 했을때.
평균단가(avgentry) 가 5%이상이면 정리하게 해서..
b2와 b3는 청산됬는데...
남은 b1이 고가에서 사진거라.. 이익5%가 안되 청산되지못할때..
b1매수가격의 본절(수수료때문에 매수가x1.25% 시 본절가)이면
강제로 청산시키는 방법을 알고싶어요.
( 계속 매매가 되야하는데..청산되지않은물량때문에 신규매수가 이뤄지지 못하는 점때문에..알고싶습니다.)
2022-10-31
937
글번호 163164
knb 님에 의해서 삭제되었습니다.
2022-10-20
27
글번호 163163
답변완료
부탁드립니다
수고하십니다
79257번 재질문입니다
콜등가대입이나 풋등가대입은
지정한 값의 수만큼 지정하시는 부분입니다. 라고 말씀하셨는데 어떻게 무슨뜻인지... (예제로 부탁드립니다)
2022-10-20
1016
글번호 163158
답변완료
시가기준 상단, 하단 매매
시가 기준으로 상단/하단 기준을 정하고,
현재가가 그 밖으로 나갔다 들어올때 진입하는 코드를 짰는데 종종 진입을 안하네요
수정부탁드립니다.
--<개념>-----------------------------------------------------------------------
1) 시가-1.5pt 기준으로 선을 긋고, 현재가가 그 선 밑으로 내려갔다가
시가-1.5pt을 터치하면 매수
2) 시가+1.5pt 기준으로 선을 긋고, 현재가가 그 선 위로 올라갔다가
시가+1.5pt을 터치하면 매도
3) 종가청산
--<코드>----------------------------------------------------------------
Input : 상단포인트(1.5), 하단포인트(1.5);
# 진입 #
# 매수 진입 #
if CrossUp(C,DayOpen-하단포인트) and ExitDate(1) <> date and MarketPosition == 0 then # 시가 대비 -1.5pt를 Cross Down하고, 첫 진입이라면, 보유 포지션이 없다면
buy("매수", AtLimit, DayOpen-하단포인트); # 시가대비 -1.5pt로 체결
# 매도 진입 #
if CrossDown(C,DayOpen+상단포인트) and ExitDate(1) <> date and MarketPosition == 0 then # 시가 대비 +1.5pt를 Cross Up하고, 첫 진입이라면, 보유 포지션이 없다면
sell("매도", AtLimit, DayOpen+상단포인트); # 시가대비 +1.5pt로 체결
# 종가 청산 #
SetStopEndofday(154000);
2022-10-20
1312
글번호 163157
답변완료
청산식
안녕하세요!!
궁금한 점이 있어 질의 드립니다.
요요청산, 샹들리에청산, 추적청산의
1번. 기본 예제식과 변형식
2번. 각 식의 용도와 차이점
3번. 기간값과 승수를 찾는 방법
수고하십시요
2022-10-20
1143
글번호 163143
답변완료
문의 드립니다.
아래 시스템 로직에서 수량을 추가 조절할 수 있도록 부탁드립니다.
var1 = (DayHigh+DayLow)/2;
if CrossUp(C,Var1) Then
Buy();
if CrossDown(c,Var1) Then
ExitLong();
2022-10-20
1240
글번호 163138