커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2650
글번호 230811
답변완료
전환피보나치 하락 크기
input : 전환포인트(0.8);
Array : HD[10](0),HT[10](0),HV[10](0);
Array : LD[10](0),LT[10](0),LV[10](0);
var : cnt(0),Hprice(0),Lprice(0);
var : UpTrend(false),DownTrend(False),Trend(0),Trend1(0),ZigZagTL(0),TX(0),tx1(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),TL8(0),t(0),box1(0),box2(0);
Plot1 (0);
HPrice = H;
LPrice = L;
if Index == 0 or Bdate != Bdate[1] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
trend = 0;
trend1 = 0;
t = 0;
}
Else
{
if Trend == 0 Then
{
if L < LV[0] Then
{
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
if H > HV[0] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
}
}
UpTrend = HPrice >= LV[0]+전환포인트;
DownTrend = LPrice <= HV[0]-전환포인트;
if trend <= 0 and UpTrend == true Then
{
trend = 1;
trend1 = trend[1];
For cnt = 9 DownTo 1
{
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HV[cnt] = HV[cnt-1];
}
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]);
TL_SetColor(ZigZagTL,Gold);
TL_SetSize(ZigZagTL,3);
TX = Text_New(HD[0],HT[0],HV[0],NumToStr(HV[0]-LV[0],2)+" ");
Text_SetStyle(TX,1,1);
Text_SetColor(TX,Black);
Text_SetSize(tx,30);
Text_SetBold(tx,1);
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(33.33/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var5 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
var6 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(66.67/100));
TL1 = TL_New(LD[0],LT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL2 = TL_New(LD[0],LT[0],var2,NextBarSdate,NextBarStime,var2);
TL3 = TL_New(LD[0],LT[0],var3,NextBarSdate,NextBarStime,var3);
TL4 = TL_New(LD[0],LT[0],var4,NextBarSdate,NextBarStime,var4);
TL5 = TL_New(LD[0],LT[0],var5,NextBarSdate,NextBarStime,var5);
TL6 = TL_New(LD[0],LT[0],var6,NextBarSdate,NextBarStime,var6);
TL7 = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(TL1,Magenta);
TL_SetColor(TL2,Orange);
TL_SetColor(TL3,Magenta);
TL_SetColor(TL4,Blue);
TL_SetColor(TL5,Magenta);
TL_SetColor(TL6,Orange);
TL_SetColor(TL7,Magenta);
TL_SetSize(TL7,1);
box1 = Box_New(LD[0],LT[0],Var2,NextBarSdate,NextBarStime,Var3);
Box_SetColor(box1,Yellow);
Box_SetFill(box1,true,30);
box2 = Box_New(LD[0],LT[0],Var5,NextBarSdate,NextBarStime,Var6);
Box_SetColor(box2,Yellow);
Box_SetFill(box2,true,30);
t = t+1;
if t == 1 Then
{
tx1 = Text_New(NextBarSdate,NextBarStime,LV[0]-0.13,"■");
Text_SetColor(tx1,Red);
Text_SetSize(tx1,50);
Text_SetStyle(tx1,1,2);
}
}
Else if trend >= 0 and DownTrend Then//하락추세 전환
{
trend = -1;
trend1 = trend[1];
For cnt = 9 DownTo 1
{
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LV[cnt] = LV[cnt-1];
}
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]);
TL_SetColor(ZigZagTL,Gold);
TL_SetSize(ZigZagTL,3);
TX = Text_New(LD[0],LT[0],LV[0],NumToStr(HV[0]-LV[0],2)+" ");
Text_SetStyle(TX,1,0);
Text_SetColor(TX,Black);
Text_SetSize(tx,30);
Text_SetBold(tx,1);
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(33.33/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var5 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
var6 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(66.67/100));
TL1 = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL2 = TL_New(HD[0],HT[0],var2,NextBarSdate,NextBarStime,var2);
TL3 = TL_New(HD[0],HT[0],var3,NextBarSdate,NextBarStime,var3);
TL4 = TL_New(HD[0],HT[0],var4,NextBarSdate,NextBarStime,var4);
TL5 = TL_New(HD[0],HT[0],var5,NextBarSdate,NextBarStime,var5);
TL6 = TL_New(HD[0],HT[0],var6,NextBarSdate,NextBarStime,var6);
TL7 = TL_New(HD[0],HT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(TL1,Magenta);
TL_SetColor(TL2,Orange);
TL_SetColor(TL3,Magenta);
TL_SetColor(TL4,Blue);
TL_SetColor(TL5,Magenta);
TL_SetColor(TL6,Orange);
TL_SetColor(TL7,Magenta);
TL_SetSize(TL7,1);
box1 = Box_New(HD[0],HT[0],Var2,NextBarSdate,NextBarStime,Var3);
Box_SetColor(box1,Yellow);
Box_SetFill(box1,true,30);
box2 = Box_New(HD[0],HT[0],Var5,NextBarSdate,NextBarStime,Var6);
Box_SetColor(box2,Yellow);
Box_SetFill(box2,true,30);
t = t+1;
if t == 1 Then
{
tx1 = Text_New(NextBarSdate,NextBarStime,HV[0]+0.13,"■");
Text_SetColor(tx1,Blue);
Text_SetSize(tx1,50);
Text_SetStyle(tx1,1,2);
}
}
Else
{
if trend == 1 Then
{
if trend1 == 0 Then
{
LV[0] = DayLow;
}
if HPrice > HV[0] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]);
Text_SetLocation(TX,HD[0],HT[0],HV[0]);
Text_SetString(TX,NumToStr(HV[0]-LV[0],2)+" ");
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(33.33/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var5 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
var6 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(66.67/100));
TL_SetBegin(TL1,LD[0],LT[0],HV[0]);
TL_SetBegin(TL2,LD[0],LT[0],Var2);
TL_SetBegin(TL3,LD[0],LT[0],Var3);
TL_SetBegin(TL4,LD[0],LT[0],Var4);
TL_SetBegin(TL5,LD[0],LT[0],Var5);
TL_SetBegin(TL6,LD[0],LT[0],Var6);
TL_SetBegin(TL7,LD[0],LT[0],LV[0]);
TL_SetEnd(TL1,Sdate,Stime,HV[0]);
TL_SetEnd(TL2,Sdate,Stime,Var2);
TL_SetEnd(TL3,Sdate,Stime,Var3);
TL_SetEnd(TL4,Sdate,Stime,Var4);
TL_SetEnd(TL5,Sdate,Stime,Var5);
TL_SetEnd(TL6,Sdate,Stime,Var6);
TL_SetEnd(TL7,Sdate,Stime,LV[0]);
Box_SetBegin(Box1,LD[0],LT[0],Var2);
Box_SetEnd(Box1,sDate,sTime,Var3);
Box_SetBegin(Box2,LD[0],LT[0],Var5);
Box_SetEnd(Box2,sDate,sTime,Var6);
if t == 1 Then
Text_SetLocation(tx1,sDate,sTime,LV[0]-0.13);
}
}
if trend == -1 Then
{
if trend1 == 0 Then
{
HV[0] = DayHigh;
}
if LPrice < LV[0] Then
{
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]);
Text_SetLocation(TX,LD[0],LT[0],LV[0]);
Text_SetString(TX,NumToStr(HV[0]-LV[0],2)+" ");
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(33.33/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var5 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
var6 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(66.67/100));
TL_SetBegin(TL1,HD[0],HT[0],HV[0]);
TL_SetBegin(TL2,HD[0],HT[0],Var2);
TL_SetBegin(TL3,HD[0],HT[0],Var3);
TL_SetBegin(TL4,HD[0],HT[0],Var4);
TL_SetBegin(TL5,HD[0],HT[0],Var5);
TL_SetBegin(TL6,HD[0],HT[0],Var6);
TL_SetBegin(TL7,HD[0],HT[0],LV[0]);
TL_SetEnd(TL1,Sdate,Stime,HV[0]);
TL_SetEnd(TL2,Sdate,Stime,Var2);
TL_SetEnd(TL3,Sdate,Stime,Var3);
TL_SetEnd(TL4,Sdate,Stime,Var4);
TL_SetEnd(TL5,Sdate,Stime,Var5);
TL_SetEnd(TL6,Sdate,Stime,Var6);
TL_SetEnd(TL7,Sdate,Stime,LV[0]);
Box_SetBegin(Box1,HD[0],HT[0],Var2);
Box_SetEnd(Box1,sDate,sTime,Var3);
Box_SetBegin(Box2,HD[0],HT[0],Var5);
Box_SetEnd(Box2,sDate,sTime,Var6);
if t == 1 Then
Text_SetLocation(tx1,sDate,sTime,HV[0]+0.13);
}
}
}
}
하락추세선의 크기가 1.6p 되면, 봉 위에 네모 표시. 감사합니다.
2024-06-18
1162
글번호 180720
답변완료
문의 드립니다
해외선물 매매입니다.
매매시간 : 07:00~익일 06:00
전일 전체 하락폭을 100% 라고 가정하고 그 하락폭의 60%가 당일 나왔을때 매수후
그전 최고점에 청산이나 마감시간인 익일 06시 청산의 수식어입니다.
2024-06-18
832
글번호 180719
답변완료
수식요청
안녕하세요
DATE 1 2분봉 이평60선
DATE 2 30분봅 이평 20선
매수
DATE2 30분봉이평 20선 위에있는상태에서
DATE1 2분봉이평 60선 상향돌파시 매수
매도
매수반대
청산 손절
2분봉 60선 상.하향시
2024-06-18
699
글번호 180718
답변완료
문의드립니다.
1. 최근 20봉에서 가장 큰 거래량이 터지면서
2. 최근 10개봉의 최고가를 돌파하면서
3. 볼린저밴드 상단선을 종가로 뚫었을 때 매수
그 반대로는 매도인 시스템 매매식을 부탁드립니다.
청산은 진입봉의 시가를 5틱 이상 뚫었을 때 입니다.
2024-06-18
780
글번호 180717
답변완료
수식 문의 드립니다
매수: Volume RSI(9) 가 60 상향시 매수
매도 : Volume RSI(9) 가 60 하향시 매도
2024-06-17
895
글번호 180716
답변완료
[함수] valueWhen(2) 구현방법부탁 드립니다.
안녕하세요..
키움의 아래와 같은 수식을 예스에서 사용할려면 어떻게 해야 될까요??
<키움수식>
A= c==o and c<h;
valuewhen(2,A,avg(c,20))
2024-06-17
1103
글번호 180715
답변완료
검색식 부탁 드려요
1. band width (18,2) 가 침체(0.1)이하에서,
2연속 상승추세 일때 종목 검색식 부탁드려요.
과열 0.9
침체 0.1
2.스토캐스틱 슬로우 골든크로스 종목 검색 부탁드려요.
(수식1 이 수식2 를 골든크로스)
수식1 > Slow %K 12,5
Stochasticsslow(sto1,sto2)
수식2 > Slow %D 5
eavg(Stochasticsslow(sto1,sto2),sto3)
Sto 1 12
Sto 2 5
Sto 3 5
과열 80
침체 20
2024-06-18
1102
글번호 180714
답변완료
두가지 질문드립니다.
1.
if MarketPosition == 1 and IsEntryName("b3") == true and MaxContracts == 1 Then
{
if c > value1 and stm1 > stm2 Then
Buy("b4",OnClosE,DeF,1);
}
위 식에서 오류가 나서 아래와 같이 중괄호를 변경해도 계속 오류입니다. 확인부탁드립니다.
if MarketPosition == 1 and IsEntryName("b3") == true and MaxContracts == 1 Then
{
if c > value1 and stm1 > stm2 Then
{
Buy("b4",OnClosE,DeF,1);
}
}
2.
{
Buy("b4",OnClosE,DeF,진입수량1);
ExitLong("bx4",AtStop,L);
}
ExitLong("bx5",AtStop,L[BarsSinceEntry]);
위의 식 중 ExitLong("bx4",AtStop,L); 은 중복된 의미라서 빼도 되는가요?
2024-06-17
1040
글번호 180713
산수유 님에 의해서 삭제되었습니다.
2024-06-17
0
글번호 180712