커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4356
글번호 230811
답변완료
수식작성 부탁합니다.
아래 조건 수식 작성좀 부탁합니다.
매수 진입
1차 조건 : 캔들의 종가가 볼밴 하단을 이탈할 것.
한 번 만족한 위 1차 조건은 해제하지 말고 유지하고 있다가 아래 2차 조건을 만족하면 매수 진입한다
2차조건 : 볼밴의 상단이 우상향일 때는 진입하지 말고 수평 또는 우하향일 때만 진입할 것
매도 진입
1차 조건 : 캔들의 종가가 볼밴 상단을 돌파할 것.
한 번 만족한 위 1차 조건은 해제하지 말고 유지하고 있다가 아래 2차 조건을 만족하면 매도 진입한다
2차조건 : 볼밴의 하단이 우하향일 때는 진입하지 말고 수평 또는 우상향일 때만 진입할 것
1차~2차 조건을 동시에 만족하는 경우가 거의 없어 진입 기회가 오지 않아 1차 만족후 보유하고 있는 상태에서 2차 조건을 만족하면 진입해보려고 합니다.
2017-06-30
116
글번호 110888
답변완료
부탁드립니다
input : 시작시간(090000),종료시간(152000);
input : Period15(200),Period16(100),Period17(40),Period18(20),익절틱수(20),손절틱수(15);
Input : Period(500),sigPeriod(150);
input : Period33(100),sigPeriod34(75);
input : Period43(20),sigPeriod44(15);
var : mav15(0),mav16(0),mav17(0),mav18(0),Bxcond(false),Sxcond(false);
var : Tcond(false);
mav15 = ma(c, Period15);
mav16 = ma(c, Period16);
mav17 = ma(c, Period17);
mav18 = ma(c, Period18);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
value3 = TRIX(Period33);
value4 = ema(value3, sigPeriod34);
value5 = TRIX(Period43);
value6 = ema(value5, sigPeriod44);
if Bdate != Bdate[1] then
{
Tcond = True;
BXcond = false;
SXcond = false;
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if TotalTrades > TotalTrades[1] then{
BXcond = false;
SXcond = false;
if (IsExitName("bl",1) == true or IsExitName("bp",1) == true) Then
BXcond = true;
if (IsExitName("sl",1) == true or IsExitName("sp",1) == true) Then
SXcond = true;
}
if Tcond == true then{
if MarketPosition <= 0 and Bxcond == false and
(value1 > value2 and value3 > value4 and
mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and
mav16[1] < mav16 and mav17[1] < mav17 and mav18[3] < mav18[2] and mav18[2] < mav18[1] and mav18[1] < mav18) Then
buy("b1",OnClose,def,1);
if MarketPosition <= 0 and Bxcond == false and
(value1 > value2 and value3 < value4 and value5 > value6 and mav18[3] < mav18[2] and mav18[2] < mav18[1] and mav18[1] < mav18) Then
buy("b2",OnClose,def,1);
if MarketPosition == 1 Then{
if (mav17[1] < mav17 and mav18[1] < mav18 and CurrentContracts < 3) Then
buy("bb1",OnClose,def,1);
if (mav17[1] < mav17 and mav18[3] >= mav18[2] and mav18[2] <= mav18[1] and mav18[1] < mav18 and CurrentContracts < 5) Then
buy("bb2",OnClose,def,1);
if IsEntryName("b1") == true and
(CrossDown(value1, value2)) or (CrossDown(value3, value4)) or
(mav17[3] > mav17[2] and mav17[2] > mav17[1] and mav17[1] > mav17 and
mav18[3] > mav18[2] and mav18[2] > mav18[1] and mav18[1] > mav18) Then
ExitLong("bx1");
if IsEntryName("b2") == true and CrossDown(value5, value6) Then
ExitLong("bx2");
ExitLong("bp",atlimit,AvgEntryPrice+PriceScale*익절틱수);
ExitLong("bl",AtStop,AvgEntryPrice-PriceScale*손절틱수);
}
if MarketPosition >= 0 and Sxcond == false and
(value1 < value2 and value3 < value4 and
mav15[3] > mav15[2] and mav15[2] > mav15[1] and mav15[1] > mav15 and
mav16[1] > mav16 and mav17[1] > mav17 and mav18[3] > mav18[2] and mav18[2] > mav18[1] and mav18[1] > mav18) Then
sell("s1",OnClose,def,1);
if MarketPosition >= 0 and Sxcond == false and
(value1 < value2 and value3 > value4 and value5 < value6 and mav18[3] > mav18[2] and mav18[2] > mav18[1] and mav18[1] > mav18) Then
sell("s2",OnClose,def,1);
if MarketPosition == -1 then{
if mav17[1] > mav17 and mav18[1] > mav18 and CurrentContracts < 3 Then
sell("ss1",OnClose,def,1);
if mav17[1] > mav17 and mav18[3] <= mav18[2] and mav18[2] >= mav18[1] and mav18[1] > mav18 and CurrentContracts < 5 Then
sell("ss2",OnClose,def,1);
if IsExitName("s1") == true and
(crossup(value1, value2)) or (crossup(value3, value4)) or
(mav17[3] < mav17[2] and mav17[2] < mav17[1] and mav17[1] < mav17 and
mav18[3] < mav18[2] and mav18[2] < mav18[1] and mav18[1] < mav18) Then
ExitShort("sx1");
if IsExitName("s2") == true and crossup(value5, value6) Then
ExitShort("sx2");
ExitShort("sp",atlimit,AvgEntryPrice-PriceScale*익절틱수);
ExitShort("sl",AtStop,AvgEntryPrice+PriceScale*손절틱수);
}
}
위 수식에서 한가지 이상한 점이 있어 문의합니다
다른 수식은 정상으로 동작하지만
s2-ss1-ss2 ====== sx2 (모두청산)이 정상적으로 동작하지 않고 있습니다
b1-bb1-bb2 ====== bx1 모두청산정상
b2-bb1-bb2 ====== bx2 모두청산정상
s1-ss1-ss2 ====== sx1 모두청산정상
s2-ss1-ss2 ====== sx2 동작불가 sx1으로 동작
어떤 이유인지 모르겠습니다
계속 수정도 했지만 원인을 모르겠습니다
수정해 주시면 대단히 고맙겠습니다
매번 감사합니다
2017-06-30
112
글번호 110887
답변완료
호가 단위를 리턴하는 함수
주식 거래 시스템작성중입니다
예를 들어 현물에서
1500원 짜리 주식은 호가단위가 5이고
10000원짜리 주식은 호가단위가 50원인데요
이렇듯이
이런 호가단위를 리턴해주는 함수는없나요?
2017-06-30
119
글번호 110883
답변완료
53862에 대한 재 부탁입니다
분봉에서 시가중심으로부터 고가가 저가보다 크다면 고가까지의 4등분선이 시가위 아래에 대칭되서 그려지게 해주실수 있는지요? 다음봉이 고가를 돌파하면 확장된4등분선이 시가위아래그려지게 해주시고 주가가 시가위 가장 윗선과 시가아래 가장 아래선사이에 머물면 사등분선은 평행을 유지하겠고 가장윗선과 아래선을 돌파(이탈)할때만 확장돼서 그려지겠지요
그러니까 장중내내 사등분선은 확장되거나 수평을 유지하거나 이겠고 수렴은 하지 않겠지요
그리고 가장 윗선과 가장 아래선 둘중 하나는 고가선이거나 저가선이겠지요
53862에 대한 수식을 적용하면 고가와 저가 한참 위 아래에 사등분선이 그려져서 다시 부탁드립니다 잘부탁합니다
2017-06-30
143
글번호 110882
답변완료
지표문의
지표를 도출하는 기준이 지수평균과 단순이평에 따라 지표값이 다르게 도출된다는 걸 알았습니다.
예스트레이더에서는 스토캐스틱이 지수평균으로 값을 구한다고 하셨는데,
게시판을 찾아보니 단순평균을 구하는 식이 아래와 같이 나오는데, 이대로 쓰면 될까요?
단순평균방식 스토캐스틱
Input : Period(25), Period1(6),Period2(6);
Var : value1(0), value2(0), value3(0), StoK(0), STOD(0);
value1 = lowest(L,Period);
value2 = highest(H,Period);
value3 = (Close-value1)/(value2-value1)*100;
StoK = ma(value3, Period1);
StoD = ma(StoK, Period2);
Plot1(StoK, "StochasticsK");
Plot2(StoD, "StochasticsD");
PlotBaseLine1(20, "기준선20");
PlotBaseLine2(80, "기준선80");
그리고 Trix의 경우 타사는
eavg(Trix(Period),sigPeriod) 로 시그널 선을 구하는데
예스스탁에서는 ema(Trix(Period),sigPeriod)로 나옵니다.
근데, 예스스탁에서는 eavg 이란 명령어가 없던데 어떻게 해야 같은 값이 나올까요?
역시나 Trix 도 단순이평 기준으로 구하는 수식이 궁금합니다.
MACD 같은방법 즉 단순이평으로 구하는 수식 부탁드립니다.
결국 질문은
스토캐스틱, Trix, MACD 의 단순이평 기준 수식 부탁드립니다.
항상 감사드립니다.
2017-06-30
155
글번호 110881
답변완료
분봉 다운 로듬 문의 드립니다.
과거 분봉을 다운 받으려고 찾다가 아래 함수를 발견했는데요
종목을 여러개 받으려고 했더니 계속 동일 이름으로만 저장이 되는거 같은데
종목코드로 파일 이름이 자동으로 저장되게 할 수는 없을까요???
print("c.csv","%.2f,%.2f,%.2f,%.2f,%.2f",O,H,L,C,V);
2017-06-30
120
글번호 110880
답변완료
부탁 드립니다.
아래와 같이 과거 일시를 지정 하는 유형과 같은,
예를 들어 100봉전에
계산을 시작하는 피보나치 부탁 드릴까 합니다.
도움 주심에 경배로 감사 인사 올립니다.
input:일시(20170629),시작시간(070000);
Var : cond5(false);
var:a5(0),b5(0),k5(0),HH5(0),LL5(0),TX(0),TX1(0);
var99=일시;
var1=시작시간;
if sdate == var99 and (stime == var1 or (stime > var1 and stime[1] < var1)) then{
cond5 = true;
HH5 = H;
LL5 = L;
}
if cond5 == true then{
if H > HH5 Then
HH5 = H;
if L < LL5 Then
LL5 = L;
a5 = HH5;
b5 = LL5;
k5 =a5-b5;
plot41((a5),"H",RED);
plot42((k5*0.882+b5),"882",red);
plot43((k5*0.764+b5),"764",yellow);
plot44((k5*0.618+b5),"618",blue);
plot47((k5*0.5+b5),"50",magenta);
plot48((k5*0.382+b5),"382",green);
plot49((k5*0.236+b5),"236",white);
plot50((k5*0.118+b5),"118",black);
plot55((b5),"L",black);
}
2017-06-30
122
글번호 110876
답변완료
가중평균 문의드립니다
안녕하세요 관리자님!! 성심껏도와주시는데 꾸준한 수익은 아직 어렵네요^^
다름이 아니오라 전일 분봉차트의 고,저,종가의 가중평균값을 기준선으로 하는 이격도를 만들고 싶습니다.
가중평균값이 움직임에 영향을 주는지 확인하고자 합니다
번거로우시더라도 부탁드립니다.
2017-06-30
126
글번호 110875
답변완료
체결강도 이평선 요청
체결 강도 이평선 으로 매매 수식요청 드립니다.
MA (20.60)
수고 하십시요.
좋은 주말 되십시요
2017-06-30
190
글번호 110867