커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4683
글번호 230811
답변완료
텍스트 표시 없애고 싶습니다
수식 적용해보면 텍스트가 나오는데 텍스트를 없애고 싶습니다.
그리고 지그재그 선의 색상이 부분부분 다르게 표현(어떨때는 하늘색 또는 짙은 하늘색)이 되는데 한가지 색상으로 통일되게 하고 싶어요 .. 색상은 변수로 제가 yellow 라고 입력하면 노란선으로 출력되도록 하고 싶습니다.
그리고 추세선(빨강,파랑)이 생기는데 이거는 필요없으니 지워주시면 감사하겠습니다.
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),
TL_Val1(0),TL_Val2(0);
Array:고점[10,2](0),저점[10,2](0);
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then
TL_Delete(TL2);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
TL2 = TL_New(sDate[sBar],sTime[sBar],저점[2,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL2,BLUE);
}
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] Then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then
TL_Delete(TL3);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
TL3 = TL_New(sDate[sBar],sTime[sBar],고점[2,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL3,RED);
}
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,CYAN);
TL_SetSize(TL2,2);
TL_SetSize(TL3,2);
TL_Val1 = 0; TL_Val2 = 0;
If 고점[2,1] > 고점[1,1] and 고점[2,1] > 고점[3,1] Then
{
If 고점[1,2] < 저점[1,2] and 저점[3,1] < 저점[2,1] Then
TL_Val1 = (저점[2,1]-저점[3,1])/(저점[2,2]-저점[3,2]) * (Index-저점[3,2])+저점[3,1];
If 저점[1,2] < 고점[1,2] and 저점[2,1] < 저점[1,1] Then
TL_Val1 = (저점[1,1]-저점[2,1])/(저점[1,2]-저점[2,2]) * (Index-저점[2,2])+저점[2,1];
}
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] Then
{
If 저점[1,2] < 고점[1,2] and 고점[3,1] > 고점[2,1] Then
TL_Val2 = (고점[2,1]-고점[3,1])/(고점[2,2]-고점[3,2]) * (Index-고점[3,2])+고점[3,1];
If 고점[1,2] < 저점[1,2] and 고점[2,1] > 고점[1,1] Then
TL_Val2 = (고점[1,1]-고점[2,1])/(고점[1,2]-고점[2,2]) * (Index-고점[2,2])+고점[2,1];
}
If TL_Val1 > 0 Then Plot1(TL_Val1,"추세선1",BLUE); //점그래프
If TL_Val2 > 0 Then Plot2(TL_Val2,"추세선2",RED); //점그래프
2016-02-02
147
글번호 95086
삼족오 님에 의해서 삭제되었습니다.
2016-02-02
17
글번호 95077
답변완료
adx 재질문 입니다
input : P1(10),P2(20),P3(40),P4(60),P5(80);
아래 수식을 적용해보니 상승중일 때 노란색으로만 나와야 되는데, 첨부파일에 동그라미 친부분처럼 상승중에 이상하게도 검정이 표현되고 있습니다. 다시 수정 좀 부탁드립니다.
그리고 상승중일때 선이 두껍게 표현되는데, 두껍게 표현되는 것도 삭제해주면 감사하겠습니다.
var1 = ADX(P1);
var2 = ADX(P2);
var3 = ADX(P3);
var4 = ADX(P4);
var5 = ADX(P5);
plot1(var1,"ADX1",iff(var1>var1[1],YELLOW,BLACK),def,iff(var1>var1[1],3,1));
plot2(var2,"ADX2",iff(var1>var1[1],YELLOW,BLACK),def,iff(var2>var2[1],3,1));
plot3(var3,"ADX3",iff(var1>var1[1],YELLOW,BLACK),def,iff(var3>var3[1],3,1));
plot4(var4,"ADX4",iff(var1>var1[1],YELLOW,BLACK),def,iff(var4>var4[1],3,1));
plot5(var5,"ADX5",iff(var1>var1[1],YELLOW,BLACK),def,iff(var5>var5[1],3,1));
2016-02-11
156
글번호 95076
답변완료
재질문입니다.
아래수식은 분봉에서 일간의 갭보정 고가,저가,시가,종가를 호출하는 사용자 함수입니다.
이전 문의드린 내용에서 작성해주신것을 쪼개었는데 맞는지 확인 부탁드립니다.
값이 다르게 나오는것 같습니다.
감사합니다^^
===================================================
#갭보정 N일전 일봉 고가를 나타냅니다.
input : N(numeric);
var : gap(0),sumgap(0),GH(0),cnt(0);
Array : DAH[13](0);
if date!=date[1] THen {
gap = Open-Close[1];
sumGap = sumGap+gap;
DAH[0] = H - sumGap;
for cnt = 1 to 12{
DAH[cnt] = DAH[cnt-1][1];
}
}
GH = H - sumGap;
if GH > DAH[0] Then
DAH[0] = GH;
GDH=DAH[N];
============================
#갭보정 N일전 일봉 저가를 나타냅니다.
input : N(numeric);
var : gap(0),sumgap(0),GL(0),cnt(0);
Array : DAL[13](0);
if date!=date[1] THen {
gap = Open-Close[1];
sumGap = sumGap+gap;
DAL[0] = L - sumGap;
for cnt = 1 to 12{
DAL[cnt] = DAL[cnt-1][1];
}
}
GL = L - sumGap;
if GL < DAL[0] Then
DAL[0] = GL;
GDL=DAL[N];
===============================
#갭보정 N일전 일봉 시가를 나타냅니다.
input : N(numeric);
var : gap(0),sumgap(0),GO(0),cnt(0);
Array : DAO[13](0);
if date!=date[1] THen {
gap = Open-Close[1];
sumGap = sumGap+gap;
DAO[0] = O - sumGap;
for cnt = 1 to 12{
DAO[cnt] = DAO[cnt-1][1];
}
}
GO = O - sumGap;
DAO[0] = GO;
GDO=DAO[N];
=====================================
#갭보정 N일전 일봉 종가를 나타냅니다.
input : N(numeric);
var : gap(0),sumgap(0),GC(0),cnt(0);
Array : DAC[13](0);
if date!=date[1] THen {
gap = Open-Close[1];
sumGap = sumGap+gap;
DAC[0] = C - sumGap;
for cnt = 1 to 12{
DAC[cnt] = DAC[cnt-1][1];
}
}
GC = C - sumGap;
DAC[0] = GC;
GDC=DAC[N];
2016-02-02
143
글번호 95073
답변완료
IF문과 현재가 주문간의 상관관계에 대한 문의입니다
안녕하세요 if문은 봉이 완성시에 조건을 충족할경우 작동되는것으로 알고있고
매수시에 가격타입중 atstop은 조건만족시 즉시 신호가 발생하는 타입으로 알고있습니다
두가지의 성질이 조금 모순적인것같네요
실시간으로 가격을 감시하여 if 문을 충족하면 봉이 완성되기전이라도 신호가 발생되게 할 수는 없나요?
if문 안에 atstop이 있다면 if문 충족이 우선이라 봉이 완성되기전까지는 신호발생이 안되나요?
실시간으로 바로바로 발생되는 코드를 만들고싶습니다 ㅜㅜ
2016-02-02
116
글번호 95072
답변완료
시스템 문의 드립니다.
국내연결선물지수
210틱 틱차트 기준
macd 값
shortPeriod=12
longPeriod=26
sigPeriod=26
다음 기준일때
macd 와 sig 데드크로스가 발생한 후
다음봉 부터 8봉 이내에서 이평선 12일선 돌파시 매도
12틱 손절
20틱 익절
오후 2시 이후 매매종료 및 포지션 청산
부탁 드립니다.
2016-02-02
93
글번호 95071
답변완료
please check
please check attaschment.
always thank you.
2016-02-02
122
글번호 95070
매의눈 님에 의해서 삭제되었습니다.
2016-02-01
9
글번호 95069
답변완료
시스템 문의..
아래와 같은 수식을 받아 쓰고 있읍니다.
(당일 시초가 대비 16% 상승하면 매수하여
트레일스탑 15%, 손절 15% 작용)
var : TT(0),T1(0),Entry(0);
TT = TotalTrades;
if date != date[1] Then
T1 = TT[1];
if MarketPosition == 0 Then
entry = TT-T1;
Else
entry = TT-T1+1;
if MarketPosition == 0 and stime < 100000 and entry < 1 Then
buy("b",AtStop,dayopen*1.16);
#손절
SetStopLoss(15,PercentStop);
#트레일링스탑
SetStopTrailing(1,15,PercentStop,1);
위 식을 아래와 같이 좀더 세분화하고 싶읍니다.
1) 9:30 이전에 시초가 대비 16% 상승한 경우에,
16% 가격 대비 5% 하락한 가격에 매수함.
-> 16%이상 상승후 하락반전하는 상황에서
5% 이상 하락시에 그 가격으로 매수 들어감.
(16% 상승후 하락반전하여 재상승하는 경우 가정함)
(트레일스탑 22%, 손절 9%)
만약, 시초가 대비 16% 상승 못하면 매수 안함.
2) 9:30 이후
시초가 대비 16% 상승한 가격에 매수하여
트레일스탑 15%, 손절 15%
가능하겠읍니까?
2016-02-01
113
글번호 95068