커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7719
글번호 230811
답변완료
질문드립니다.
일봉 30일선을 기준으로 하고 분봉에다가 적용시키는시스템 식입니다.
아래식에서
3차매수후에 주가가 올라서 매도가 되자마자 그다음봉에서 재매수가 일어나는데요.
당일 매도가 일어나면 당일 재매수가 안일어나게 하고 싶습니다.
input : p1(30), capital(10000000);
var : cnt(0),count(0),Xcount(0),sumv(0),mav(0);
Condition1 = date==exitdate(1) And MarketPosition(1) == 1;
count = 0;
Xcount = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
if sdate == ExitDate(cnt) Then
Xcount = Xcount+1;
}
if CodeCategory == 1 Then{
value1 = int(int((capital*0.1)/C)/10)*10;
value2 = int(int((capital*0.3)/C)/10)*10;
value3 = int(int((capital*0.6)/C)/10)*10;
}
if CodeCategory == 2 Then{
value1 = int((capital*0.1)/C);
value2 = int((capital*0.3)/C);
value3 = int((capital*0.6)/C);
}
sumV = 0;
for count = 1 to p1-1 {
sumV = sumV+DayClose(count);
}
maV = (sumV+dayopen()) / p1;
if condition1 == false Then{
if MarketPosition == 0 and H <= maV*1.02 and L >= maV*0.98 Then
buy("1매수",OnClose,def,value1);
if MarketPosition == 1 Then{
buy("2매수",atlimit,EntryPrice*0.92,value2);
buy("3매수",atlimit,EntryPrice*0.82,value3);
}
}
if MarketPosition == 1 Then{
if CodeCategory == 1 Then{
value11 = int(int((CurrentContracts*0.5)/10)*10);
value12 = int(int((CurrentContracts*0.5)/10)*10);
}
if CodeCategory == 2 then{
value11 = int(CurrentContracts*0.5);
value12 = int(CurrentContracts*0.5);
}
exitlong("손절",AtStop,EntryPrice*0.70);
if MaxEntries == 1 Then{
ExitLong("1차1반절",atlimit,EntryPrice*1.1,"",value11,1);
ExitLong("1차전부",atlimit,EntryPrice*1.18);
}
if MaxEntries == 2 Then{
if CurrentContracts == MaxContracts Then
ExitLong("2차1반절",atlimit,(EntryPrice*0.92)*1.1,"",value11,1);
ExitLong("2차전부" ,atlimit,(EntryPrice*0.92)*1.18);
}
if MaxEntries == 3 Then{
ExitLong("3차1반절",atlimit,(EntryPrice*0.82)*1.1,"",value11,1);
ExitLong("3차전부",atlimit,(EntryPrice*0.82)*1.18);
if CurrentContracts < MaxContracts and highest(H,BarsSinceEntry) >= (EntryPrice*0.82)*1.1 Then
exitlong("3차2익절",AtStop,(EntryPrice*0.82)*1.07);
}
}
2011-05-19
658
글번호 38804
답변완료
다시 질문합니다. 일봉에서 주봉의 macd지표를 표시방법
안녕하십니까?
아래와 같은 답변을 적용한 결과 일봉의 macd를 표현하는 것이 었습니다.
주봉의 macd를 일봉에서 볼수 있는 것을 부탁드립니다.
좋은 하루 되세요
> 제목 : Re : 일봉차트에서 주봉의 macd 지표를 볼수 있는 방법이 있나요?
> 안녕하세요
예스스탁입니다.
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0);
Var : macdVal(0), preMacdVal(0), macdSig(0);
if date != date[1] then {
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdVal = macdSig[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1); //단기지수이동평균
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2); //장기지수이동평균
macdVal = JISU1 - JISU2; //macd
macdSig = macdVal * Ep3 + PreMacdVal * (1-Ep3); //macd signal
plot1(macdVal);
plot2(macdSig);
plot3(macdval-macdsig);
즐거운 하루되세요
2011-05-19
649
글번호 38803
답변완료
수식문의드립니다.
문의 드린 식을 적용해 보았는데 의도와는 너무나 다르게 매매가 진행되었습니다.
제가 의도했던 것은 기준차트는 옵션차트로 하고, 보조지표(data2)에 외국인 선물순매수지표를 추가해서 10시 이후에 보조지표가 30분전 수치, 그러니까 10시에는 9시 30분의 외국인선물순매수금액의 수치보다 10시 현재의 외국인선물순매수 수치가 크면 15만원을 매수하고, 10시 30분에는 10시의 외국인선물순매수금액의 수치보다 10시 30분 현재의 외국인선물순매수금액의 수치가 더 크면 15만원을 매수하는 것입니다. 이렇게 3시까지 30분 단위로 그 전 30분의 보조지표, 즉 외국인선물순매수 값을 비교해서 매수를 하는 것입니다.
그러나 아래 작성해주신 식은 이 조건대로 전혀 매수가 일어나지 않았습니다.
또한 제가 의도했던 것은 10시에 9시 30분의 외국인선물순매수금액의 수치보다 10시현재의 외국인선물순매수금액의 수치가 더 크고, 이 조건에 더불어 10시 현재의 옵션가격이 9시 30분의 옵션가격의 80%보다 더 크면 15만원의 2배인 30만원을 매수하는 것이었습니다.
요약하면 외국인선물순매수금액의 수치를 30분마다 비교해서 현재 수치가 더 크면 15만원을 매수하고, 이 조건과 더불어 현재의 옵션가격이 30분 전 옵션 가격의 80% 보다 높으면 그 2배인 30만원을 매수하는 수식을 만들고 싶은 것입니다. 물론 15만원이나 30만원이라는 가격은 바뀔 수 있는 부분입니다. 최초에 20만원을 투입하면 20만원과 40만원이 되는 방식입니다.
그러나 작성해주신 수식을 적용해본 결과 다음과 같은 문제가 발생 했습니다.
1. 외국인선물순매수인 보조지표의 조건이 충족됐음에도 매수가 일어나지 않았습니다. 오히려 전혀 엉뚱하게도 반대방향일 때 매수가 일어나기도 했습니다.
2. 위 1번 처럼 아예 매수신호가 발생 안되기도 하고, 경우에 따라서는 매수신호가 발생했어도 보조지표의 조건만 만족되면 15만원을, 옵션지표의 조건까지 함께 만족되면 30만원을 매수해야 함에도 불구하고 가격에 상관없이 무조건 2계약만 매수가 일어났습니다.
결국, 아래의 식은 제 의도와는 전혀 다른 엉뚱한 결과가 나타났습니다.
항상 열심히 노력해주시는 것을 잘 알고 있지만 조금만 더 신경을 써 주셔서 예전같이 제 의도와 잘 부합하는 수식작성을 부탁드리고 싶습니다. 만약 작성하고자 하는 수식에 대한 제 설명이 부족하거나 미심쩍은 부분이 있다면 추가설명을 요구해주셔서 정확한 수식작성을 부탁드립니다.
아래의 수식을 수정하는 것이 아니라 새롭게 수식을 짜서 시물레이션을 통한 검증이 한 번 된 수식을 작성해주셨으면 합니다.
바쁘신 데 번거로우시겠지만 예전과 달리 제 의도와 다른 수식에 거래가 원활하지 못한 사정을 고려해서 꼭 좀 부탁드립니다.
감사합니다.
<수식>
input : 매수금액(150000);
var : Entry(0,data1),D2v(0,data1),val1(0,data1),val2(0,data1),val3(0,data1),val4(0,data1);
entry = int(매수금액/(C*BigPointValue));
D2v = data2(c);#보조지표
if data1(TimeToMinutes(stime)%30 == 0) Then{
val1 = D2v;
val2 = D2v[1];
val3 = O;
val4 = val3[1];
}
if data1(stime >= 100000 and stime < 150000 and TimeToMinutes(stime)%30 == 0) Then{
if Iff(val1 > val2,1,0)+iff(val3 > val4*0.8,1,0) == 2 Then
buy("b1",OnClose,def,entry*2);
if Iff(val1 > val2,1,0) == 1 and iff(val3 > val4*0.8,1,0) == 0 Then
buy("b2",OnClose,def,entry);
}
SetStopLoss(20);
SetStopEndofday(150000);
2011-05-19
687
글번호 38802
답변완료
행복; 수식 작성 바랍니다
주기; 일봉
주 종목; 녹십자
참조data1; 유한양행
참조data2; 종근당
참조data3; 삼성카드
참조data4; 현대해상
참조data5; 오뚜기
참조data6; 빙그레
참조data7; 고려아연
참조data8; 이구산업
참조data9; 현대건설
< 매수 >
- 매일 매일 녹십자와 (참조data1~참조data9)를 포함한 10 종목을 비교한다
- 당일 녹십자의 상승율이 10 종목 중에서 1~5위에 해당되는 날마다 종가로 매수
- 1회 매수금액은 백만원씩
- 피라미딩으로 매수하되 최대 매수회수는 10일 중 8회까지만 한다
< 매도 >
- 녹십자 상승율이 1위이면 매수 후 10일( = 11 - 1 )후 종가로 매도
- 녹십자 상승율이 2위이면 매수 후 9일( = 11 - 2 )후 종가로 매도
- 녹십자 상승율이 3위이면 매수 후 8일( = 11 - 3 )후 종가로 매도
- 녹십자 상승율이 4위이면 매수 후 7일( = 11 - 4 )후 종가로 매도
- 녹십자 상승율이 5위이면 매수 후 6일( = 11 - 5 )후 종가로 매도
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
2011-05-18
666
글번호 38801
답변완료
문의합니다.
시스템식 부탁합니다.
첫번째
현종목은 시가대비 상승하였고 당일최고가이고
참조종목 data2와 data3의 등락률 차이가 5% data2가 크고
참조종목 data2는 data3보다 전일대비 data2,data3 등락률을 비교하여
data2가 등락률이 크면 현종목 매수 반대이면 청산
두번째
현종목은 전일대비 상승하였고
참조종목 data2는 data3보다 당일 시가대비 data2,data3 등락률을 비교하여
data2가 등락률이 크면 현종목 매수 반대이면 청산
감사합니다.
2011-05-18
725
글번호 38800
답변완료
행복; 질문 드립니다
지표 작성 바랍니다
주기; 일봉
지표1;
갭 상승( H[1] < L ) 이 발생하면 하루 지날 때마다 지표가 1 씩 증가되다가
갭이 메워지면 지표가 0 이 되고
다시 갭이 발생될 때까지 0 이 지속됩니다
지표2;
갭 하락( L[1] > H ) 이 발생하면 하루 지날 때마다 지표가 -1 씩 감소되다가
갭이 메워지면 지표가 0 이 되고
다시 갭이 발생될 때까지 0 이 지속됩니다
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
2011-05-18
629
글번호 38799
답변완료
문의 드립니다.
var1 = BollBandUp(20,2);
var2 = BollBandDown(20,2);
var3 = var2-var1;
.
.
..
if MarketPosition == -1 Then
{if var3 >= var3[3]*1.1 and crossup(c,var2) and countif(L < var2,mm) >= mmm Then ExitShort();}
이렇게 청산식을 작성했는데...
이상하게 내 바램대로 볼린저 하단에서 청산이 안이루어지고
엉뚱하게 볼린저상단과 중심선 사이에서 청산이 이루져버렸습니다.
다른 청산식넣은것도 없는데 왜 이런 오류가 발생이 된거죠?
제가 수식을 잘못작성한게 있나요?
2011-05-18
704
글번호 38798
답변완료
시스템식 문의 드립니다.
안녕하세요
시스템식 문의 드립니다.
매수진입
Condition1 = 당일종가가 13~20봉 사이의 종가 보다 클때
Condition2 = 당일종가가 13~20봉 사이에 있는 음봉의 시가보다 클때
Condition3 = 1 ~ 5일전 종가가 갭상승 0.05%미만일때
Condition4 = 1 ~ 5일전 종가가 갭하락 0.05%미만일때
Condition5 = 거래량이동평균 2일 값이 거래량 이동평균 5일 값 보다 클때
Condition6 = 당일 거래량이 전일거래량 2배 이상 일때
Condition7 = 2일전 종가의 이격도(2)가 99.98 보다 클때
Condition8 = 1 ~ 3일 기간 종가가 20일 이동평균선 위 에 있을때
Condition9 = 9 ~ 15일 기간동안 고가가 볼린져밴드(20,2) 상한선 보다 작을때
Condition10 = 1 ~ 10일 기간동안 저가가 볼린져밴드(20,2) 하한선 보다 클때
매수청산
Condition1 = 1봉전 종가가 20일 이동평균선 돌파할때
Condition2 = 당일 종가가 볼린져밴드(20,2) 상한선을 돌파할때
Condition3 = 9일 이동평균선 하락돌파일때
Condition4 = 종가가 9일 이동평균선 보다 작을때
정말 수고 많으십니다. 항상 감사 드립니다.
2011-05-18
691
글번호 38794
답변완료
EUR/USD 통화선물 리버스 시스템에서
시스템 매매를 설정 할때 매매탶에서 "주문시작신호"셋팅을 어떻게 하나요?
예를들면 주문시작신호를 "모든신호"로 셋팅된 상태에서
시스템이 스탑로스나,목표수익 또는 익싯롱(익싯숏)으로 포지션을 청산하면
무포가 되는데요.
이때 주문시작신호를 "모든신호"로 그대로 놔두는지?
아니면
무포 상태에서 주문시작신호를 다시 "진입신호"로 셋팅한후
매수/매도 진입후 "모든신호"로다시 설정을 해야 하는지 질문 드립니다.
2011-05-18
733
글번호 38791