커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4575
글번호 230811
답변완료
수식 부탁드립니다
(1)
파라볼릭 상단 저항선을 고가로 터치하고 음봉 발생 캔들에 매수
파라볼릭 하단 지지선을 저가로 터치하고 양봉 발생 캔들에 매수
2016-07-21
182
글번호 100253
답변완료
행복; 시스템식 작성 바랍니다
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
시스템식 작성 바랍니다
<< 조건 >>
- 고가 == 상한가
- 종가 < 상한가
< 매수 >
- 매수금액; 천만원
- 당일 고가
< 매도 >
- 매도수량; 전량
- 당일 종가
수고하십시요^^
2016-07-21
151
글번호 100252
답변완료
글번호 48760번 재질문 (300)
안녕하세요?
글번호 48760번 재질문드립니다.
바쁘시고 번거로우시겠지만 다시 한번 더 검증 부탁드립니다.
장이 개장하여 종가상 10개봉 고점 저점을 잡고
종가상 현재봉값이 고점대비 1% 상승하면 매수, 저점대비 1% 하락하면 매도하고자 합니다.(리버스매매)
당일 청산을 기준으로 매수와 매도진입이 각 1회 이하로 하되 당일청산하고자 합니다.
감사합니다.
2016-07-21
156
글번호 100251
답변완료
혼합 시스템 문의드립니다
1.
input : 전환선기간(9),기준선기간(26),선행스팬2기간(20);
Var : 전환선(0), 기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0);
전환선 = (highest(H,전환선기간)+lowest(L,전환선기간))/2;
기준선 = (highest(H,기준선기간)+lowest(L,기준선기간))/2;
후행스팬 = C;
선행스팬1 = (전환선+기준선)/2;
선행스팬2 = (highest(H,선행스팬2기간)+lowest(L,선행스팬2기간))/2;
Plot1(전환선, "전환선");
if 기준선 > C Then
Plot2(기준선, "기준선",BLUE);
Else
Plot2(기준선, "기준선",RED);
Plot3(후행스팬, "후행스팬");
Plot4(선행스팬1, "선행스팬1");
Plot5(선행스팬2, "선행스팬2");
2.
Input : Af(0.03), MaxAf(0.02);
Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0);
if count == 0 then //변수들의 초기화
{
highval = High;
lowval = Low;
direction = 0;
sar1 = 0;
afval = 0;
ep = 0;
count = 1;
}
if(ep != 0 ) then // 추세가 진행중
{
if(direction == 1) then // 상승추세이면
{
ep = highval;
sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산
if(high > highval) then // 신고가 발생
{
highval = high;
afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if( low < sar1) then // 추세변경(상승->하락)
{ // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의
direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
lowval = low;
}
}
else // 하락 추세
{
ep = lowval; // 하락추세에서는 EP로 저가 사용
sar1 = sar1 + afval*(ep-sar1);
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af;
if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if(high > sar1) then // 추세 변경(하락->상승)
{ // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의
direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
highval = high;
}
}
}
else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산
{
if(direction == 1) then // 상승 추세
{
ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);
if ( high > highval) then // 신고가가 발생
{
Highval = high;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
else // 하락추세
{
ep = lowval;
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
}
else // SAR 첨 시작
{
if direction == 0 then // 추세가 없으므로
{
if(c > c[1]) then // 상승추세로 시작
direction = 1;
else if( c < c[1]) then // 하락추세로 시작
direction = -1;
}
else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작
{
direction = -1;
sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로
}
}
else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작
{
direction = 1;
sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로
}
}
lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로
highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장
}
//처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid
#if(sar1 != 0) then
# User_Func_Sar = sar1;
if sar1 > sar1[1] Then
plot1(sar1,"파리볼릭",RED);
else
plot1(sar1,"파리볼릭",blue);
위 2가지 수식을 이용하여 만들어보고싶습니다
1. 1번 일목균형표에 선행스팬2 을 기준으로합니다
2번 파라볼릭 에서 이제 기준을 잡은뒤
파라볼릭or선행스팬2 가 동시에 충족될때 신호발생
사진상 1번이 진입포지션
사진상 2번이 청산포지션
사진상 3번이 스위칭 포지션
기준: 선행스팬2 위에 캔들봉이 완성될때 or 파라볼릭은 빨강색 일때
매수신호발생 사진상 1번
매도는 그반대
청산: 신호발생후 선행스팬2 선을
관통한 봉에 청산신호 발생 (파라볼릭은 유지중일때)
매도는 그반대
스위칭: 사진상 3번처럼 2개가 일치하는부분에서 스위칭발생
사진으로 첨부합니다 위내용
2016-07-21
292
글번호 100250
답변완료
수식 간소화
MACD 다이버젼스 수식을 아래와 같이 만들었었는데요.. 간략하게 수정 또는 같은 내용으로 재작성 부탁드립니다.
Input: Period(60), ShortPeriod(12), longPeriod(26), Highperiod(30);
Var: Formula0(0), Formula1(0), Formula2(0), Formula3(0);
Formula0 = iff(macd(shortPeriod,longPeriod)>macd(shortPeriod,longPeriod)[1] &&
macd(shortPeriod,longPeriod)[1] <= macd(shortPeriod,longPeriod)[2] &&
lowest(macd(shortPeriod,longPeriod)[2],Period) < macd(shortPeriod,longPeriod)[1] &&
(L<Lowest(L[1],Period)||L[1]<Lowest(L[2],Period)||
L[2]<Lowest(L[3],Period)),
iff(C==C[1],0.001,(C-C[1])/C[1]*100), 0);
Formula1 = iff(macd(shortPeriod,longPeriod)<macd(shortPeriod,longPeriod)[1]&&
macd(shortPeriod,longPeriod)[1] >= macd(shortPeriod,longPeriod)[2]&&
highest(macd(shortPeriod,longPeriod)[2],period)>macd(shortPeriod,longPeriod)[1]&&
(H>Highest(H[1],Period)||H[1]>Highest(H[2],Period)||
H[2]>Highest(H[3],Period)),
iff(C==C[1],0.001,(C[1]-C)/C[1]*100), 0);
Formula2 = iff(macd(shortPeriod,longPeriod)<macd(shortPeriod,longPeriod)[1]&&
macd(shortPeriod,longPeriod)[1] >= macd(shortPeriod,longPeriod)[2] &&
highest(macd(shortPeriod,longPeriod)[2],period)>macd(shortPeriod,longPeriod)[1]&&
(H>Highest(H[1],Period)||H[1]>Highest(H[2],Period)||
H[2]>Highest(H[3],Period)),
iff(C==C[1],0.001,(C[1]-C)/C[1]*100), 0);
Formula3 = iff(macd(shortPeriod,longPeriod)>macd(shortPeriod,longPeriod)[1]&&
macd(shortPeriod,longPeriod)[1] <= macd(shortPeriod,longPeriod)[2] &&
lowest(macd(shortPeriod,longPeriod)[2],Period) < macd(shortPeriod,longPeriod)[1] &&
(L<Lowest(L[1],Period)||L[1]<Lowest(L[2],Period)||
L[2]<Lowest(L[3],Period)),
iff(C==C[1],0.001,(C-C[1])/C[1]*100), 0);
if Formula0 Then
Buy();
if Formula1 Then
Exitlong();
if Formula2 Then
Sell();
if Formula3 Then
Exitshort();
2016-07-20
160
글번호 100249
답변완료
문의드립니다
Input : Af(0.02), MaxAf(0.2);
Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0);
if count == 0 then //변수들의 초기화
{
highval = High;
lowval = Low;
direction = 0;
sar1 = 0;
afval = 0;
ep = 0;
count = 1;
}
if(ep != 0 ) then // 추세가 진행중
{
if(direction == 1) then // 상승추세이면
{
ep = highval;
sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산
if(high > highval) then // 신고가 발생
{
highval = high;
afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if( low < sar1) then // 추세변경(상승->하락)
{ // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의
direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
lowval = low;
}
}
else // 하락 추세
{
ep = lowval; // 하락추세에서는 EP로 저가 사용
sar1 = sar1 + afval*(ep-sar1);
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af;
if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
if(high > sar1) then // 추세 변경(하락->상승)
{ // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의
direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다)
sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화
afval = 0;
ep = 0;
highval = high;
}
}
}
else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산
{
if(direction == 1) then // 상승 추세
{
ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);
if ( high > highval) then // 신고가가 발생
{
Highval = high;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
else // 하락추세
{
ep = lowval;
afval = Af; // 가속변수의 초기값인 AF(0.02) 적용
sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산
if(low < lowval) then // 신저가 발생
{
lowval = low;
afval = afval + Af; // 가속변수 증가
if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다)
afval = MaxAf;
}
}
}
else // SAR 첨 시작
{
if direction == 0 then // 추세가 없으므로
{
if(c > c[1]) then // 상승추세로 시작
direction = 1;
else if( c < c[1]) then // 하락추세로 시작
direction = -1;
}
else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작
{
direction = -1;
sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로
}
}
else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작)
{
if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작
{
direction = 1;
sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로
}
}
lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로
highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장
}
//처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid
#if(sar1 != 0) then
# User_Func_Sar = sar1;
if sar1 > sar1[1] and C > sar1 Then
buy("매수");
if sar1 <= sar1[1] and C < sar1 Then
sell("매도");
사진상 첫부분에서 바로 신호가 뜨면좋겠습니다
수정가능한지좀 부탁드립니다..
2016-07-20
238
글번호 100248
답변완료
서로 다른 지표간의 돌파 검색
볼린저 밴드 10, 6 상한
엔벨로프 20, 5 저항
볼린저밴드가 엔벨로프를 상향돌파하는 종목검색식을 작성하고 싶은데
가능할까요??
2016-07-20
183
글번호 100247
답변완료
수식 부탁드립니다.
20일선과 5일선을 이용한 추세 매매 수식 부탁드립니다.
1. 매수 신호 : 새로운 캔들이 형성될 때 20일선이 우 상향하면 5일선 아래로 양봉 발생 시 매수 신호 발생
2. 매도 신호 : 새로운 캔들이 형성될 때 20일선이 우 하향하면 5일선 아래로 음봉 발생 시 매도 신호 발생
(실시간 캔들에서 신호 발생되어야 합니다.)
3. 수량 : 2계약
3. 청산 조건 : 익절 = 1차 : 20틱, 2차 : 30틱, 손절 = 15틱
4. 먼저 진입한 포지션이 청산 완료된 후 다음 신호 진입
5. 매매 종료 시간 설정 : 01:00
2016-07-20
168
글번호 100229
답변완료
부탁드립니다
선물 매매;2분챠트
#단순이평 20일선이 120 위로 돌파시 매수,or 20일선이 위로 240 돌파시
매도분 청산과 동시 매수
# 20일선이 120 아래로 이탈시 매도,or 20일선이 아래로 240 이탈시
매수분 청산과 동시 매도,
#당일 청산,손절매 6틱,매매수량 3
2016-07-20
148
글번호 100228