커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4437
글번호 230811
답변완료
수식부탁드립니다-------------
/*tema1이 20봉중 가장 낮거나 가장높은 값이면 tema1에 tema2를 일치시켜주세요 감사합니다
매번 번거롭게해서미안합니다*/
Input: 보정시각(0),호가더하기(0),지수더하기(0),폭보정(1.5),지수호가테마LENGTH1(10),순매수LENGTH2(10),급변(0.05)
,순매수테마보정한계(0.3),순매수테마급증보정(0.5),순매수테마급감보정(0.5)
,지수테마보정한계(0.3),지수테마급증보정(0.5),지수테마급감보정(0.5) ;
var : AsksMA(0),BidsMA(0), Period(1),idx(0),EP(0),E11(0),E12(0),E13(0),E21(0),E22(0),E23(0);
Var : value(0);
Var : valuec(0);
var : va71(0);
var : va80(0);
var : va81(0);
var : va90(0);
var : va91(0);
var : va92(0);
var : va93(0);
var : va94(0);
var : va95(0);
VAR : TEMA1(0);
VAR : TEMA2(0);
VAR : TEMA3(0);
VAR : vmin(0);
VAR : vmax(0);
BidsMa = ma(bids,Period);
AsksMA = ma(asks,Period);
value = ma(bids,period)-ma(asks,period)+29000;
Plot2(BidsMA, "매수잔량이평");
Plot3(AsksMA, "매도잔량이평");
Plot4(value, "차");
//**************************************************************
//*************************************************************
va91=((c-c[1])/c[1]*100)*20000/20000;
va93=((value-value[1])/value[1]*70)*125/2900;
if Bdate != Bdate[1] Then{
idx = 0;
var1 = 100;
var2 = 100;
plot10(var1);
plot11(var2);
plot51(var2 +호가더하기 );
}
Else{
idx = idx+1;
var1 = var1+(var1*(va91/100));
var2 = var2+(var2*(va93/95));
plot10(var1+지수더하기 );
plot11(var2+호가더하기 );
plot51(var2+호가더하기 );
TEMA3 = (3 * Ema(var2+호가더하기 ,순매수LENGTH2)) - (3 * Ema(Ema(var2+호가더하기 ,순매수LENGTH2),순매수LENGTH2)) +
(Ema(Ema(Ema(var2+호가더하기 ,순매수LENGTH2),순매수LENGTH2),순매수LENGTH2));
if TEMA3 >TEMA3[1]+순매수테마보정한계 then TEMA3 = ((TEMA3 -TEMA3[1])*순매수테마급증보정)+TEMA3[1];
if TEMA3 <TEMA3[1]-순매수테마보정한계 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*순매수테마급감보정);
if TEMA3 >TEMA3[1]+50 then TEMA3 = ((TEMA3 -TEMA3[1])*0.9)+TEMA3[1];
if TEMA3 <TEMA3[1]-50 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*0.9);
plot52(TEMA3,"순매수테마");
}
if var2-var1 > 폭보정 Then var2=var1;
if var1-var2 > 폭보정 Then var2=var1;
EP = 2/(지수호가테마LENGTH1+1);
if idx == 0 Then{
E11 = var1;
E21 = var2;
}
Else{
E11 = var1 * EP + E11 * (1-EP);
E21 = var2 * EP + E21 * (1-EP);
}
if idx <= 1 Then{
E12 = E11;
E22 = E21;
}
Else{
E12 = E11 * EP + E12 * (1-EP);
E22 = E21 * EP + E22 * (1-EP);
}
if idx <= 2 Then{
E13 = E12;
E23 = E22;
}
Else{
E13 = E12 * EP + E13 * (1-EP);
E23 = E22 * EP + E23 * (1-EP);
}
TEMA1 = (3 * E11) - (3 * E12) + (E13);
if TEMA1 >TEMA1[1]+지수테마보정한계 then TEMA1 = ((TEMA1 -TEMA1[1])*지수테마급증보정)+TEMA1[1];
if TEMA1 <TEMA1[1]-지수테마보정한계 then TEMA1 = TEMA1[1]-((TEMA1[1] -TEMA1)*지수테마급감보정);
if TEMA2 >TEMA2[1]+지수테마보정한계 then TEMA2 = ((TEMA2 -TEMA2[1])*지수테마급증보정)+TEMA2[1];
if TEMA2 <TEMA2[1]-지수테마보정한계 then TEMA2 = TEMA2[1]-((TEMA2[1] -TEMA2)*지수테마급감보정);
TEMA2 = (3 * E21) - (3 * E22) + (E23);
PLOT30(TEMA1+지수더하기 ,"지수테마",iff((TEMA1 +지수더하기 )>(TEMA1 +지수더하기)[1]+00,BLACK,iff((TEMA1 +지수더하기 )<(TEMA1 +지수더하기 )[1]-00,BLACK,BLACK)));
PLOT31(TEMA2 +호가더하기,"호가테마");
if stime == 보정시각 then TEMA1 = TEMA2;
vmin = min(TEMA1 ,TEMA1 ,va71);
vmax = max(TEMA1 ,TEMA1 ,va71);
if TEMA1+지수더하기> TEMA2+호가더하기 Then{
var80 = (TEMA1+지수더하기- TEMA2 +호가더하기 )*0.5+TEMA2+호가더하기 ;
}
if TEMA1 < TEMA2+호가더하기 Then{
var80 = (TEMA2+호가더하기 -TEMA1+지수더하기)*0.5+TEMA1+지수더하기 ;
}
PLOT17(var80,"지호평균");
//테마합 일정 수량차이상의 급등락 표시
if TEMA3 > TEMA3[1]+ 급변 Then{plot21(vmin-0.05,"급등");}
if TEMA3 < TEMA3[1]- 급변 Then{plot22(vmin-0.05,"급락");}
va71 =( TEMA2+호가더하기 - TEMA1+지수더하기 )+100;
if (va71[1] )< (va71)then {
PLOT25((va71 )-0.02,"매수예비");
//PlaySound("C:₩예스트레이더₩data₩Sound₩pp.wav");
}
if (va71[1] )> (va71) Then{
PLOT26((va71 )-0.02,"매도예비");
// PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav");
}
PLOT60(va71,"55");
if (TEMA1[1]+지수더하기 )< (TEMA1+지수더하기) and (va71[1] )< (va71)then {
PLOT45((va71 )-0.02,"매수막대");
PlaySound("C:₩예스트레이더₩data₩Sound₩up.wav");
}
if (TEMA1[1]+지수더하기 )> (TEMA1+지수더하기) and (va71[1] )> (va71) Then{
PLOT46((va71 )-0.02,"매도막대");
PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav");
}
if va71[1]+급변 < va71 Then {
PLOT18((va71 )+0.01,"매도");
}
if va71[1]-급변 > va71 Then {
PLOT19((va71 )+0.01,"매수");
}
2017-02-26
139
글번호 107252
답변완료
시스템 작성 부탁드립니다.
그동안 답변주신것 감사드리고,아래와 같이 전략작성을 부탁드리고자 합니다
** 진입조건(진입 조건봉)
① 2틱이상 음봉 다음 1틱양봉 발생후 다음봉 시가에 매수 진입
② 2틱이상 양봉 다음 1틱음봉 발생후 다음봉 시가에 매도 진입
** 청산조건 및 역진입
① 익 0.30P-0.50 도달후 U-turn시 0.00점 청산(설정된 기준선에 매수시는 음봉종가
접속,매도시는 양봉 종가 접속시 청산 역진)
② 익 0..80P-1.00 ( “ ”) 익 0.50점 청산 ( “ ” )
③ 익 1.30P-1.50 ( “ ”) 익 1.00점 청산 ( “ ” )
④ 익 1.80P-2.00 ( “ ”) 익 1.50점 청산 ( “ ” )
⑤ 익 2.30P-2.50 ( “ ”) 익 2.00점 청산 ( “ ” )
⑥ 익 2.80P-3.00 ( “ ”) 익 2.50점 청산 ( “ ” )
⑦ 익 3.30P-3.50 ( “ ”) 익 3.00점 청산 ( “ ” )
⑧ 0.50P단위로 단계적으로 확대
** 부대조건
* 익 0.50 이상, 손절 0.50
* 상기 청산후 바로 역진입(1틱 조건봉 아니어도 됨)
* 기준선 도달전 역조건봉 나올시 청산 역진입
* 손절후는 첫조건봉 나올시 진입
* 기준선 설정 : 장시작후 첫진입한 1틱봉의 종가
* 무손실 1틱은 제외(갭상승 1틱 음봉,갭하락 1틱 양봉)
* 익절,손절,주기는 변수로
감사합니다..^^
2017-02-26
136
글번호 107251
답변완료
수정부탁드립니다==================
/*지난 어느시각에 tema1 과 tema2 의차이를 눈대중으로 보고 호가더하기 나 지수더하기를
해서 둘의 값을 어느정도 동일하게 맟추고 그시간이후의 둘의 변동각을 보고있는데
보정시각을 입력하여 같은효과를 볼순없나요? 식을추가했으나 지표가 일정시각에 동일하게 되질 안네요 수정좀 부탁드립니다*/
Input: 보정시각(0),호가더하기(0),지수더하기(0),폭보정(1.5),지수호가테마LENGTH1(10),순매수LENGTH2(10),급변(0.05)
,순매수테마보정한계(0.3),순매수테마급증보정(0.5),순매수테마급감보정(0.5)
,지수테마보정한계(0.3),지수테마급증보정(0.5),지수테마급감보정(0.5) ;
var : AsksMA(0),BidsMA(0), Period(1),idx(0),EP(0),E11(0),E12(0),E13(0),E21(0),E22(0),E23(0);
Var : value(0);
Var : valuec(0);
var : va71(0);
var : va80(0);
var : va81(0);
var : va90(0);
var : va91(0);
var : va92(0);
var : va93(0);
var : va94(0);
var : va95(0);
VAR : TEMA1(0);
VAR : TEMA2(0);
VAR : TEMA3(0);
VAR : vmin(0);
VAR : vmax(0);
BidsMa = ma(bids,Period);
AsksMA = ma(asks,Period);
value = ma(bids,period)-ma(asks,period)+29000;
Plot2(BidsMA, "매수잔량이평");
Plot3(AsksMA, "매도잔량이평");
Plot4(value, "차");
//**************************************************************
//*************************************************************
va91=((c-c[1])/c[1]*100)*20000/20000;
va93=((value-value[1])/value[1]*70)*125/2900;
if Bdate != Bdate[1] Then{
idx = 0;
var1 = 100;
var2 = 100;
plot10(var1);
plot11(var2);
plot51(var2 +호가더하기 );
}
Else{
idx = idx+1;
var1 = var1+(var1*(va91/100));
var2 = var2+(var2*(va93/95));
plot10(var1+지수더하기 );
plot11(var2+호가더하기 );
plot51(var2+호가더하기 );
TEMA3 = (3 * Ema(var2+호가더하기 ,순매수LENGTH2)) - (3 * Ema(Ema(var2+호가더하기 ,순매수LENGTH2),순매수LENGTH2)) +
(Ema(Ema(Ema(var2+호가더하기 ,순매수LENGTH2),순매수LENGTH2),순매수LENGTH2));
if TEMA3 >TEMA3[1]+순매수테마보정한계 then TEMA3 = ((TEMA3 -TEMA3[1])*순매수테마급증보정)+TEMA3[1];
if TEMA3 <TEMA3[1]-순매수테마보정한계 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*순매수테마급감보정);
if TEMA3 >TEMA3[1]+50 then TEMA3 = ((TEMA3 -TEMA3[1])*0.9)+TEMA3[1];
if TEMA3 <TEMA3[1]-50 then TEMA3 = TEMA3[1]-((TEMA3[1] -TEMA3)*0.9);
plot52(TEMA3,"순매수테마");
}
if var2-var1 > 폭보정 Then var2=var1;
if var1-var2 > 폭보정 Then var2=var1;
EP = 2/(지수호가테마LENGTH1+1);
if idx == 0 Then{
E11 = var1;
E21 = var2;
}
Else{
E11 = var1 * EP + E11 * (1-EP);
E21 = var2 * EP + E21 * (1-EP);
}
if idx <= 1 Then{
E12 = E11;
E22 = E21;
}
Else{
E12 = E11 * EP + E12 * (1-EP);
E22 = E21 * EP + E22 * (1-EP);
}
if idx <= 2 Then{
E13 = E12;
E23 = E22;
}
Else{
E13 = E12 * EP + E13 * (1-EP);
E23 = E22 * EP + E23 * (1-EP);
}
TEMA1 = (3 * E11) - (3 * E12) + (E13);
if TEMA1 >TEMA1[1]+지수테마보정한계 then TEMA1 = ((TEMA1 -TEMA1[1])*지수테마급증보정)+TEMA1[1];
if TEMA1 <TEMA1[1]-지수테마보정한계 then TEMA1 = TEMA1[1]-((TEMA1[1] -TEMA1)*지수테마급감보정);
if TEMA2 >TEMA2[1]+지수테마보정한계 then TEMA2 = ((TEMA2 -TEMA2[1])*지수테마급증보정)+TEMA2[1];
if TEMA2 <TEMA2[1]-지수테마보정한계 then TEMA2 = TEMA2[1]-((TEMA2[1] -TEMA2)*지수테마급감보정);
TEMA2 = (3 * E21) - (3 * E22) + (E23);
PLOT30(TEMA1+지수더하기 ,"지수테마",iff((TEMA1 +지수더하기 )>(TEMA1 +지수더하기)[1]+00,BLACK,iff((TEMA1 +지수더하기 )<(TEMA1 +지수더하기 )[1]-00,BLACK,BLACK)));
PLOT31(TEMA2 +호가더하기,"호가테마");
if stime == 보정시각 then TEMA1 = TEMA2;
vmin = min(TEMA1 ,TEMA1 ,va71);
vmax = max(TEMA1 ,TEMA1 ,va71);
if TEMA1+지수더하기> TEMA2+호가더하기 Then{
var80 = (TEMA1+지수더하기- TEMA2 +호가더하기 )*0.5+TEMA2+호가더하기 ;
}
if TEMA1 < TEMA2+호가더하기 Then{
var80 = (TEMA2+호가더하기 -TEMA1+지수더하기)*0.5+TEMA1+지수더하기 ;
}
PLOT17(var80,"지호평균");
//테마합 일정 수량차이상의 급등락 표시
if TEMA3 > TEMA3[1]+ 급변 Then{plot21(vmin-0.05,"급등");}
if TEMA3 < TEMA3[1]- 급변 Then{plot22(vmin-0.05,"급락");}
va71 =( TEMA2+호가더하기 - TEMA1+지수더하기 )+100;
if (va71[1] )< (va71)then {
PLOT25((va71 )-0.02,"매수예비");
//PlaySound("C:₩예스트레이더₩data₩Sound₩pp.wav");
}
if (va71[1] )> (va71) Then{
PLOT26((va71 )-0.02,"매도예비");
// PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav");
}
PLOT60(va71,"55");
if (TEMA1[1]+지수더하기 )< (TEMA1+지수더하기) and (va71[1] )< (va71)then {
PLOT45((va71 )-0.02,"매수막대");
PlaySound("C:₩예스트레이더₩data₩Sound₩up.wav");
}
if (TEMA1[1]+지수더하기 )> (TEMA1+지수더하기) and (va71[1] )> (va71) Then{
PLOT46((va71 )-0.02,"매도막대");
PlaySound("C:₩예스트레이더₩data₩Sound₩dingdong.wav");
}
if va71[1]+급변 < va71 Then {
PLOT18((va71 )+0.01,"매도");
}
if va71[1]-급변 > va71 Then {
PLOT19((va71 )+0.01,"매수");
}
2017-02-26
148
글번호 107250
답변완료
수식 작성에 대해 도움 요청드립니다.
안녕하세요. 수고가 많으십니다.
시스템트레이딩은 문외한이라 며칠간 밤새 공부해서 테스트해보았는데
진전이 없어서 도움을 청합니다.
여러부분 수정해보고 했는데 아무래도 해당 전략에 대한 전문가의 수식작성을 보는 것이 도움이 될까 싶어서 글을 남깁니다.
최대한 자세하게 제가 작성하고자하는 내용을 기술하였습니다.
보시고 답변주시면 정말 감사하겠습니다...
input : shortP(5), longP(60);
var : 단기이평(0), 장기이평(0);
단기이평 = ma(c, shortP);
장기이평 = ma(c, longP);
# 매수 진입
조건1) 현재 포지션 없거나 매수포지션 1계약 보유중. (매도 진입이 없는 상황에만 진입)
조건2) 장기이평 > 장기이평[1]
조건3) 음봉[1] < 단기이평[1] and 현재 양봉 < 단기이평
* 1봉전 음봉이고, 다음 봉에서 0.01포인트 상승한 가격에 시장가 매수진입이 목적입니다.
* 조건1,2,3 모두 만족시에만 매수진입.
* 포지션 없을시 2계약으로 진입, 매수 1계약 보유시 1계약으로 추가 진입.
# 매수 본절
조건1) 현재 매수 포지션만 있음.
조건2) 진입가격에서 +0.12포인트 수익 상황에서 진입가격으로 다시 하락.
* 조건1,2 모두 만족시에 해당가격에 터치한 봉에 진입가격으로 매수청산.
# 매수 손절
조건1) 진입가격에서 -0.15포인트 하락.
* 조건1 만족시 해당가격에 터치한 봉에 진입가-0.15 가격으로 매수청산.
# 매수 익절
조건1) 진입가격에서 +0.25포인트 상승.
* 조건1 만족한 봉에 진입가+0.25 가격으로 1계약 매수청산.
조건2) 진입가격+0.50포인트 봉 이후에 장기이평 < 장기이평[1]
* 조건2 만족시 2계약 진입했던 봉의 1계약 매수청산.
# 매도 진입
조건1) 현재 포지션 없거나 매도포지션 1계약 보유중. (매수 진입이 없는 상황에만 진입)
조건2) 장기이평 < 장기이평[1]
조건3) 양봉[1] > 단기이평[1] and 현재 음봉 > 단기이평
* 1봉전 양봉이고, 다음 봉에서 0.01포인트 하락한 가격에 시장가 매도진입이 목적입니다.
* 조건1,2,3 모두 만족시에만 매도진입.
* 포지션 없을시 2계약으로 진입, 매도 1계약 보유시 1계약으로 추가 진입.
# 매도 본절
조건1) 현재 매도 포지션만 있음.
조건2) 진입가격에서 -0.12포인트 수익 상황에서 진입가격으로 다시 상승.
* 조건1,2 모두 만족시에 해당가격에 터치한 봉에 진입가격으로 매도청산.
# 매도 손절
조건1) 진입가격에서 +0.15포인트 상승.
* 조건1 만족시 해당가격에 터치한 봉에 진입가+0.15 가격으로 매도청산.
# 매도 익절
조건1) 현재 진입가격에서 -0.25포인트 하락.
* 조건1 만족한 봉에 진입가-0.25 가격으로 1계약 매수청산.
조건2) 진입가격-0.50포인트 봉 이후에 장기이평 > 장기이평[1]
* 조건2 만족시 2계약 진입했던 봉의 1계약 매도청산.
2017-02-26
124
글번호 107249
답변완료
문의 드립니다
전일 저가 고가를 표시 할려고 합니다.
전일 저가-청색(블루)-약간두껍운선
전일 고가-적색(레드)_약간두껍운선
당일 시가-하늘색또는옥색_약간두꺼운선
또한 3개의 선에서 알람을 만들수 있으면 같이 부탁 합니다.
감사합니다...^^
2017-02-26
126
글번호 107248
청심 님에 의해서 삭제되었습니다.
2017-02-26
2
글번호 107247
답변완료
진입가격에 대비 청산및 손절명령
매수가격에비해서 진입시점의 value17만큼 상승하면 1차청산 하락하면 전량손절
매도가격에 비해서 진입시점의 value18만큼 하락하면 1차청산 상승하면 전량손절을 하려합니다.
수식구현능력이 부족해서 도움을 요청합니다.
항상감사합니다.
2017-02-26
140
글번호 107246
답변완료
단순한 질문입니다
사용자함수를 질문하는건 아니구요
도움말 공부하다가 이건 좀 막혀서요
할당 하면서 var1 나오는데
할당 = 저장?
제가 궁금한것은 예로 표현하면서까지 수식을 쓰는것은 의미가 크다는것일텐데
" 금일시가가 전일종가보다 크면 매수하고 고가를 저장
금일시가가 전일종가보다 크지 않으면 매도하고 저가를 저장"
이게 무슨 의미인지를 모르겠습니다.
저장을 왜 하는건가요??
어느경우에 사용되는건가요??
2017-02-26
137
글번호 107245
카카 님에 의해서 삭제되었습니다.
2017-02-25
24
글번호 107244