커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7784
글번호 230811
답변완료
꺽은선 지표에 시스템 매매식 (신호)겹치기..
안녕하세요
다름아니라 질문이 좀 부실할지 모르겠습니다만...리딩시물레이션차트에서 기존 봉차트밑에 꺽은선 지표를 활성화시키고서
꺽은선에 시스템 매매식을 나타내야하는데 위 봉차트에 시스템식이 입혀지더군요. 꺽은선지표에 시스템매매식이 입혀졌으면 하는데 방법이 없을까요?
2008-12-29
1425
글번호 19063
답변완료
문의 사항있습니다.
안녕하세요
이제 시스템트레이딩 시작하는 사람입니다..
자세한 답변 부탁 드립니다..
1.테스트를 해 보니 매수/매도 형태 자체가 매수가 일어나면 그 다음은 매도 형태로
가는것 같습니다.
원래 이것이 정상적인건가요 ? 가령 프로그램 작성 형태에 따라
매수 -> 매수 -> 매도..
이런 식으로도 나올수 있을꺼 같은데..원래 매수가 일어나면 반드시 매도가
일어나야 다음 매수가 이루어 지는가요 ?
2.
if C > C[1] then Buy();
else if C < C[1] then Sell();
간단하게 돌려 보면 첨부한 이미지 처럼
전일 양봉이고 다음 음봉 -> 음봉 -> 음봉 -> 음봉
이런 식이면 첫째날 음봉일때 신호가 오고 다음 음봉 때 부터는
분명 전일자 종가 보다 낮지만 매도 신호가 오지 않네요..
원리에 대해 자세하게 답변 부탁 드립니다.
3.개인적으로 답변을 좀 받았으면 하는 사항이 있어 메일로 문의를 드리고자
하는데... 답변을 받아 볼수 있는 메일을 하나 알려 주시겠습니까?
2008-12-28
937
글번호 19062
답변완료
ema 호출문제
다음 식을 30분봉에서 돌려보면 처음 하루는 매분봉마다 처리가 되는 데, 둘째날 부터는 매분봉 마다 처리가 되지 않습니다.
그래서 디버거 창으로 획인해보니
T1 = ema(c,sstrixPeriod);
줄에서 문제가 생기는 데 아무리 해봐도 그 이유를 모르겠습니다.
Input : slosscut(12),sdelay(1),
strixPeriod(5),strixsignal(15),
trendline1(5),trendline2(24),trendline3(120);
var : trendvalue1(0),trendvalue2(0),trendvalue3(0),
strixvalue(0),strixsignalvalue(0),
cnt(0),T1(0),T2(0),
lastpos(0),startpos(0),strixgap(0),
sstrixvalue(0),sstrixsignal(0),sstrixperiod(0),ssstrixperiod(0);
if dayindex()==0 then
sstrixperiod = 0;
sstrixperiod= dayindex()+1;
sstrixsignal=Round((dayindex()+1)*strixsignal/strixPeriod,0);
if sstrixsignal < 1 then
sstrixsignal = 1;
T1 = ema(c,sstrixPeriod);
MessageLog("t1= %.3f,strixvalue= %.3f,strisignalxvalue= %.3f",t1,sstrixperiod,sstrixsignal);
T2 = ema(T1,sstrixsignal);
strixgap=strixvalue-strixsignalvalue;
if crossup(T1,T2) then
{
buy("s1");
}
else if crossdown(T1,T2) then
{
sell("s2");
}
if stime == 150000 then
{
if MarketPosition() == 1 then
{
lastpos=1;
startpos=0;
}
else if MarketPosition() == -1 then
{
lastpos=-1;
startpos=0;
}
SetStopEndofday();
}
2008-12-28
905
글번호 19061
답변완료
수식 재 질문입니다.
RE(답변)-RE(재질문) 올리니 답글이 안달려서 다시 문의 드립니다.
답글에서 청산식을 잘 이해하시지 못하셨다고 하여 다시 문의 드립니다.
문의 밑에 답글이 있으니 참조하시길 바랍니다.
즐거운 년말이 되십시요.
재질문 내용
감사합니다.
매수는 재때 하는것 같습니다.
그런데 시스템을 돌려보니 매수만하고 매수청산식에서 매수이후 6~7 분 봉에서
만족하는 값이 나오지 않으니 매수청산을 하지 않네요.
제가 원하는 수식은 9시 5분이후 방향성을 찾으면 아래의 수식을 장 종료까지
계속해서 배열(?) 하고 싶은건데, 진입이후 5분봉동안의 평균값을 계속해서 구해나가며,
조건만족하는 시기를 찾고 싶습니다.
예를 들어 9시 5분에 매수하면, 6,7,8,9,10 분봉의 평균값을 11분봉 과 12분봉에서
거래가 80% 수준이하로 줄면서 앞의 평균 5분봉의 평균값(혹은 70%값)을 침범하면,
매수청산 주문을 넣는것입니다.
이때 청산되지 않으면 자연히 7,8,9,10,11 분봉의 평균값을 12분봉과 13분봉에서 ~
와 같이 계속해서 반복시키는것 이죠,
매수도 장 초반 1,2,3,4 평균값을 5,6 분봉의 평균이 상회한다면,
다시 2,3,4,5,평균값을 6,7 분봉이 평균을 상회하는지...
3,4,5,6 평균값을 7,8 분봉이 평균을 상회하는지.. 계속 반복이죠,
아직 수식을 사용하는것이 익숙하지 않아 답변하시는분 입장에서 단순한것 같지만
쉽사리 답을 찾지 못하겠습니다.
부탁드립니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식부탁드립니다.
> 안녕하세요
예스스탁입니다.
이동평균을 특정봉 이후부터 계산할때는
식에 N봉 이후라고 넣어주시면 됩니다.
var1 = MACD_OSC(12,26,9);
if dayindex() >= 3 and ## 당일 4번째 봉부터
var1 > var1[1] and var1 > 0 and //MACD 오실레이터가 0이상에서 상향중
V > ma(v,4)*0.8 and //현재 거래량이 거래량 4이평의 80% 이상
C > O and ## 양봉
C >= ma(c,4) Then ## 현재가가 4이평 이상
buy();
if MarketPosition() == 1 Then{
if BarsSinceEntry() == 5 Then //진입이후 5번째 봉에서 5평균거래량 저장
var2 = ma(v,5);
if BarsSinceEntry() == 7 Then{ //진입이후 7번째 봉
if ma(V,6) <= var2*0.8 and ma(v,7) <= var2*0.8 Then
exitlong();
}
}
청산식 내용을 정확히 이해못했습니다.
다르시면 자세한 내용 부탁드립니다.
즐거운 하루되세요
> 대형사고 님이 쓴 글입니다.
> 제목 : 수식부탁드립니다.
> 안녕하십니까.
한줄기 빛이 되어주셔서 늘 감사드립니다.
제가 궁금한것은 macd oscillator(1분) 와 선물 1분봉의 거래량 을 보조지표로 식을 만들고 싶어서 입니다.
매수식 1. macd 선이 상향으로 유지되고 있고
2. 9시 부터 4분동안 거래량 평균을 80% 상향 돌파할때
3. 양봉의 조건
4. 선물(1분봉) 4분봉의 평균값 이상일때
5. 위의 4가지 조건을 동시만족시 매수신호
매수 청산식
1. 매수시점의 봉의 위치에서 5분동안 평균거래량을 파악하고
2. 매수시점 +6,7 분봉 평균거래량이 80% 미치지 못할때
3. 하지만 5분봉 동안의 평균값이 매수시점 +6,7 분봉 보다 높다면
2번의 평균거래량 80% 조건이 성립되도 매수청산을 보류하고 싶습니다.
그런데 한가지 궁금한것은 말이죠, 실제로 시스템 매매를 한다면 1분봉 챠트를 띄우고
시스템 실행을 할때 과거의 1분봉들을 개입시키지 않을려면 수식에 시간을 한정하도록
9:00:00 처럼 수식이 들어가야 하는것 아닌가요?
2008-12-28
946
글번호 19060
답변완료
문의 드립니다..
안녕하십니까?
지표에 관한 질문이 될련지 그 분류는 모르겠습니다만..
차트 의 Y 축은 가격, X 축은 시간으로 나타나는데,
1) X시간 축을 10시 부터 11시 사이를 2분 간격으로 세분하여 20개의 점선 또는 실선
으로 세로선을 챠트상에 나타 내 보고 싶습니다..
2) Y가격 축을 선물지수 140에서 150 사이를 0.05씩 세분하여 1포인트를 20개의 점선
또는 실선으로 (10포인트면 200개) 가로선을 차트 상에 나타 내 보고 싶습니다..
3) 1과 2를 함께 차트 상에 나타 내게 되면, 해당 구간이 모눈 종이의 그라프 용지처름 나타 나지 않을까 생각 합니다.
위의 1) 과 2)의 지표식을 아래 이메일로 회신 하여 주시면 감사 하겠습니다..
email: bongryong38@naver.com
P.S.) 만약 위의 사항이 수식으로 성립 안된다면 이를 대체 할만한 기능이
Yestrader 내에 있는지요...
2008-12-28
1305
글번호 19059
답변완료
이런 함수가 있을까요?
안녕하세요.
yt에서 미결제 야정에 대한 함수는 있지만 이렇게 세분화된 함수가 있는지 궁금합니다.
http://cafe.naver.com/ArticleRead.nhn?clubid=12504224&page=1&boardtype=L&articleid=15022
2008-12-28
1091
글번호 19058
답변완료
수식문의
차트도구에 보면 자동 추세선이 있는데..
그식을 메일로 받았으면 합니다.
메일주소는 doneki@naver.com 입니다.
미리 감사드립니다.
2008-12-28
876
글번호 19057
답변완료
매수청산식 좀 더해주세요~
매수청산식 좀 부탁드립니다~
밑에 식에다 매수청산식 하나만 더해주세요
아무(첫번째,두번째......만번째) 매수진입이던간에
1.------------------------------------
현재가 >= 아무 매수진입 * 2% and
현재가 >= 첫번째 매수진입 * 0.5%
이면 보유한 수량 모두 매수청산
----------------------------------------------
을 부탁드립니다. 예를들면
13ma 매수진입이 10주 나오고
16ma 매수진입이 10주 나오고
20ma 매수진입이 10주 나왔는데
현재가가
셋중 아무거나 예를들어
현재가 >= (20 or 16 or 13)ma매수진입 * 2% and
현재가 >= 13ma매수진입 *0.5%
가 되면
13,16,20ma서 산것도 포함해서 30주가 전부 매수청산이 나오게 해주세요
가진 수량이 전부 나오는것이 중요합니다~
부탁드려요~
==================================
input : 날짜(20080902),P1(4),P2(5),P3(10),P4(11),P5(13),p6(16),p7(20);
input : L1(14),L2(15), L4(17),L5(18),L6(19),L7(21),L8(22),L9(23);
var : cnt(0),mav4(0),mav5(0),mav10(0),mav11(0),mav13(0),mav16(0),mav20(0);
var : Bcnt1(0),Bcnt2(0),Bcnt3(0),Bcnt4(0),Bcnt5(0),Bcnt6(0),Bcnt7(0),Bcnt8(0),Bcnt9(0),Bcnt10(0),Bcnt11(0);
var : buycond1(False),buycond2(False),buycond3(false),buycond4(false),buycond5(false),buycond6(false),buycond7(false),buycond8(false),buycond9(false),buycond10(false),buycond11(false);
var : sellcond1(False),sellcond2(False),sellcond3(false);
var : mav14(0), mav15(0),mav17(0),mav18(0),mav19(0),mav21(0),mav22(0),mav23(0);
var1 = 0;
var2 = 0;
var3 = 0;
var4 = 0;
var5 = 0;
var6 = 0;
var7 = 0;
var11 = 0;
var12 = 0;
var13 = 0;
var14 = 0;
var15 = 0;
var16 = 0;
var17 = 0;
var18 = 0;
var19 = 0;
for cnt = 0 to L9-1{
if cnt < P1 Then
var1 = var1 + dayclose(cnt);
if cnt < P2 Then
var2 = var2 + dayclose(cnt);
if cnt < P3 Then
var3 = var3 + dayclose(cnt);
if cnt < P4 then
var4 = var4 + dayclose(cnt);
if cnt < P5 then
var5 = var5 + dayclose(cnt);
if cnt < P6 then
var6 = var6 + dayclose(cnt);
if cnt < P7 then
var7 = var7 + dayclose(cnt);
if cnt < L1 Then
var11 = var11 + dayclose(cnt);
if cnt < L2 Then
var12 = var12 + dayclose(cnt);
if cnt < L4 then
var14 = var14 + dayclose(cnt);
if cnt < L5 then
var15 = var15 + dayclose(cnt);
if cnt < L6 then
var16 = var16 + dayclose(cnt);
if cnt < L7 then
var17 = var17 + dayclose(cnt);
if cnt < L8 then
var18 = var18 + dayclose(cnt);
if cnt < L9 then
var19 = var19 + dayclose(cnt);
}
mav4 = var1/P1;
mav5 = var2/p2;
mav10 = var3/P3;
mav11 = var4/P4;
mav13 = var5/P5;
mav16 = var6/P6;
mav20 = var7/P7;
mav14 = var11/L1;
mav15 = var12/L2;
mav17 = var14/L4;
mav18 = var15/L5;
mav19 = var16/L6;
mav21 = var17/L7;
mav22 = var18/L8;
mav23 = var19/L9;
buyCond1 =dayclose(1) >= 1025 and
C > dayclose(1)*0.89 and
c <= mav13*1.005;
buyCond2 = dayclose(1) >= 1025 and
C > dayclose(1)*0.89 and
c <= mav14*1.005;
buyCond3 = dayclose(1) >= 1025 and
C > dayclose(1)*0.89 and
c <= mav15*1.005;
buyCond4 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav16*1.005;
buyCond5 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav17*1.005;
buyCond6 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav18*1.005;
buyCond7 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav19*1.005;
buyCond8 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav20*1.005;
buyCond9 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav21*1.005;
buyCond10 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav22*1.005;
buyCond11 = dayclose(1) >= 1025 and
C > dayclose(1)*0.87 and
c <= mav23*1.005;
sellcond1 = C >= mav4*0.99;
sellcond2 = C >= mav5*0.99;
sellcond3 = mav4 >= mav10*0.99 and mav4 <= mav10*1.01 and
C >= mav10*0.988;
if dayopen() >= mav11 Then{
if buyCond1 == true and Sdate >= 날짜 and Bcnt1 < 1 Then{
buy("13ma");
Bcnt1 = 1;
}
}
if dayopen() >= mav11 Then{
if buyCond2 == true and Sdate >= 날짜 and Bcnt2 < 1 Then{
buy("14ma");
Bcnt2 = 1;
}
}
if dayopen() >= mav11 Then{
if buyCond3 == true and Sdate >= 날짜 and Bcnt3 < 1 Then{
buy("15ma");
Bcnt3 = 1;
}
}
if dayopen() > mav18 then{
if buyCond4 == true and Sdate >= 날짜 and Bcnt4 < 1 Then{
buy("16ma");
Bcnt4 = 1;
}
}
if dayopen() > mav18 then{
if buyCond5 == true and Sdate >= 날짜 and Bcnt5 < 1 Then{
buy("17ma");
Bcnt5 = 1;
}
}
if dayopen() > mav19 then{
if buyCond6 == true and Sdate >= 날짜 and Bcnt6 < 1 Then{
buy("18ma");
Bcnt6 = 1;
}
}
if dayopen() > mav20 then{
if buyCond7 == true and Sdate >= 날짜 and Bcnt7 < 1 Then{
buy("19ma");
Bcnt7 = 1;
}
}
if dayopen() > mav22 then{
if buyCond8 == true and Sdate >= 날짜 and Bcnt8 < 1 Then{
buy("20ma");
Bcnt8 = 1;
}
}
if buyCond9 == true and Sdate >= 날짜 and Bcnt9 < 1 Then{
buy("21ma");
Bcnt9 = 1;
}
if buyCond10 == true and Sdate >= 날짜 and Bcnt10 < 1 Then{
buy("22ma");
Bcnt10 = 1;
}
if buyCond11 == true and Sdate >= 날짜 and Bcnt11 < 1 Then{
buy("23ma");
Bcnt11 = 1;
}
if MarketPosition() == 1 and sellcond1 == true Then {
exitlong("4maEX1");
Bcnt1 = 1;
Bcnt2 = 1;
Bcnt3 = 1;
Bcnt4 = 1;
Bcnt5 = 1;
Bcnt6 = 1;
Bcnt7 = 1;
Bcnt8 = 1;
Bcnt9 = 1;
Bcnt10 = 1;
Bcnt11 = 1;
}
if MarketPosition() == 1 and sellcond2 == true Then {
exitlong("5maEX2");
Bcnt1 = 1;
Bcnt2 = 1;
Bcnt3 = 1;
Bcnt4 = 1;
Bcnt5 = 1;
Bcnt6 = 1;
Bcnt7 = 1;
Bcnt8 = 1;
Bcnt9 = 1;
Bcnt10 = 1;
Bcnt11 = 1;
}
if MarketPosition() == 1 and sellcond3 == true Then {
exitlong("10maEX3");
Bcnt1 = 1;
Bcnt2 = 1;
Bcnt3 = 1;
Bcnt4 = 1;
Bcnt5 = 1;
Bcnt6 = 1;
Bcnt7 = 1;
Bcnt8 = 1;
Bcnt9 = 1;
Bcnt10 = 1;
Bcnt11 = 1;
}
if MarketPosition() == 1 and C >= AvgEntryPrice()*1.015 Then {
exitlong("평단가");
}
2008-12-28
769
글번호 19056
답변완료
돌파식 문의 드립니다.
시스템식 문의드립니다.
매수조건
시가부터 9:30까지의 고가를 돌파하면 매수
매도조건
매수가에서 5%상승하면 50%매도
매수가에서 10%상승하면 나머지 50%매도
시가부터 9:30까지의 고가와 저가의 중간값이 손절가격
이상입니다. 부탁들비니다.
2008-12-27
801
글번호 19055