커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6544
글번호 230811
답변완료
부탁합니다
안녕하세요
오늘도 시스템 식하나 부탁합니다
모든식에 한글 설명도 부탁합니다
20일 이평선을 사용해서 매매식을 만들고자 합니다
매수1 주가가 20일 이평선아래 있다가 위로 돌파시 매수
단 돌파봉은 양봉이어야 하고
양봉은 몸통이 있는경우에만 가능하고
시가 종가의 2/1 이상이 20일 이평선 위에 있을시에만
매수2 주가가 20일 이평선아래 있다가 위로 돌파시 매수
단 돌파봉이 양봉이어야 하고 종가만 20일 이평선 위에 있으면 됩니다
그리고 다음봉은 양봉 음봉은 상관없으나 저가 20일 이평선 위에서 있는경우
입니다
매수 3 주가가 20일 이평선 위에 있다가 아래로 내려가서
20일 이평선을 터치하고 다음봉이 그 터치봉의 고가를 종가상
돌파하는 양봉에 매수
모든식은 반대경우도 부탁합니다
예를 들어 매수1 이 진입상태면 다음 신호를 무시
2015-09-04
197
글번호 90051
외부의도 님에 의해서 삭제되었습니다.
2015-09-04
1
글번호 90050
답변완료
두수식을동시에사용
Input : shortPeriod(1), longPeriod(20) ;
Var : value(0);
value = OSCP(shortPeriod, longPeriod);
If CrossUP(value, 0) Then
Buy();
If CrossDown(value,0) Then
Sell();
Input : shortPeriod(2), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
위두수식을 동시에사용할수 있게해주세요
2015-09-03
134
글번호 90049
답변완료
수식 부탁드려요..
항상 감사 합니다.
질문 선물 1분봉 에서 9시에서 10시 사이에
저점대비 고가가 1포인트 이상 상승한적이 있다
이것을 수식으로 표현해 주세요..
2015-09-03
130
글번호 90048
답변완료
볼린져밴드 참조데이타
현재 저는 볼린져 밴드 5분봉을 작성중에 있습니다.
참조데이타를 일봉으로 보고 작성을 할려고 하는데요
var1 = BollBandup(20,2) === 이조건은 5분봉에만 적용됩니다
참조데이타 일봉일때 볼린져 밴드 조건식을 알려주시면 고맙겠습니다.
2015-09-03
169
글번호 90047
답변완료
가격 이동평균
안녕하세요
선물지수 분봉에서, 실시간으로 가격이동평균선 100의 1P 위의 선은 빨간선으로
그리고 1P 아래의 선은 파란색으로 표시하는 지표식 부탁합니다.
2015-09-03
152
글번호 90039
답변완료
부탁 드립니다.
43839번의 재 질문 입니다.
아래 지표를
해선 영업 시간인
07:00~익일06:00으로
나타 날수 있도록 부탁 드립니다.
미리 감사 드립니다.
input : renkoSize(0.5),p1(12),p2(26),p3(9);
input : 마지막봉시간(155500);
var:j(0),k(0),renkoCnt(0),gubun(0),filename("renko2.txt"),printOK(False),
sum(0),ema1_OK(false),ema2_OK(false),sig_OK(False);
array:OO[50](0),HH[50](0),LL[50](0),CC[50](0),ma1[50](0),ma2[50](0),
ema1[50](0),ema2[50](0),macdVal[50](0),macdSig[50](0);
If Bdate != Bdate[1] Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산
gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산
For j = 49 DownTo 1 { //금일 시가봉을 신규 추가
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
ema1[j] = ema1[j-1];
ema2[j] = ema2[j-1];
macdVal[j] = macdVal[j-1];
macdSig[j] = macdSig[j-1];
}
OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
HH[0] = C;
LL[0] = C;
CC[0] = C;
}
Else {
If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점
If OO[0] - renkoSize >= C Then {
gubun = -1;
CC[0] = OO[0] - renkoSize;
HH[0] = OO[0];
LL[0] = CC[0];
//지수이평을 계산할 수 있을 만큼 렌코가 만들어진 이후 계산 시작
if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1];
if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1];
if ema2_OK then macdVal[0] = ema1[0] - ema2[0];
if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1];
j = 0;
if printOK then print(filename,
"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
Else If OO[0] + renkoSize <= C Then {
gubun = 1;
CC[0] = OO[0] + renkoSize;
HH[0] = CC[0];
LL[0] = OO[0];
if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1];
if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1];
if ema2_OK then macdVal[0] = ema1[0] - ema2[0];
if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1];
j = 0;
if printOK then print(filename,
"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
If LL[0] - renkoSize >= C Then {
gubun = -1;
renkoCnt = Int(Round((LL[0]-C)/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
if ema1_OK then ema1[j] = ema1[j-renkoCnt];
if ema2_OK then ema2[j] = ema2[j-renkoCnt];
if ema2_OK then macdVal[j] = macdVal[j-renkoCnt];
if sig_OK then macdSig[j] = macdSig[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = LL[j+1];
CC[j] = LL[j+1] - renkoSize;
HH[j] = OO[j];
LL[j] = CC[j];
if ema1_OK then ema1[j] = (CC[j]-ema1[j+1])*(2/(p1+1))+ema1[j+1];
if ema2_OK then ema2[j] = (CC[j]-ema2[j+1])*(2/(p2+1))+ema2[j+1];
if ema2_OK then macdVal[j] = ema1[j] - ema2[j];
if sig_OK then macdSig[j] = (macdVal[j] - macdSig[j+1])*(2/(P3+1))+macdSig[j+1];
if printOK then print(filename,
"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
Else If HH[0] + renkoSize <= C Then {
gubun = 1;
renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
ema1[j] = ema1[j-renkoCnt];
ema2[j] = ema2[j-renkoCnt];
macdVal[j] = macdVal[j-renkoCnt];
macdSig[j] = macdSig[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = HH[j+1];
CC[j] = HH[j+1] + renkoSize;
HH[j] = CC[j];
LL[j] = OO[j];
if ema1_OK then ema1[j] = (CC[j]-ema1[j+1])*(2/(p1+1))+ema1[j+1];
if ema2_OK then ema2[j] = (CC[j]-ema2[j+1])*(2/(p2+1))+ema2[j+1];
if ema2_OK then macdVal[j] = ema1[j] - ema2[j];
if sig_OK then macdSig[j] = (macdVal[j] - macdSig[j+1])*(2/(P3+1))+macdSig[j+1];
if printOK then print(filename,
"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
Else If stime >= 마지막봉시간 and stime[1] < 마지막봉시간 Then { //당일 종가봉에서
For j = 49 DownTo 1 {
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
ema1[j] = ema1[j-1];
ema2[j] = ema2[j-1];
macdVal[j] = macdVal[j-1];
macdSig[j] = macdSig[j-1];
}
If LL[1] > C Then { //종가가 이전 봉보다 아래 형성
OO[0] = LL[1];
CC[0] = C;
HH[0] = OO[0];
LL[0] = CC[0];
} Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성
OO[0] = HH[1];
CC[0] = C;
HH[0] = CC[0];
LL[0] = OO[0];
} Else { //종가가 이전 봉의 중간에 형성
OO[0] = C;
CC[0] = C;
HH[0] = C;
LL[0] = C;
}
if ema1_OK then ema1[0] = (CC[0]-ema1[1])*(2/(p1+1))+ema1[1];
if ema2_OK then ema2[0] = (CC[0]-ema2[1])*(2/(p2+1))+ema2[1];
if ema2_OK then macdVal[0] = ema1[0] - ema2[0];
if sig_OK then macdSig[0] = (macdVal[0] - macdSig[1])*(2/(P3+1))+macdSig[1];
j = 0; //마지막 1봉만 출력
if printOK then print(filename,
"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
if ema1_OK == False and CC[p1] > 0 then { //지수이평 계산 가능할 때까지 대기
sum = 0;
for j = 0 to p1 - 1 {
sum = sum + CC[j];
}
ema1[0] = sum/p1; //처음 값은 단순이평값으로
ema1_OK = True; //다음 봉부터 지수이평 계산되도록 설정
}
if ema2_OK == False and CC[p2] > 0 then {
sum = 0;
for j = 0 to p2 - 1 {
sum = sum + CC[j];
}
ema2[0] = sum/p2;
ema2_OK = True;
}
if sig_OK == False and CC[P2+p3] > 0 then {
sum = 0;
for j = 0 to p3 - 1 {
sum = sum + macdVal[j];
}
macdSig[0] = sum/p3;
sig_OK = True;
}
Plot1(macdVal[0],"macd");
Plot2(macdSig[0],"macd signal");
2015-09-03
180
글번호 90035
답변완료
수식 요청
안녕하세요. 항상 도움에 다시한번 감사드립니다.
하기 조건에 대한 3가지 수식 부탁드립니다.
* 1번 *
1. 수식A신호 매수매도 및 청산
2. 수식A신호 진입후 8틱이상 움직인 이후 수식B에서 스위칭 신호발생시 Only 청산만 (수식B 신호로 진입불가)
* 2번 *
1. 수식A신호 매수매도 및 청산
2. 지표C 기준 (0선 이상 매수 진입불가 / 0선 이하 매도 진입불가)
* 3번 *
1. 수식A신호 매수매도 및 청산
2. 단, 수식B와 같을 경우만
- 수식A -
Input : Period(12), Period1(5), Period2(5);
value1 = StochasticsK(Period,Period1);
value2 = StochasticsD(Period,Period1,Period2);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
sell();
}
- 수식B -
Input : af(0.02), maxAF(0.2) ;
Var : value(0);
value = csar(af,maxAF);
# 매수/매도청산
If C > value Then
{
Buy();
}
# 매도/매수청산
If C < value Then
{
Sell();
}
- 지표C -
Input : Period(100),기준값(0);
var : CCIv(0);
CCIv = CCI(Period);
2015-09-03
145
글번호 90033
부득탐승 님에 의해서 삭제되었습니다.
2015-09-03
0
글번호 90032