커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7294
글번호 230811
답변완료
항셍 매매 시간
항셍에서 1개 전의 캔들의 저가가 당일저가를 찍고 양봉 2개면 매수하라는 수식을 아래와 같이 작성하여 적용하면 분명 차트는 조건을 만족하는데 신호는 발생이 안됩니다.
아마도 당일 저가에 대한 기준이 다른 것 같아서 그런것 같은데요.
저는 오전 10시 15분 이후를 당일로 보고 아래 수식을 작성했으나 차트에서는 당일의 기준이 오전 10시 15분이 아닌 것 같습니다.
오전10시 15분 이후부터 당일로 적용되도록 수식 수정좀 부탁드립니다.
if L[1] == daylow and countif(C > O, 2) == 2 Then
buy("매수",OnClose);
2017-10-27
209
글번호 113708
답변완료
문의드립니다.
건강관리 잘하시구요.
1.진입조건
매수진입 : 시가가 5일선 아래일때의 현재봉이 이전 30개봉 중에서
최저점의 가격 보다 높으면 매수진입
(매도는 반대)
2.청산조건
매수청산 : 음봉이 연속 2개 나오면 다음 봉 시가에서 청산(매도청산은 반대)
3.수익합계 화면출력
시간 : 오전 10시 ~ 밤 11시 까지 매매시간 설정
합계 : 각각의 포지션 청산후 익절과 손실 및 합산 수익 최종값을
실시간으로 현재 봉의 고점 위에 출력
예> 익절 : 00 틱
손실 : 00 틱
합계 : 00 틱
4.질문
아래와 같이 지표에서 plot 으로 화면에 가로선을 그린후 지정한 범위가 되면
가로선이 없어지게 하려고 합니다. 어떻게 하면 되나요?
mav1(5일선), mav2(20일선)
if CrossDown(mav1,mav2) and C < mav1 Then{
value1 = C;
}
if mav2 > mav2[1] Then plot1(value1);
이렇게 가로선을 그린후 20일선 우하향으로 바뀌면 가로선을 사라지게 하고 싶습니다.
즐거운 주말 되세요.
2017-10-27
189
글번호 113696
답변완료
문의드립니다.
1. 5봉이내 60봉 최저가
2. 1봉전기준 2봉연속 저점을 높이는 양봉발생
3. 0봉전기준 당일시가가 이전 5봉의 시, 고가보다 높게시작(갭시작)
수고하세요~
2017-10-27
216
글번호 113695
답변완료
부탁 드립니다.
도움 주심에 감사 드립니다.
예를 들어 10분봉 차트에서
60분봉 지표(타주기, 변수 처리)를 보고 싶습니다.
미리 감사 드립니다.
input : Price(10000), Per(10),N(5);
var : cnt(0),cnt1(0),cnt2(0),idx(0);
Array : VV[50](0);
Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0);
Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0);
idx = idx+1;
for cnt = 1 to 49{
VV[cnt] = 0;
}
#N개값 출력
for cnt1 = 1 to N{
#차트 과거봉 전체 스캔
for cnt2 = 1 to idx{
#Price대비 +- Per%안에 종가가 형성된
if C[cnt2] <= Price*(1+Per/100) and C[cnt2] >= Price*(1-Per/100) and
V[cnt2] > VV[cnt1] and
(cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then{
VV[cnt1] = V[cnt2];
#거래량순 상위 cnt1번째 값추세선 출력
#시가선
TL_Delete(OTL[cnt1]);
OTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],O[cnt2],sdate,stime,O[cnt2]);
TL_SetExtLeft(OTL[cnt1],true);
TL_SetExtRight(OTL[cnt1],true);
#고가선
TL_Delete(HTL[cnt1]);
HTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],H[cnt2],sdate,stime,H[cnt2]);
TL_SetExtLeft(HTL[cnt1],true);
TL_SetExtRight(HTL[cnt1],true);
#저가선
TL_Delete(LTL[cnt1]);
LTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],L[cnt2],sdate,stime,L[cnt2]);
TL_SetExtLeft(LTL[cnt1],true);
TL_SetExtRight(LTL[cnt1],true);
#종가선
TL_Delete(CTL[cnt1]);
CTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],C[cnt2],sdate,stime,C[cnt2]);
TL_SetExtLeft(CTL[cnt1],true);
TL_SetExtRight(CTL[cnt1],true);
#거래량순 상위 cnt1번째 값텍스트 출력
#시가선값
Text_Delete(OTx[cnt1]);
OTx[cnt1] = Text_New(sdate,stime,O[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 시가:"+NumToStr(O[cnt2],0));
Text_SetStyle(OTx[cnt1],0,0);
#고가선값
Text_Delete(HTx[cnt1]);
HTx[cnt1] = Text_New(sdate,stime,H[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 고가:"+NumToStr(H[cnt2],0));
Text_SetStyle(HTx[cnt1],0,0);
#저가선값
Text_Delete(LTx[cnt1]);
LTx[cnt1] = Text_New(sdate,stime,L[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 저가:"+NumToStr(L[cnt2],0));
Text_SetStyle(LTx[cnt1],0,0);
#종가선값
Text_Delete(CTx[cnt1]);
CTx[cnt1] = Text_New(sdate,stime,C[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(C[cnt2],0));
Text_SetStyle(CTx[cnt1],0,0);
#점출력
Text_Delete(Tx[cnt1]);
Tx[cnt1] = Text_New(sdate[cnt2],stime[cnt2],C[cnt2],"●"+NumToStr(cnt1,0));
Text_SetStyle(Tx[cnt1],2,2);
}
}
}
2017-10-27
208
글번호 113686
답변완료
특정 진입수식에 대해서만 손절 청산하는 수식 부탁합니다.
매도1, 매도2, 매도3, .... 이런식으로 다수의 진입 수식에서 매도2의 수식에 대해서만 당일 고점을 돌파하면 손절 청산하는 수식좀 부탁합니다.
2017-10-27
177
글번호 113684
답변완료
문의드립니다.
안녕하세요.
예전에 짜주신 지표인데요. 또 부탁드리고 싶은것이 있어서요.
아래의 변수를 Nday(1),dayPeriod(2),dayDv(1);
바꾸면 plot1 또는 plot3 둘 중에 하나는 수평선이 나오게 되는데요.
plot1-plot3 를 선으로 나타낼려고 하다보니 항상 0보다 큰 선이 나오게 되서 말인데요.
예를들어,
1. plot1값은 수평선이고 plot3 값은 곡선형태라면
plot1-plot3 선이 0보다 작은 - 형태의 곡선이 나오게 해주시고요.
2. plot1값은 곡선이고 plot3 값은 수평선형태라면
plot1-plot3 선이 0보다 큰 + 형태의 곡선이 나오게 해주시면 고맙겠습니다.
항상 감사드립니다.
########################################################
input : Nday(1),dayPeriod(20),dayDv(2);
var : daysum(0),daycnt(0),dayma(0),daySumSqrt(0),dayStdv(0);
var : dayBBup(0),dayBBdn(0),dayCounter(0);
#일봉 이동평균 계산
daysum = 0;
for daycnt = 0 to Nday*dayPeriod-Nday step Nday{
daysum = daysum + DayClose(daycnt);
}
dayma = daysum/dayPeriod;
#표준편차 계산
If DayClose(dayPeriod) != 0 Then {
daySumSqrt = 0;
For dayCounter = 0 To Nday*dayPeriod-Nday step Nday {
daySumSqrt = daySumSqrt + (DayClose(dayCounter) - dayma)^2;
}
dayStdv = SquareRoot(daySumSqrt / dayPeriod);
}
Else
dayStdv = 0;
# 일봉 볼린져밴드 계산
dayBBup = dayma + (dayDv * dayStdv);
dayBBdn = dayma - (dayDv * dayStdv);
plot1(dayBBup ,"상단");
plot2(dayma,"중단");
plot3(dayBBdn,"하단");
2017-10-27
197
글번호 113683
답변완료
문의드립니다.
아래식은 지그재그 식입니다.
이식에서는 각고점과 저점에서 수치가 출력되는데요
1. 현재봉을 기준으로 최근 각 고점수치 5개의 평균
현재봉을 기준으로 최근 각 저점수치 5개의 평균
을 지표식으로 표시하고싶습니다.
2. 위 식의 고점의 평균 저점의평균으로 중앙선을 그리고 싶습니다.
#==========================================#
# 지 표 명 : 고저라인 지그재그 파동선
# 버 전 : 1.2
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
# 업데이트 : 2017-03-10
#==========================================#
Input:length(10),종가사용여부(0),파동선두께(2),수치표시(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,RED);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2017-10-27
313
글번호 113679
답변완료
거래량
안녕하세요~
주식종목검색에서 오늘거래량이 3개월이전 최고 거래량의 2배이상 되는 종목 검색식
만들고 싶습니다..
2017-10-27
197
글번호 113677
답변완료
문의드립니다.
정말 수고많으십니다.
1. 당일 첫번째봉(분 또는 틱에서)의 시가, 종가, 고가, 저가
당일 첫번째봉의 볼린저밴드 상단, 하단값
위에 두가지를 어떻게 수식으로 만들어야 되나요?
2. 매수진입, 매수청산, 매도진입, 매도청산 모두 만들어진 상태에서,
당일 첫번째봉의 시가가 볼린저밴드 상단이나 하단을 벗어나서 형성된 경우에는
매수진입이나 매도진입 신호가 나오더라도 실행되지 않다가
이후 쭉 만들어지 봉이 볼린저밴드 안으로 들어오고 나서, 진입신호가 나올 경우에
그때부터는 진입이 실행되도록 하려면 어떻게 수식을 짜야 되나요?
3. 매수진입(또는 매도진입)이후, 손절로 exitlong 또는 exitshort이 실행된 경우,
다시 손절가격 아래로(매수진입해서 손절시) 또는 손절가격 위로(매도진입해서 손절시) 1틱이상 갔을때,
다시 매수진입 또는 매도진입을 시키는 수식을 만들려면,
어떻게 해야될까요?
부탁드립니다. 아이디어를 수식으로 구현한다는게 너무 힘드네요.
2017-10-27
187
글번호 113676