커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3673
글번호 230811
답변완료
2가지 질문드리고 수식 작성 부탁 드리겠습니다
수고하싶니다
아직까지는 시슽템트레이딩 첫발 내디은 완전초보입니다
1.
plot1(Ticks, "체결건수",red);
이런식으로 틱 카운터를 만들었습니다
그런데 차트에 표기되어지는게 왼쪽 하단에 표기되어지는데 이걸
오른쪽 하단에 표기 할려면 어찌 하는지요
그리고 틱 카운터가 틱봉 160 사용중 150 카운터에서 알람 설정 요령도요
2.
틱챠트의 한계로 보조지표 움직임이 리프레쉬 할때마다 지표값이
변할수 있는것은 알고 있습니다
이걸 1분단위던 5분 단위로 틱 차트를 리프레쉬를 자동으로 구현을
부탁 드리겠습니다
2020-08-11
1006
글번호 141409
답변완료
조건부 지정가 주문 시스템식 작성
5분 봉에서 시초가 기준 -2호가, -4호가, -6호가, -8호가에 백만원씩 분할 atlimit 주문 하려고 합니다. 만약에 매수 못 했을 경우 못한 금액만큼 당일 종가에 시장가 주문이 나가게 시스템식 작성이 가능할까요?
2020-08-11
923
글번호 141398
답변완료
한가지만더부탁드립니다..
input : P(20);
if stime >= 90500 and stime < 151500 then
{
if V > highest(V,P)[1] Then
plot1(H+0.15,"검색");
if V < Lowest(V,P)[1] Then
plot2(L-0.15,"검색");
}
해당지표를 5분봉에 적용했을경우 봉의 완성시점에 나타나게 할수는 없는지요 봉의 시작시점부토 지표가 계속 표시되어 조건에 맞으면 계속있고 맞이않아야 없어집니다..부탁드립니다..
2020-08-11
875
글번호 141397
답변완료
스토와 가격이 동시에 상승 또는 하락할때 신호를 잡고 싶습니다.
스토케스틱 변수를
sto402424 으로 설정하고
해당 스토케스틱과 가격(봉차트)가 일치하는 흐름인 상승파 하락파 를 잡고싶습니다.
[정의]
K>D 을 봉우리 라고
K<D 를 골짜기 라고 표현합니다.
(상승신호)
신호시점은 골든크로스일때 상승신호이며
신호시점을 기준으로 거꾸로 앞으로 갈때마다
골짜기1 봉우리1 골짜기2 봉우리2 이 나타난다고 봅니다.
(그러니까 시간순으로 보면, 봉우리2-골짜기2-봉우리1-골짜기1-상승신호)
[조건]
sto40의 골짜기2의 K값 최저점 < 골짜기1의 K값 최저점
이면서(and),
골짜기2에 해당하는 구간의 가격 최저점< 골짜기1에 해당하는 구간의 가격 최저점
and
sto40의 봉우리2의 K값 최고점< 봉우리1의 K값 최고점
이면서(and),
봉우리2에 해당하는 구간의 가격 최고점< 봉우리1에 해당하는 구간의 가격 최고점
을 충족한후 골짜기1이 끝나는 골든크로스 일때 상승신호 입니다.
즉, 스토의 골짜기 최저점이 높아지면서 스토의 봉우리의 최고점도 높아지고
동시에 가격의 골짜기 최저점이 높아지면서 가격의 봉우리의 최고점도 높아질때,
상승신호입니다.
(하락신호)
신호시점은 데트크로스일때 하락신호이며
신호시점을 기준으로 거꾸로 앞으로 갈때마다
봉우리1 골짜기1 봉우리2 골짜기2 이 나타난다고 봅니다.
(그러니까 시간순으로 보면, 골짜기2-봉우리2-골짜기1-봉우리1-하락신호)
[조건]
sto40의 봉우리2의 K값 최고점 > 봉우리1의 K값 최고점
이면서(and),
봉우리2에 해당하는 구간의 가격 최고점> 봉우리1에 해당하는 구간의 가격 최고점
and
sto40의 골짜기2의 K값 최저점> 골짜기1의 K값 최저점
이면서(and),
골짜기2에 해당하는 구간의 가격최저점> 골짜기1에 해당하는 구간의 가격최저점
을 충족한후 봉우리1이 끝나는 데드크로스 일때 하락신호 입니다.
즉, 스토의 봉우리 최고점이 낮아지면서 스토의 골짜기 최저점도 낮아지고
동시에 가격의 봉우리 최고점이 낮아지면서 가격의 골짜기 최저점도 낮아질때,
하락신호입니다.
부탁드리겠습니다
2020-08-11
872
글번호 141396
답변완료
일간볼린져밴드수치를 분차트에 구현되게 부탁드립니다.
n분차트상에서 20개봉의 볼린져밴드수치가 아닌
20일 기준,
즉 일봉기준의 볼린져밴드 상.하단수치를 구현되게 해주세요
감사합니다.
2020-08-11
872
글번호 141395
답변완료
질문드립니다
늘 감사드립니다
1.당일 일봉상 3일 동안 최고거래량 터진 봉의 중심값과 고가 사이에서 시가가 나타났고 거래량 50만 넘을때 잡아주는 검색기
2.당일 일봉상 3일 동안 최고거래량 터진 봉의 중심값 아래에서 시작했으나 봉이 중심값을 위로 뚫고 올라올떄 그리고 그날 토탈 거래량 50만 넘을때 잡아주는 검색
3.당일 일봉상 3일 동안 최고거래량 터진 봉의 고가에서 10퍼센트 이하에서 시가가 형성된 경우 and 토탈 거래량 50만 넘을떄 잡아주는 검색기.
이렇게 3개 부탁드립니다
2020-08-11
904
글번호 141391
답변완료
변동성완화장치(VI) 발동 종목
제목 그대로 변동성 완화 장치 발동 종목 검색식 부탁드립니다.
2020-08-11
902
글번호 141389
답변완료
지표부탁드립니다..
당일 고가와 저가 사이에 피보나치 선을 긋고싶습니다...
input : 날짜변경시간(093000);
var : aa(0),bb(0),kk(0);
if stime >= 날짜변경시간 then {
aa = dayhigh();
bb = iff(daylow()>dayclose(1)*1.03,dayclose(1),daylow());
kk = aa-bb;
var11 = (aa+bb)/2 ;
var1 = kk*0.786+bb;
var2 = kk*0.236+bb;
var4 = kk*0.382+bb;
var5 = kk*0.618+bb;
var6 = kk*1.414+bb;
var3 = kk*1.618+bb;
var7 = bb - (kk*0.414);
var8 = bb - (kk*0.618);
다른분들거를 응용해서 만들어본건데
여기서 전일 종가가 당일저가보다 아래에있다면 당일 저가가 아닌 전일 종가와 당일고가 사이로 선을
그리는 수식으로 바꾸었으면합니다..부탁드립니다.
2020-08-11
858
글번호 141388
답변완료
수식질문드립니다.
수고많으십니다. 아래는 1분봉으로 쓰고있는 전고전저돌파매매수식입니다
A. 그림1을 보시면
매수는 전고점을 돌파후 진입하며, 청산지점을 차액지점(전고-전저)위치에 청산지점으로 잡았습니다. (봉완성후의 진입가는 보다 위의 가격일수있으므로 전고점으로부터의 상승한
차액지점을 청산지점으로 함)
그리고, 그림처럼 다음 전고점이 나오더라도 포지션 진입한 시점과의 상승차액지점을 청산지점으로 잡을수 있도록 부탁드립니다.
매도는 반대입니다. 그리고 전고 전저 꼭지점에 가격표시도 부탁드립니다.
B. 국내선물 개장시간 9:00 이후 발생한 전저와 전고돌파에 한해서 A수식 부탁드립니다.
그러니까 전일 고가(저가)가 아니라 금일 9:00부터 신규 발생한 고가(저가)를 돌파할때 부터 적용되게한다는 얘기지요. 장초반에 전일 전고(전저)점 돌파 진입을 막기 위함입니다.
그림2 참조부탁합니다
=====================================================================================
Input:barCnt(5);
Var:j(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9 {
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다
// 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다
Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt);
Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt);
// 전환점구분 null값으로 초기화;
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점;
// else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환전구분 = 저점;
turnPntBit = "";
If Condition1 and Condition2 Then {
If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 then
// 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다.
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
// if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then
// 배열값들을 이전값으로 Move;
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
// if 전환점구분이 바뀌었거나 또는
// (전환점구분은 안바뀌었는데
// (이전 고점보다 높은 고점이 발생했거나 또는
// 이전 저점보다 낮은 저점이 발생했으면)) then
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or
(turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then {
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 입력변수의 봉개수 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]);
barArr[1] = barCnt;
turnPntArr[1] = turnPntBit;
// if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고;
// else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
var : TL11(0),TL12(0);
if turnPntArr[1][0] == "Hi" Then{
TL_Delete(TL11);
TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL11,true);
TL_SetColor(TL11,YELLOW);
TL_SetSize(TL11,2);
}
if turnPntArr[1][0] == "Lo" Then{
TL_Delete(TL12);
TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetExtRight(TL12,true);
TL_SetColor(TL12,CYAN);
TL_SetSize(TL12,2);
}
if turnPntArr[1] == "Lo" and crossup(C,valArr[2]) and stime >= 090000 and stime < 150000 Then
buy();
if turnPntArr[1] == "Hi" and CrossDown(C,valArr[2]) and stime >= 090000 and stime < 150000 Then
sell();
if stime == 150000 or (stime > 150000 and stime[1] < 150000) Then
{
exitlong();
ExitShort();
}
2020-08-11
1108
글번호 141387