커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1380
글번호 230811
답변완료
수식 변경 부탁드립니다..
아래 수식은 얼마전 부탁드렸던 수식입니다. 감사합니다
이 수식은 두 종목의 당일 등락률 차이에 대한 신호인데 이것을
현재 캔들 등락률 차이로 수정하고 싶습니다
어떤 수식을 수정해야 하는지 알려주시면 감사하겠습니다..
input : 등락률간격(3);
var : R1(0,Data1),R2(0,Data2),diff(0,Data1);
#Data1 시가대이 등락률
R1 = Data1((C-DayOpen)/DayOpen*100);
#Data2 시가대이 등락률
R2 = Data2((C-OpenD(0))/OpenD(0)*100);
diff = R1-R2;
if diff >= 등락률간격 then
Sell();
if diff <= -등락률간격 then
Buy();
2024-08-26
898
글번호 182819
답변완료
추세선 crossup
전에 문의했던 추세선 돌파가 잘 안나와서 재질문 드립니다
추세선 연장을 한 상태이면 추세선의 시작점, 끝점을 이은 선만이 아닌 연장된 선까지 해당되는게 아닌가요?
제가 이해를 제대로 못한건지 뜻하는대로 잘 안나와서 여쭤봅니다
스샷을 첨부했고 수식은 아래와 같습니다
스샷을 보시면 2번째 추세선을 가장 긴 장대양봉의 종가가 돌파를 한 상태인데 표시가 안나오네요. 전 봉의 종가는 추세선 아래에 있었고요. 그럼 돌파의 의미가 맞지 않나요?~
crossup(c,value1) 대신에 if c>value1 and c[1]<value1 then 으로도 해봤는데 안나오네요 ㅠㅠ...
일전에 plot 으로 표현했다가 점그래프가 너무 작게 나와서 텍스트로 다시 수정해주셨는데 (txx 부분)
한번 검토 해주셨으면 감사하겠습니다
+추가로 하나 부탁드려도 될까요
두개의 상향 추세선 (lb > hb) 의 시작점 사이가 n봉 (10봉 이상일때) 고점 갱신 라인을, 하향 추세선 (lb < hb) 의 시작점 사이가 20봉 이상일때 고점 라인을 나타내는것도 가능할까요?
감사합니다
var : n(18);
var : cnt(0),hh(0),hb(0),ll(0),lb(0),TL(0),TX(0),tx1(0),TL1(0),tl2(0);
if CountIf(H >= L*1.11,n) >= 1 Then
{
#"최근봉"만 표시되게 하기위해 "직전에서 출력된 추세선과 텍스트는 삭제"
#n개봉 최고가와 최고가위치(몇봉전인지) 계산
#n개봉 최저가와 최저가위치(몇봉전인지) 계산
hh = 0;
hb = 0;
ll = 0;
lb = 0;
For cnt = 0 to n-1
{
if hh == 0 or (hh > 0 and h[cnt] > hh) Then
{
hh = h[cnt];
hb = cnt;
}
// plot1(hh);
if ll == 0 or (ll > 0 and l[cnt] < ll) Then
{
ll = l[cnt];
lb = cnt;
}
// Plot4(ll,"ll",LightGreen);
// TL2 = TL_New(sDate[n-1],sTime[n-1],hh,sDate[0],sTime[0],hh);
// TL_SetColor(tl2,Yellow);
}
if (lb > hb and hh >= ll*1.24) or (lb < hb and ll <= hh*0.80) Then
{
// TL_Delete(TL);
// Text_Delete(TX);
//TL_Delete(TL1);
if (hb < lb and abs(hb-lb) <= 18) or (hb > lb and abs(hb-lb) <= 9) Then
{
#상향,하향 일때 봉갯수 조건
TL = TL_New(sDate[hb],sTime[hb],hh,sDate[lb],sTime[lb],ll);
TL_SetDrawMode(tl,0);
TL_SetExtRight(tl,true);
#20개봉 수평선
TL1 = TL_New(sDate[n-1],sTime[n-1],hh,sDate[0],sTime[0],hh);
TL_SetDrawMode(tl1,0);
TL_SetColor(tl1,Tomato);
TL_SetSize(tl1,0);
#최고가가 더 가까우면 빨강 아니면 파랑
if lb > hb Then
{
TL_SetColor(TL,Pink);
TL_SetStyle(tl,2);
}
Else
{
TL_SetColor(TL,LightBlue);
TL_SetStyle(tl,2);
}
#최고가 이후 최저가 발생했고 5봉이내
#등락률
if (hb > lb and abs(hb-lb) <= 5) Then
{
TL_SetColor(tl,Yellow);
TX1 = text_new(sDate,sTime,LL,NumToStr((ll-hh)/hh*100,0));
Text_SetStyle(tx1,2,0);
}
//TL_Delete(TL1);
// TX = Text_New(TL_GetEndDate(TL),TL_GetEndTime(TL),TL_GetendVal(TL),NumToStr(abs(hb-lb),0));
Text_SetSize(tx,12);
}
}
}
var : txx(0);
#돌파 텍스트 표시
if TL_GetValue(TL,sDate,stime) > 0 then
{
value1 = TL_GetValue(TL,sDate,stime);
if crossup(c,value1) Then
{
txx = Text_New(sDate,sTime,L,"●");
Text_SetColor(txx,LightGreen);
Text_SetSize(txx,15);
Text_SetStyle(txx,2,0);
}
}
#추세선값 상향돌파
/*
if TL_GetValue(TL,sDate,stime) > 0 then
{
value1 = TL_GetValue(TL,sDate,stime);
if CrossUp(l,Value1) Then
plot3(high,"tlcross",LightGreen);
}
2024-08-26
806
글번호 182818
답변완료
수식 문의 드립니다
안녕하세요. 항상 도움을 받고 있습니다.
아래 매매식을 부탁드릴 수 있을까요?
5분 차트를 기준으로, 0800부터 12개봉 기간 중 고가를 찾다가 0930부터 매매 시작
매수 조건 : 주간 macd 히스토그램 상승 + 일중 고점 대비 1% 하락한 후에. 해당 가격을 상승돌파하는 경우
매수 청산조건 : 장마감 15:30 도달시
매도 조건 : 주간 macd 히스토그램 하락 + 일중 저점 대비 1% 상승한 후에. 해당 가격을 하락돌파하는 경우
매도 청산조건 : 장마감 15:30 도달시
감사합니다;
2024-08-26
981
글번호 182817
답변완료
종목 검색식 부탁드립니다.
diff = diff + (upvol-downvol);
아래와 같은 당일체결조건을 만족하는 종목검색을 하고 싶습니다
1.
diff[1]~[10] > 0
and
diff 값을 비교 70%이상 참일 경우
(ex) diff>diff[1] && diff[1]>diff[2] && diff[2]>diff[3] && .... diff[9]>diff[10]
2. diff[1]~[10] < 0
and
diff값을 5봉 단위로 비교 70% 이상 참일 경우
(ex) diff[1]>diff[5] && diff[5]>diff[10] && diff[10]>diff[15] && ....diff[55]>diff[60])
좀 깔끔하게 나타내고 싶습니다.
2024-08-26
792
글번호 182816
아로 님에 의해서 삭제되었습니다.
2024-08-26
35
글번호 182815
답변완료
키움 수식을 예스트레이더용 검색식으로 변환
ma20=(npredayclose(19)+npredayclose(18)+npredayclose(17)+npredayclose(16)+npredayclose(15)+npredayclose(14)+npredayclose(13)+npredayclose(12)+npredayclose(11)+npredayclose(10)+npredayclose(9)+npredayclose(8)+npredayclose(7)+npredayclose(6)+npredayclose(5)+npredayclose(4)+npredayclose(3)+npredayclose(2)+npredayclose(1)+close)/20;
A=ma20+(ma20 *0.2);
B=EnvelopeUp(20,9);
(B *1.04 >= A and B*0.96<= A)
and c > Highest(H(1), 7)
and c>A and c>B and l< A and l< B
키움수식을 예스트레이더용 종목검색식으로 변환부탁드립니닫.
2024-08-25
725
글번호 182814
답변완료
예스트레이더 종목검색으로 요청합니다.
분봉상 캔들이 시가아래(-0.5%에서-3%사이) 있다가 시가를 재돌파하는 예스트레이더 종목검색으로
요청합니다...
2024-08-25
773
글번호 182813
답변완료
문의드립니다
input : tenkan_len(9),tenkan_mult(2),kijun_len(26),kijun_mult(4),spanB_len(52),spanB_mult(6),offset(26);
var : ATR1(0),up1(0),dn1(0),upper1(0),lower1(0),os1(0),spt1(0),max1(0),min1(0),tenkan(0);
var : ATR2(0),up2(0),dn2(0),upper2(0),lower2(0),os2(0),spt2(0),max2(0),min2(0),kijun(0);
var : senkouA(0);
var : ATR3(0),up3(0),dn3(0),upper3(0),lower3(0),os3(0),spt3(0),max3(0),min3(0),senkouB(0);
var : tenkan_css(0),kijun_css(0),cloud_a(0),cloud_b(0),chikou_css(0),tx(0);
ATR1 = ATR(tenkan_len)*tenkan_mult;
up1 = (h+L)/2 + ATR1;
dn1 = (h+L)/2 - ATR1;
upper1 = iff(C[1] < upper1[1],min(up1,upper1[1]),up1);
lower1 = iff(C[1] > lower1[1],max(dn1,lower1[1]),dn1);
os1 = iff(c > upper1 , 1 ,IFf(c < lower1, 0 , os1[1]));
spt1 = iff(os1 == 1 , lower1 , upper1);
max1 = iff(CrossUp(c,spt1) or CrossDown(c,spt1) , max(c,max1[1]) , IFf(os1 == 1 , max(c,max1[1]) , spt1));
min1 = iff(CrossUp(c,spt1) or CrossDown(c,spt1) , min(c,min1[1]) , iff(os1 == 0 , min(c,min1[1]) , spt1));
tenkan = avg(max1,min1);
ATR2 = ATR(kijun_len)*kijun_mult;
up2 = (h+L)/2 + ATR2;
dn2 = (h+L)/2 - ATR2;
upper2 = iff(C[1] < upper2[1],min(up2,upper2[1]),up2);
lower2 = iff(C[1] > lower2[1],max(dn2,lower2[1]),dn2);
os2 = iff(c > upper2 , 1 ,IFf(c < lower2, 0 , os2[1]));
spt2 = iff(os2 == 1 , lower2 , upper2);
max2 = iff(CrossUp(c,spt2) or CrossDown(c,spt2) , max(c,max2[1]) , IFf(os2 == 1 , max(c,max2[1]) , spt2));
min2 = iff(CrossUp(c,spt2) or CrossDown(c,spt2) , min(c,min2[1]) , iff(os2 == 0 , min(c,min2[1]) , spt2));
kijun = avg(max2,min2);
senkouA = avg(kijun,tenkan);
ATR3 = ATR(spanB_len)*spanB_mult;
up3 = (h+L)/2 + ATR3;
dn3 = (h+L)/2 - ATR3;
upper3 = iff(C[1] < upper3[1],min(up3,upper3[1]),up3);
lower3 = iff(C[1] > lower3[1],max(dn3,lower3[1]),dn3);
os3 = iff(c > upper3 , 1 ,IFf(c < lower3, 0 , os3[1]));
spt3 = iff(os3 == 1 , lower3 , upper3);
max3 = iff(CrossUp(c,spt3) or CrossDown(c,spt3) , max(c,max3[1]) , IFf(os3 == 1 , max(c,max3[1]) , spt3));
min3 = iff(CrossUp(c,spt3) or CrossDown(c,spt3) , min(c,min3[1]) , iff(os3 == 0 , min(c,min3[1]) , spt3));
senkouB = avg(max3,min3);
tenkan_css = Red;
kijun_css = Blue;
cloud_a = teal;
cloud_b = red;
chikou_css = Green;
plot1(tenkan,"Tenkan-Sen",tenkan_css);
plot2(kijun,"Kijun-Sen",kijun_css);
if CrossUp(tenkan,kijun) Then
{
tx = Text_New(sDate,sTime,kijun,"●");
Text_SetStyle(tx,2,1);
}
if CrossDown(tenkan,kijun) Then
{
Text_New(sDate,sTime,kijun,"■//");
Text_SetStyle(tx,2,0);
}
수고많으십니다
문의드릴 내용은 위 수식에서
Tenkan-Sen가 Kijun-Sen보다 높으면 매도청산 매수진입
Tenkan-Sen가 Kijun-Sen보다 낮으면 매수청산 매도진입
하루 100틱 수익이면 매매종료
하루 100틱 손실이면 매매종료
이런 시스템 수식을 부탁드립니다
감사합니다
2024-08-25
1081
글번호 182812
답변완료
문의드립니다.
늘 고맙습니다.
진입을 했는데요. 당일 청산이 안되고 다음날로 넘어가게 되면요.
프로그램을 종료했다가 다시 켜야 될텐데요.
그렇게 되면 기존 포지션은 수동으로 청산해야 하는 건가요?
다시 로그인을 했을 때 자동청산 방법은 무엇이 있나요?
당일 프로그램이 돌아가면서 진입된 포지션이 아닌 익일로 넘어온 포지션을 자동청산하는 방법중 하나의 예로 다음과 같이 작성하려면 어떻게 해야 하나요?
기존 포지션이 있는 것을 익절은 100포, 손절은 50포.
2024-08-25
881
글번호 182811