커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6330
글번호 230811
답변완료
부탁 드립니다
도움에 감사 드립니다..
예를 들어 5일전 일봉상 코스피 지수가 1% 이상 하락 하였을때...
(또는 단순히 5일전 일봉에서)
개별 종목이 1%이상 상승 한 종목을 검색하는 수식이 가능 하겠는지요?
미리 감사 드립니다..
2023-02-19
1679
글번호 166442
답변완료
년봉문의드립니다.
올해기준은 아래식인데요.
전년기준의 시가종가기준의 중심가격과 고저중심가격을 표현하고 싶습니다.
if date > date[1]+1000 Then{
var21 = O;
var22 = H;
var23 = L;
}
if H > var22 Then{
var22 = H;
}
if L < var23 Then{
var23 = L;
}
2023-02-19
1081
글번호 166441
답변완료
문의드립니다
input : starttime(200000),endtime(80000),n(30);
var : Tcond(false),hh(0),h1(0),ll(0),l1(0);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
}
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
input : 익절틱수(0),손절틱수(0);
if Tcond == true Then
{
if NextBarSdate != sDate Then
{
if NextBarOpen != C Then
{
Buy("b",AtStop,NextBarOpen+PriceScale*12);
}
}
ExitLong("bx",AtMarket);
if NextBarOpen == C Then
{
Buy("b1",AtStop,NextBarOpen+PriceScale*12);
}
ExitLong("bx1",AtMarket); }
if NextBarSdate != sDate Then
{
if NextBarOpen != C Then
{
Sell("s",AtStop,NextBarOpen-PriceScale*12);
}
}
ExitShort("sx",AtMarket);
if NextBarOpen == C Then
{
Sell("s1",AtStop,NextBarOpen-PriceScale*12);
}
ExitShort("sx1",AtMarket);
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
위 수식어를 해외선물에서 24시부터 익일 시가에 청산하는
240분봉 캔들을 사용하고 있습니다.
첫번째 캔들신호가 있을시에만 주문을 다르게 할 수 있는지요 ?
buy의 주문은 이전 캔들(20시~ 24시)의 최저점에서 +10틱에 매수
sell의 주문은 이전 캔들의(20시~ 24시)의 최고점에서 -10틱에 매도
청산은 다음봉(익일4시) 시가에 하는건 수식어 내용과 동일합니다.
--------------------------------------------------
위의 내용을 조금 변형된 일반수식어로 2개만 추가 하고자 합니다.
1.
해외선물 매매에서 20 ~ 24시 사이 최저점의 +10틱에서 매수후 청산은 익일4시의 수식어
익절 100 손절 100
2.
해외선물 매매에서 20 ~ 24시 사이 최고점의 -10틱에서 매도후 청산은 익일4시의 수식어
익절 100 손절 100
2023-02-19
899
글번호 166440
답변완료
박스 보관
input : Period(120),틱1(4),틱2(5);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),tl9(0),
date21(0),date22(0),time21(0),time22(0),txx(0), vTL(0), vTL9(0),txxx(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0),tx4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
var : upt(0),dnt(0),box(0);
Plot1(value12);
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];
}
LoVal[0] = L;
LoBar[0] = 0;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
Condition3 = False;
if Condition3 == False and Value12 <= value11-0.5 and value12 < DayHigh-0.8 Then
{
Tx4=Text_New(date11,time11,value11+PriceScale*2,"●");
Condition3 = true;
Text_SetStyle(tx4,2,2);
Text_SetColor(tx4,Black);
Text_SetSize(tx4,35);
}
Txx = Text_New(date11,time11,loval[0]-PriceScale*8,"●");
Condition99 = true;
Text_SetColor(Txx,Red);
Text_SetStyle(Txx,2,2);
Text_SetSize(txx,30);
if Condition99 == true and Loval[0] <= loval[1]-PriceScale*틱2 Then
{
Condition99 = False;
Text_Delete(txx);
PlaySound("C:₩예스트레이더₩data₩Sound₩reject.wav");
}
Text_Delete(dnt);
var1 = loval[0]-loval[1];
dnt = Text_New(date12,time12,value12,NewLine+NumToStr(abs(var1/PriceScale),0)+" ");
Text_SetColor(dnt,iff(var1>0,Red,Blue));
Text_SetStyle(dnt,1,1);
Text_SetSize(dnt,35);
Text_SetBold(dnt,1);
Box_Delete(box);
Condition88 = False;
if Condition88 ==False Then
{
if value12 <= value11-0.85 Then
{
Condition88 = true;
box = Box_New(date12,time12,H,NextBarSdate,NextBarStime,L);
Box_SetColor(box,Lime);
Box_SetFill(box,true,30);
Box_SetExtFill(box,true);
}
}
}
Else
{
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date22 = date[0];
time22 = stime[0];
var1 = loval[0]-loval[1];
Text_SetLocation(dnt,date12,time12,value12);
Text_SetString(dnt,NewLine+NumToStr(abs(var1/PriceScale),0)+" ");
Text_SetColor(dnt,iff(var1>0,Red,Blue));
Text_SetStyle(dnt,1,1);
Text_SetSize(dnt,35);
Text_SetBold(dnt,1);
if Condition88 ==False Then
{
if value12 <= value11-0.85 Then
{
Condition88 = true;
box = Box_New(date12,time12,H,NextBarSdate,NextBarStime,L);
Box_SetColor(box,Lime);
Box_SetFill(box,true,30);
Box_SetExtFill(box,true);
}
}
}
Box_SetEnd(box,NextBarSdate,NextBarStime,L);
if Condition3 == False and Value12 <= value11-0.5 and value12 < DayHigh-0.8 Then
{
Tx4 =Text_New(date11,time11,value11+PriceScale*2,"●");
Condition3 = true;
Text_SetColor(Tx4,Black);
Text_SetStyle(tx4,2,2);
Text_SetSize(tx4,35);
}
TL_Delete(tl);
if Condition99 == true and Loval[0] <= loval[1]-PriceScale*틱2 Then
{
Condition99 = False;
Text_Delete(txx);
PlaySound("C:₩예스트레이더₩data₩Sound₩reject.wav");
}
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
if Condition3 == true Then
Text_Delete(tx4);
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
}
HiVal[0] = H;
HiBar[0] = 0;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
if Condition99 == true and Loval[0] >= Loval[1]-PriceScale*틱1 Then
{
Condition99 = False;
Text_Delete(txx);
}
Text_Delete(upt);
var1 = hival[0]-hival[1];
upt = Text_New(date12,time12,value12,NumToStr(abs(var1/PriceScale),0)+" "+NewLine);
Text_SetColor(upt,iff(var1>0,Red,Blue));
Text_SetStyle(upt,2,0);
Text_SetSize(upt,35);
Text_SetBold(upt,1);
Box_Delete(box);
Condition88 = False;
if Condition88 ==False Then
{
if value12 >= value11+0.85 Then
{
Condition88 = true;
box = Box_New(date12,time12,H,NextBarSdate,NextBarStime,L);
Box_SetColor(box,Magenta);
Box_SetFill(box,true,30);
Box_SetExtFill(box,true);
}
}
}
Else
{
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date32 = date[0];
time32 = stime[0];
var1 = hival[0]-hival[1];
Text_SetLocation(upt,date12,time12,value12);
Text_SetString(upt,NumToStr(abs(var1/PriceScale),0)+" "+NewLine);
Text_SetColor(upt,iff(var1>0,Red,Blue));
Text_SetStyle(upt,2,0);
Text_SetSize(upt,35);
Text_SetBold(upt,1);
if Condition88 == False Then
{
if value12 >= value11+0.85 Then
{
Condition88 = true;
Condition88 = true;
box = Box_New(date12,time12,H,NextBarSdate,NextBarStime,L);
Box_SetColor(box,Magenta);
Box_SetFill(box,true,30);
Box_SetExtFill(box,true);
}
}
}
Box_SetEnd(box,date12,time12,Value12);
}
}
상승추세선에서 발생한 박스는 현재 수식과 같이 음전환시 삭제로 동일하고,
하락추세선에서 양전환될 때 박스 삭제하는 부분만 양전환시 삭제에서 저장으로 변경.
박스 시작점과 끝 지점(전환될 때까지만 표시)은 지금과 동일.
이후에도 상승추세선에서 생성된 박스는 음전환시 항상 삭제하고, 새로운 하락추세선에서 박스 생성되면 모두 저장. 감사합니다.
2023-02-19
1377
글번호 166439
답변완료
지표식과 종목검색식 부탁드립니다
안녕하세요
종가무렵 또는 장마감후 볼수있는 지표와 검색식을 문의드립니다.
1: 지표식 : 일봉, 10분봉
A : 일봉에서 전일보다 거래량이 5배이상 증가한 양봉이 발생하였고 +
10분봉에서도 "1) 전봉거래량보다 5배 증가한 양봉이 5개 이상 발생"했다면
1. 일봉에서 A일때 "1)이 발생한 경우중 가장 큰 거래량일때의 종가" 표시식
2. 분봉에서 A일때 "1)이 발생한 경우중 가장 큰 거래량일때의 종가"를
그이후 주가가 돌파할때까지 점이나 선으로 표시해주는 지표식
3. 분봉에서 A일때 "1)이 발생한 경우중 가장 큰 거래량일때의 종가"를
그이후 주가가 돌파한경우 이를 일봉에 표시하는 식
B.검색식 : 일봉, 10분봉
1-1. 일봉상 A가 발생한 종목 과
1-2 그날이후 1)의 종가를 상향 돌파한종목의 검색식
2-1. 분봉에서 A가 발생한 종목 과
2-2 그날이후 1)의 종가를 상향 돌파한종목의 검색식
질문 내용이 장황해서 번거럽게 미안합니다.
수고하세요
2023-02-18
1039
글번호 166438
에헤라디야 님에 의해서 삭제되었습니다.
2023-02-17
5
글번호 166437
답변완료
문의드립니다.
안녕하세요 문의드립니다.
익절, 손절, 시간청산시 청산 신호(봉)에
최고누적손익 대비 손실폭을 표시하고 싶습니다.
누적손익 100 200 150 120
손실폭 0 0 -50 -80 <--표시 (pt)
| |
(전략차트 기간 내 표시된 봉 기준입니다.)
2023-02-18
1273
글번호 166436
답변완료
수식변경 부탁드립니다.
다음의 수식을 종목검색식으로 변환을 부탁드립니다.
Mp_H = eavg(H, 기간);
Mp_L = eavg(L, 기간);
Mp_C = eavg(C, 기간);
횡보 =
Mp_H > Max(C, O) &&
Mp_L < Min(C, O);
횡보조건 = sum(횡보, K)==K;
횡보조건(1) &&
CrossUp(C, Mp_H) &&
Mp_C > Mp_C(1)
기간 : 5
K : 10
2023-02-17
1445
글번호 166435
답변완료
고저가 라인
input : Period(120),선두께(2);
Var:상승색(Red), 하락색(Blue);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
var : tl(0),tl1(0),tl2(0),tl3(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
Plot1(0);
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];
}
LoVal[0] = L;
LoBar[0] = 0;
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,하락색);
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
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];
}
HiVal[0] = H;
HiBar[0] = 0;
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,상승색);
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
TL_SetSize(TL1,선두께);
var : hh(0),ll(0);
if Bdate != Bdate[1] Then
{
TL_Delete(tl2);
TL_Delete(tL3);
hh = 0;
ll = 0;
}
if T == 1 and date32 == sDate Then
{
if hh == 0 or (hh > 0 and value12 > hh) Then
{
hh = value12;
TL_Delete(tl3);
TL3 = tl_new(date32,time32,value12,NextBarSdate,NextBarStime,value12);
TL_SetExtRight(TL3,true);
TL_SetColor(tL3,Red);
TL_SetSize(TL3,선두께);
}
}
if T == -1 and date22 == sDate Then
{
if ll == 0 or (ll > 0 and value12 < ll) Then
{
ll = value12;
TL_Delete(tl2);
TL2 = tl_new(date22,time22,value12,NextBarSdate,NextBarStime,value12);
TL_SetExtRight(TL2,true);
TL_SetColor(tL2,Blue);
TL_SetSize(TL2,선두께);
}
}
고저가를 갱신할 때만 교체하는 당일 고저가 라인을, 개별 추세선 고저가 라인으로 변경.
돌파 붕괴와 관계없이, 추세선이 전환될 때마다 모든 추세선의 상,하단에서 고저가 라인 생성해서, 하단은 다음 하단, 상단은 다음 상단 라인이 생성될 때까지 우측 수평 연장후 모두 저장하기로 변경.
고가라인, 저가라인 색상 별도. 감사합니다.
2023-02-19
1710
글번호 166434