커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7294
글번호 230811
답변완료
(재질문) 글번호 55019번
안녕하세요?
시스템 요청드립니다.
글번호 55019번 내용입니다.
직전봉 3개의 봉색깔을 관찰하여
양봉이 많으면(양봉 2개와 음봉 1개 또는 양봉 3개) 현재봉 시가에 매수진입하여
진입이후 5번째봉 종가청산
음봉이 많으면 현재봉 시가에 매도진입하여
진입이후 5번째봉 종가청산
여기에서 청산신호가 나오면 그 익봉부터 다시 봉을 카운팅하여 3개의 봉을 관찰하여 진입신호를 생성하고자 합니다.
그런데 진입 요건을 세부적으로 들어가면
매수 진입의 경우에 3개의 봉을 관찰하여 양봉이 많을 수 있는 경우가
'양봉 + 음봉 + 양봉' 이나 '음봉 + 양봉 + 양봉' 뿐만이 아니라
'양봉 + 양봉 + 음봉' 이나 '양봉 + 양봉 + 양봉' 이 있습니다.
이러한 경우에는 굳이 3개까지 봉을 관찰하지 않아도 '양봉 + 양봉 + 음봉' 이나
'양봉 + 양봉 + 양봉'은 봉 2개로써 그 방향에 베팅하고자 합니다.
'양봉 + 양봉' 이 나오면 그 익봉에서 매수진입,
'음봉 + 음봉' 이 나오면 그 익봉에서 매도진입하고자 합니다.
상기의 논리로 스크립트를 다시 요청드립니다.
답변 주셨던 스크립트를 적용해보니 애초에 작성주셨던 내용이 포함하고 있습니다.
아래의 식이 원하는 답변입니다.
if countif(MarketPosition == 0 and C>O,3) >= 2 Then
buy("b",AtMarket);
if countif(MarketPosition == 0 and C<O,3) >= 2 Then
sell("s",AtMarket);
if MarketPosition == 1 and BarsSinceEntry ==5 Then
exitlong("bx");
if MarketPosition == -1 and BarsSinceEntry ==5 Then
ExitShort("sx");
위의 내용이 이미
if countif(MarketPosition == 0 and C>O,2) == 2 or
countif(MarketPosition == 0 and C>O,3) >= 2 Then
buy("b",AtMarket);
if countif(MarketPosition == 0 and C<O,2) == 2 or
countif(MarketPosition == 0 and C<O,3) >= 2 Then
sell("s",AtMarket);
if MarketPosition == 1 and BarsSinceEntry ==5 Then
ExitLong("bx");
if MarketPosition == -1 and BarsSinceEntry ==5 Then
ExitShort("sx");
를 포함하고 있습니다.
즉 신호가 두 식이 같습니다.
그럼 다시 질문드립니다.
직전봉 3개의 봉색깔을 관찰하여
양봉이 많으면(양봉 2개와 음봉 1개 또는 양봉 3개) 현재봉 시가에 매수진입하여
진입이후 5번째봉 종가청산
음봉이 많으면 현재봉 시가에 매도진입하여
진입이후 5번째봉 종가청산
여기에서 청산신호가 나오면 그 익봉부터 다시 봉을 카운팅하여 3개의 봉을 관찰하여 진입신호를 생성하고자 합니다.
2017-09-29
194
글번호 113193
답변완료
부탁드립니다.
1분 챠트에서 20일선 넘고, 60틱 챠트에서 20일선을 동시에 넘으면 매수하고.
그 반대인 경우 매도하라는 식을 부탁드립니다.감사합니다.
2017-09-29
198
글번호 113191
답변완료
문의드립니다.
수식왕 예스스탁님 항상 감사합니다. 즐거운 추석되세요~~~
1. 왜 신호가 안 나는 지 궁금해서 질문드립니다.
var1 = Dayhigh(1)*DayLow(1)/2;
if crossup(var1,ma(c,30)) then
buy();
이렇게 kodex200에 해봤는데 신호가 안나오더라구요. 이유가 궁금합니다.
2. 시스템
진입
-종가, 볼린저밴드 상단선 상향돌파
필터
-03:15분~ 03:20분 사이에만 진입
청산
다음날 3% 상승시 청산
3. 종목검색식
-전일보다 5% 이상 상승한 종목
4. 종목검색식 궁금증 1
종목검색식에 검색결괏값이란 건 뭔가요? 그리고 종목검색식 조건에서 제외된 경우에 조건에 검색됐던 종목들이 사라지는 것 같은데요. 사라진 종목들도 결과에 남게 만들 수도 있나요? 그런 설정이 있나요?
5. 종목검색식 궁금증 2
예스스팟을 이용해서 종목검색식에 검색된 종목을 매수하거나 매도하는 방법도 있나요? 지금 방법을 알려주실 필요는 없고 그냥 가능 여부만 궁금합니다.
6. 시스템
진입
전일 거래대금이 300억이상이면 시초가 매수
청산
3% 수익시 매도
7. 시스템
진입
전일 거래대금이 300억이상이면 시초가 매수
청산
볼린저밴드 저가가 상단선에 닿으면 청산
8. 7에 대한 문의
7의 청산에서 볼린저밴드 저가가 상단선에 닿는다는게 봉이 완전히 완성 안되도, 예를 들어 30분봉은 종가가 30분은 돼야 완성되는데요. 그 가운데 저가는 이미 나와 있을 겁니다. 그 저가가 상단선에 닿으면 바로 그 시점에서 청산이 이뤄지는 건가요? 전에 봉이 완성안됐을 때 신호가 나게 하는 방법은 없다고 들었던 기억이 있어서 질문드립니다.
9. 시스템
진입
전일 거래대금이 300억 이상인 경우에 오전 11시에 매수(변수a)
청산
오후 3시 20분(변수b)이 되면 매도
10. 종목검색
3일간 당일 거래대금이 300억 이상을 기록했던 종목검색
11. 시스템
진입
고가-atr*3선이 전일 가격의 중심선(고가+저가/2)을 상향돌파하면 참조데이터 종목 매수진입
청산
저가가 고가-atr*3선을 하향돌파하면 참조데이터 종목 청산
12. 시스템
진입
고가-atr*3선이 전일 가격의 중심선(고가+저가/2)보다 종가의 10분의 1만큼 큰 순간 참조데이터 종목 매수진입
청산
고가-atr*3선이 전일 가격의 중심선과 같아지거나 전자가 더 작아지면 참조데이터 종목 청산
2017-09-29
245
글번호 113190
답변완료
수식부탁드립니다.
안녕하세요
분봉에서 사용할 시스템식 부탁드립니다.
전일 저가(DayLow)를 하락 돌파시 즉시 매수
(하루에 한번만 매수)
목표수익 2퍼센트 손절은 1퍼센트
당일 종가에 청산식 부탁드립니다.
감사합니다. 수고하세요
2017-09-29
206
글번호 113189
답변완료
수식문의
안녕하세요.
국선이나 해선에서 1주씩 피라미딩으로 진입한 경우 전체청산이 아니라 가장 먼저 진입한 1계약만 일부청산하는 로직을 만들고 싶습니다.
예제) 크루드오일이라고 가정하고 현재 분할로 각각 1계약씩 매수 3계약이 진입한 경우에서 가장 마지막으로 진입한 계약보다 20틱 상승하면 가장 먼저 진입한 첫번째 계약만 청산하는 로직입니다.
부탁드립니다.
2017-09-28
213
글번호 113188
라떼처럼 님에 의해서 삭제되었습니다.
2017-09-28
2
글번호 113187
답변완료
부탁드립니다
수식 질문합니다.
1) 3봉전 시가가 5이평을 가지고 매수 매도식 부탁드립니다
150틱 차트를 사용합니다
2) 5이평 골든크로스 이후 rsi 50을 상향하면 매수
반대로 5이평 데드크로스 이후 rsi 50을 하향돌파하면 매도식 부탁합니다.
3) macd 골든크로스 발생이후 5이평 골든크로스 발생하면 매수
macd 데드크로스 발생이후 5이평 데드크로스 발생하면 매도
2017-09-28
179
글번호 113186
답변완료
진입과 청산
안녕하세요. ^^
아래 로직을 해보려고 하는데, 잘 안되네요.
해결 해주시면 감사하겠습니다.
1. 전 봉의 평균 단가로 지정가 매수/매도 요청
2. 현재 호가로 매수/매도 요청
3. 수익 발생 중 일 때,
3.1 최고/최저에서 5틱이 반등하면 청산
3.2 진입가 +2틱에서 청산
3.3 +20틱 수익나면 청산
4. 5틱 손실 발생하면 강제 청산
5. 08:55~12:00 해당 시간에만 진입
6. 매수/매도로 발생되는 수익을 5틱 단위로 "5틱","10틱" 화면에 표시
감사합니다. ^^
2017-09-28
208
글번호 113185
답변완료
수정부탁드립니다
식 확인 및 수정 부탁드립니다.
(매수로만 설명드립니다 매도는 반대 동일조건으로 해주세요)
1. 아래식의 경우 매수진입하여 익절이 되면 바로 다시 매수로 재진입 되는 경우가 있습니다.(그림1) 익절 후에도 매수 조건이라서 재진입이 되는거 같은데, 바로 같은 포지션으로 재진입이 되지 않도록 해주세요.
(시뮬레이션에는 재진입이 없습니다. 실 매매에서만 재진입이 이루어 집니다.)
2. 매수 진입하여 손절되면 매도 조건시 진입 (단, 매도 진입은 Data2의 20일선이 100일선 위에 있고 80일선이 상방일때만)
3. 포지션 진입 후 익절이되면 당일 매매 끝
4. 진입회수를 2로 하면 1번과같은 조건이든 매수(청산), 매도(청산) 조건 진입이든 2번만 거래가 이루어 집니다. 진입은 2번항목 조건에 의해서 두번까지만 되게 해주시고, 첫번째 매매에서 익절이 되면 당일 매매는 종료하게 해주세요.
input : short(12),long(26),sig(9),P1(3),P2(20),P3(100);
input : 시작시간(102000), 종료시간(172000);
input : 진입회수(2);
var : mav1(0,data1),mav2(0,data1),mav3(0,data1);
var : Tcond(False,data1),Bcount(0,data1),Scount(0,data1);
var : MACDO2(0,data2), MACDO1(0,data1);
var : BH(0,data1),SL(0,data1);
MACDO2 = data2(MACD_OSC(short,long,sig));
MACDO1 = data1(MACD_OSC(short,long,sig));
mav1 = data1(ma(c,P1));
mav2 = data1(ma(c,P2));
mav3 = data1(ma(c,P3));
if stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간) Then{
Tcond = true;
Bcount = 0;
Scount = 0;
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
}
//진입회수
if MarketPosition != MarketPosition[1] and MarketPosition == 1 Then
Bcount = Bcount+1;
if MarketPosition != MarketPosition[1] and MarketPosition == -1 Then
Scount = Scount+1;
//진입
if Tcond == true Then{
if Bcount < 진입회수 and MACDO2 > MACDO2[1] and crossup(mav2,mav3) Then buy("Buy");
if Scount < 진입회수 and MACDO2 < MACDO2[1] and CrossDown(mav2,mav3) Then sell("Sell");
}
//청산1
if MarketPosition == 1 Then{
BH = highest(H,BarsSinceEntry);
if BH >= EntryPrice+PriceScale*60 and BH < EntryPrice+PriceScale*80 Then
ExitLong("B익절1",AtStop,BH-PriceScale*30);
if BH >= EntryPrice+PriceScale*80 Then
ExitLong("B익절2",AtStop,BH-PriceScale*20);
ExitLong("B손절",AtStop,EntryPrice-PriceScale*40);
}
if MarketPosition == -1 Then{
SL = Lowest(L,BarsSinceEntry);
if SL <= EntryPrice-PriceScale*60 and SL > EntryPrice-PriceScale*80 Then
ExitShort("S익절1",AtStop,SL+PriceScale*30);
if SL <= EntryPrice-PriceScale*80 Then
ExitShort("S익절2",AtStop,sL+PriceScale*20);
ExitShort("S손절",AtStop,EntryPrice+PriceScale*40);
}
if 종료시간 <= sTime or sTime < 시작시간 then {
if MarketPosition == 1 then{
ExitLong("B장종료");
}
if MarketPosition == -1 then{
ExitShort("S장종료");
}
}
2017-09-28
233
글번호 113184