커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8158
글번호 230811
답변완료
시작시간 초기화
아래 수식의 시간조절로는 단순히 시작시간만 변경됩니다.
input에서 시간을 입력하면
090000부터 계산은 초기화하고
입력한 시간부터 장시작으로 인식하는 수식으로 변경 바랍니다.
항상 고맙습니다.
************************************
input : b1(9),b2(9),X1(9),X2(9),진입눌림(3),진입돌파(1),청산눌림(3),청산돌파(1),거래횟수(20),시작시간(090000) ;
var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0);
if Bdate != Bdate[1] Then{
T1 = TotalTrades;
E1 = 0;
}
if (Bdate != Bdate[1] and stime >= 시작시간) or (Bdate == Bdate[1] and stime > 시작시간 and stime[1] < 시작시간) Then
LL = L;
if L < LL Then
LL = L;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 and stime >= 시작시간 Then{
if E1 == 0 and C >= LL+PriceScale*B1 and C[1] < LL+PriceScale*B1 Then{
E1 = 1;
H1 = H;
i1 = index;
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
#저가가 시작봉종가보다 클때만 눌림체크
if L >= V1 and L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and L < V1 Then{
E1 = 0;
LL = L;
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then{
E1 = 0;
LL = L;
}
if L < LL Then
LL = L;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{
if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{
E1 = 1;
H1 = H;
i1 = index;
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
#저가가 시작봉종가보다 클때만 눌림체크
if L >= V1 and L <= H1-PriceScale*진입눌림 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and L < V1 Then{
E1 = 0;
LL = L;
}
if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{
buy("b2");
}
}
if MarketPosition == 1 Then{
if entry >= 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EH = H;
E1 = 0;
}
if H > EH Then{
EH = H;
E1 = 0;
}
if E1 == 0 and C <= EH-PriceScale*X1 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then{
if entry >= 1 then{
if CurrentContracts > CurrentContracts[1] Then{
EH = H;
E1 = 0;
}
if H > EH Then{
EH = H;
E1 = 0;
}
if E1 == 0 and C <= EH-PriceScale*X2 Then{
E1 = 1;
L1 = L;
i1 = index;
}
if E1 == 1 and index > i1 Then{
if L < L1 Then
L1 = L;
if H >= L1+PriceScale*청산눌림 Then{
E1 = 2;
I1 = index;
S1 = L1;
}
}
if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{
exitlong("bx2");
E1 = 0;
}
}
}
2017-11-02
228
글번호 113852
답변완료
수식 문의
안녕하세요
하기 수식 구현 부탁드립니다.
ADX 라인이 아래에 위치하고 있으며,
DP/DM 라인이 ADX 위에 있을때 만 적용됩니다.
상기 상태에서 가격이 볼린져 밴드 하단에 닿으면 매수 진입
상기 상태에서 가격이 볼린져 밴드 상단에 닿으면 매도 진입하는 수식 부탁드립니다.
감사합니다
2017-11-02
220
글번호 113846
답변완료
함수문의드립니다
"코스피 프로그램 비차익 순매수금액" 데이터를 불러오고자 합니다
함수명을 알려주시면 고맙겠습니다.
2017-11-02
238
글번호 113845
답변완료
55321 수정사항입니다
도움 감사드립니다. 그런데 텍스트가 챠트중간에 나와서 불편하네요. 우측으로 정렬시키려 이전에 도움받은 내용으로 수정을 해봤는데 잘 안되네요.
도움 부탁드려요.
<< 텍스트를 우측여백에 위치시키기>>
####################
안녕하세요
예스스탁입니다.
1.
var : cnt(0);
Array : TL[301](0),TX[301](0);
if CurrentDate == sdate then{
if sdate != sdate[1] then{
for cnt = 1 to 300{
TL_Delete(TL[cnt]);
TL[cnt] = TL_New(sdate[1],stime[1],DayClose(cnt),sdate,stime,DayClose(cnt));
TL_SetExtRight(TL[cnt],true);
TL_SetExtLeft(TL[cnt],true);
Text_Delete(TX[cnt]);
TX[cnt] = Text_New(sdate,stime,DayClose(cnt),NumToStr(DayClose(cnt),2));
}
}
TL_Delete(TL[0]);
TL[0] = TL_New(sdate[1],stime[1],DayClose(0),sdate,stime,DayClose(0));
TL_SetExtRight(TL[0],true);
TL_SetExtLeft(TL[0],true);
Text_Delete(TX[0]);
TX[0] = Text_New(sdate,stime,DayClose(cnt),NumToStr(DayClose(0),2));
}
2
var : cnt(0,data1),C2(0,data2);
Array : TL[301](0,data1),TX[301](0,data1);
C2 = data2(C);
if CurrentDate == sdate then{
if sdate != sdate[1] then
{
for cnt = 1 to 300
{
TL_Delete(TL[cnt]);
TL[cnt] = TL_New(sdate[1],stime[1],C2[cnt-1],sdate,stime,C2[cnt-1]);
TL_SetExtRight(TL[cnt],true);
TL_SetExtLeft(TL[cnt],true);
Text_Delete(TX[cnt]);
TX[cnt] = Text_New(sdate,stime,C2[cnt-1],NumToStr(C2[cnt-1],2));
}
}
TL_Delete(TL[0]);
TL[0] = TL_New(sdate[1],stime[1],c,sdate,stime,c);
TL_SetExtRight(TL[0],true);
TL_SetExtLeft(TL[0],true);
Text_Delete(TX[0]);
TX[0] = Text_New(sdate,stime,c,NumToStr(c,2));
}
즐거운 하루되세요
> 스로우 님이 쓴 글입니다.
> 제목 : 추세선문의
> <<분봉 챠트>> 에서 아래 요구사항을 구현하고자 합니다. 도움 부탁드려요. ^^
1) 과거 300일간의 일봉의 종가를 모두 선으로 그리고 수치값을 우측여백에 표시합니다.
2) 과거 1000개의 60분봉의 종가를 모두 선으로 그리고 수치값을 우측여백에 표시합니다.
==>
a)참조데이타 이용를 이용하는 방법과
b)함수식으로 구현하는 방법
2가지 다 부탁드립니다. <<감사합니다. ^^>>
2017-11-02
251
글번호 113841
답변완료
질문
좋은 답변 감사드립니다. 아래수식은 추세매매수식인데 이것을 진입후 0.5pt수익이며는 청산하는 수식으로 변형부탁드립니다. 재 진입은 반대포지션진입조건이 뜨며는 진입합니다. 여기서 0.5pt는 변수처리 부탁드립니다.감사합니다.
1.
var : Xcnt(0);
if bdate != bdate[1] Then
Xcnt = 0;
if TotalTrades > TotalTrades[1] and IsExitName("StopLoss",1) == true Then
Xcnt = Xcnt+1;
var1 = (DayHigh+daylow)/2;
if NextBarSdate == sdate and Xcnt < 3 Then
{
if Bdate != Bdate[1] or (Bdate == Bdate[1] and H < var1+PriceScale*1) Then
buy("b",AtStop,var1+PriceScale*1);
}
SetStopLoss(PriceScale*5,PointStop);
2
var : Xcnt(0);
if bdate != bdate[1] Then
Xcnt = 0;
if TotalTrades > TotalTrades[1] and IsExitName("StopLoss",1) == true Then
Xcnt = Xcnt+1;
var1 = (DayHigh+daylow)/2;
if NextBarSdate == sdate and Xcnt < 3 Then
{
if Bdate != Bdate[1] or (Bdate == Bdate[1] and L > var1-PriceScale*1) Then
sell("s",AtStop,var1-PriceScale*1);
}
SetStopLoss(PriceScale*5,PointStop);
2017-11-02
236
글번호 113840
답변완료
문의드립니다.
덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시스템
5분봉기준
지표는 30분
진입
-30분차트에서 40볼린저밴드 중앙선 상향돌파시 매수진입
-40볼린저밴드 상단선 상향돌파시 추가진입
청산
-40볼린저밴드 상단선 하향돌파시 추가진입분 청산
-40이평 하향돌파시 청산
필터
60bandwidth 기울기(변동률,전보다 높으면 1 낮으면 0) 하향시(0일시) 진입하지 않음
2. 시스템
5분봉
지표는 30분
밴드폭이 n이하라면
진입1
볼린저밴드 표준편차 1.8 기준 종가가 하단선을 하향돌파하면 매수진입
청산1
조건 1
표준편차 1.8기준 종가가 상단선을 상향돌파하면 진입 1 청산
조건2
진입1한 상태에서 진입시점 밴드폭보다 밴드폭이 x%늘어나면 조건1 청산하고 매도진입으로 바꿈
청산2
조건2를 통해 매수진입이나 매도진입이 바뀐 상태에서는 청산 조건을 이평선으로 바꿈(매수라면 하향돌파, 매도라면 상향돌파)
진입 2
조건3
밴드폭이 n이하라면 표준편차 1.8기준 종가가 상향돌파하면 매도진입
조건3 상태에서 밴드폭보다 밴드폭이 x%늘어나면 조건3 청산하고 매수진입으로 바꿈.
바뀐 경우 청산기준은 청산2를 따름
3. 시스템
5분봉기준
30분봉지표
5일 이평이 20이평 상향돌파 진입
조건1 전거래가 수익이면 n개봉간 진입금지
조건2 진입은 안했지만 진입가정 손실거래가 3회 생겼으면 포지션 2배
4. 지표
5분봉기준
30분봉 볼린저밴드 밴드폭
5. 시스템
진입
5일 이평이 20이평 돌파 진입
청산
5일 이평이 20이평 하향돌파 청산
-진입 수익률이 n%가 되면 n개봉간 진입금지
-손실거래가 3회가 되면 진입포지션 수량 1.5배진입
2017-11-02
273
글번호 113839
답변완료
다른 분봉 표현을 어떻게 하는지요?
안녕하세요 수고많습니다. 다른분들 질문을 찾다가 못찾아서 질문드립니다.
1. 제가 만들려고 하는 해외선물차트에서 기본은 2분봉에서 이평값과 10분봉에서 이평값, 20분에서 이평값을 참고하려면 어떻게 하면 될까요?
2분봉에서 이평값,
10분봉에서 이평값
20분에서 이평값을 각각 가져올 수 있나요?
2. 1번이 어렵다면
2분봉에서 5개,10개씩 합쳐서 평균값을 변수A = 5개 평균, 변수b=10개평균 이렇게 저장하면
이전값에 대하여 변수A[1],변수A[2].변수A[3]이런 식으로 가능한가요? 변수A에 대한 과거값은 출력해보니 10개 정도 가능한 것 같은데 과거값이 10개정도는 표현이 가능한가요?
2분봉에서 10분봉 추정할 수 있을까요? 단순이동평균이라면
var1 = (c + c[1] + c[2] + c[3] + c[4]) /5
var2 = ma(var1,5);
10분봉과 비슷한 흐름이 나올까요? 상승과 하락추세만 맞으면 될 듯합니다. 정확히 안맞아도 가능하면 됩니다.
### 질문을 올리고 테스트를 해보았는데 결과가 맞는지 헛갈립니다.
2분봉에서 5개씩 합쳐서 평균값을 내었을때 5분봉에 1개와 맞는지 모르겠습니다.
지표로 테스트하였습니다.
Input : Period1(5), Period2(20);
var : Sma1(0),Sma2(0),Ema1(0),Ema2(0),sma3(0),sma4(0),sma5(0),sma6(0);
var : hap5(0), hap10(0);
hap5 = (c+c[1]+c[2]+c[3]+c[4])/5;
hap10 = (c+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9])/10;
Sma1 = ma(C,Period1);
Sma2 = ma(C,Period2);
Ema1 = Ema(C,Period1);
Ema2 = Ema(C,Period2);
sma3 = ma(hap5,Period1);
sma4 = ma(hap5,Period2);
sma5 = ma(hap10,Period1);
sma6 = ma(hap10,Period2);
##sma3 = (sma1+sma1[1]+sma1[2]+sma1[3]+sma1[4])/5;
##sma4 = (sma1+sma1[1]+sma1[2]+sma1[3]+sma1[4]+sma1[5]+sma1[6]+sma1[7]+sma1[8]+sma1[9])/10;
Plot1(Sma1, "이동평균1");
Plot2(Sma2, "이동평균2");
Plot3(Ema1, "지수이동평균1");
Plot4(Ema2, "지수이동평균2");
Plot5(sma3, "5이동평균1");
Plot6(sma4, "5이동평균2");
Plot7(sma5, "10이동평균1");
Plot8(sma6, "10이동평균2");
2017-11-02
268
글번호 113838
답변완료
수식 부탁 드립니다
Var : 전환선(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
Plot1(전환선, "전환선");
위 전환선을 위로 2틱 돌파하면 매수 신호을 아래로 2틱 깨면 매도 신호을 나오게 부탁 드립니다
그리고 국선과 해선 모두 신호 후 수익 5틱단위로 표기 부탁 드립니다
2017-11-02
224
글번호 113837
답변완료
타주기 지표 문의드립니다.
문의드립니다.
타주기로 30분봉과 60틱차트로 놓고 시스템을 작성하려 합니다.
기준점을 이평선 지표로 주려고 하는데요
본래차트에서는 Y축을 가격으로 지정할수가있는데
타주기 차트에서는 Y축에 가격이 안되고 화면, 전체만 지정이 가능하네요
방법이 없는건가요??
봉 갯수가 차이나서 그런걸까요??
답변부탁드려요
2017-11-01
286
글번호 113836