커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1793
글번호 230811
답변완료
수식변환의뢰
수식변환의뢰
각 항목별 수식변환 부탁드립니다.
[예] [일]1봉전 2봉중 신저거래량 ==> V(1) < lowest(V(2), 2)
[일]0봉전 CCI(14) 1봉 연속 추세유지 후 상승반전
[일]0봉전 CCI(12,9) Signal선 상향돌파
[일]1봉전기준 3봉이내에서 1봉전 CCI(12) 1봉 연속상승
[일]0봉전 LRL(종가,17)이 17 단순이평선 상향돌파
[일]0봉전 LRL(종가,14), 종가 > LRL
[일]0봉전 MACD(12,26,9) Signal선 이상
[일]0봉전 Bollinger Band(30,2) 종가 Bollinger Band 상한선 1%이내 근접
[일]0봉전 일목균형표(9,26,52) 주가 > 기준선
[일]0봉전 일목균형표(9,26,52) 주가 > 선행스팬 2
[3분]0봉전 Envelope(20,6) 고가가 Envelope 상한선이상
[3분]0봉전 Bollinger Band(20,2) 고가가 상한선이상
2022-06-20
1374
글번호 160014
답변완료
수식변환
각 항목별 수식변환 부탁드립니다.
[예] [일]1봉전 2봉중 신저거래량 ==> V(1) < lowest(V(2), 2)
상장일 250일 이내
신용융자 ABCD군
시가총액:현재가기준 10십억원 이상
순이익률:최근결산 5% 이상
증거금률:증거금 20%
체결강도 100.0%이상 1000.0%이하
매도매수잔량비 100%이하
예상체결가등락률:[일주기]1봉전 종가대비 예상체결가등락률 2%이상
예상체결가 상승률(기준가 대비) 2(%, 원)이상
예상체결금액 5000 천원 ~ 999999999 천원
예상체결량 5000주 ~ 999999999주
거래량 순위 상위 200
거래량비율(n봉):[일]1봉전 거래량 대비 0봉전 거래량 비율 100%이상
거래대금 순위 상위 200
5분간 평균대비 최근1분간 거래대금 3배 이상
[일]거래대금(일:백만, 분:천) 1000이상 999999999이하
5일 평균거래대금(단위:백만) 1000이상 999999999이하 (금일포함)
5일 평균거래대금(단위:백만) 1000이상 999999999이하 (금일제외)
2022-06-20
1518
글번호 160013
답변완료
수식변환의뢰
수식변환의뢰
각 항목별 수식변환 부탁드립니다.
[예] [일]1봉전 2봉중 신저거래량 ==> V(1) < lowest(V(2), 2)
[일]0봉전 <도지(십자)>
[일]1봉전 <도지(십자)>
[일]1봉전 <그레이브스톤 도지(비석형 십자)>
[일]1봉전 <드래곤플라이 도지(잠자리형 십자)>
[일]1봉전 <릭쇼맨 도지>
[일]0봉전 <롱바디(양봉)>
[일]0봉전 <롱바디(음봉)>
[일]0봉전 <화이트 마루보즈(장대양봉)>
[일]0봉전 <클로징 화이트 마루보즈(아랫꼬리 장대양봉)>
[일]0봉전 <롱바디(양봉)>
[일]0봉전 <오프닝 화이트 마루보즈(윗꼬리 장대양봉)>
[일]1봉전 <숏바디(양봉)>
[일]1봉전 <롱바디(양봉)>
[일]0봉전 몸통길이(직전봉 종가,사용안함,사용안함) 윗그림자(50,사용안함) 아래그림자(사용안함,사용안함) 양봉
[일]0봉전 몸통길이(직전봉 종가,사용안함,사용안함) 윗그림자(사용안함,사용안함) 아래그림자(사용안함,50) 음봉
[일]0봉전 몸통길이(직전봉 종가,사용안함,사용안함) 윗그림자(사용안함,사용안함) 아래그림자(0,500) 음봉
[일]0봉전 몸통길이(직전봉 종가,사용안함,사용안함) 윗그림자(0,500) 아래그림자(0,500) 양봉
2022-06-20
1611
글번호 160012
답변완료
수식 문의
시간내서 도움 주시는데
항상 감사드리고 있습니다.
복잡하다고 여겨지는 부분을 빼고
다시 문의 드립니다.
감사합니다..
-----------------------------
아래 수식은 파동선을 긋고 고가와 저가의 값을 표시해 준 수식입니다.
아래 수식을 수정하여,
종가가 하락파동으로 전환된다면,
현재 하락파동의 고가를 기준으로,
(고가) - (직전 하락파동 크기) 를 점으로 찍음
(고가) - (전전 하락파동 크기) 를 점으로 찍음
이렇게 두개의 점을 찍습니다.
종가가 상승파동으로 전환된다면,
현재 하락파동의 저가를 기준으로,
(저가) - (직전 상승파동 크기) 를 점으로 찍음
(저가) - (전전 상승파동 크기) 를 점으로 찍음
이렇게 두개의 점을 찍습니다.
위와 같이 수정하고 싶습니다.
부탁드리겠습니다. 감사합니다.
====== 아 래
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, 0);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then{
TL2 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL3);
TL3 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]);
TL_SetExtRight(TL3,true);
TL_SetSize(TL2,3);
TL_SetColor(TL2,RED);
TL_SetSize(TL3,3);
TL_SetColor(TL3,RED);
TL12 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL12,1);
TL_SetColor(TL12,RED);
TL_SetSize(TL13,1);
TL_SetColor(TL13,RED);
}
if T == 1 and T[1] != 1 Then{
TL4= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL5);
TL5= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL5,true);
TL_SetSize(TL4,3);
TL_SetColor(TL4,blue);
TL_SetSize(TL5,3);
TL_SetColor(TL5,blue);
TL14= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetSize(TL14,1);
TL_SetColor(TL14,blue);
TL_SetSize(TL15,1);
TL_SetColor(TL15,blue);
}
2022-06-20
1304
글번호 160008
답변완료
함수요청
안녕하세요?
국내선물 일중거래를 하고자 합니다.
특정시간마다 매매하되 오버나이트하지 않습니다.
아래의 전략에 대해 가장 유사한 스크립트 작성 부탁드립니다.
9시 1계약 매도
10시 1계약 매도
13시 2계약 매수(매도청산)
14시 1계약 매도
15시 1계약 매도
종가청산(매도청산)
2022-06-20
1277
글번호 160006
답변완료
가로선 출력 도움 부탁드립니다
안녕하세요
아래와 같은 해선용 지표를 만들고 싶은데 도와주실 수 있으실까요? 슈퍼트렌드 지표처럼 선으로 출력되었으면 좋겠습니다.
항상 감사합니다!
1. 날짜 갯수(변수)로부터 지금 해당 봉까지를 참조하여 조건에 부합하면 해당 값을 차트에 가로선(슈퍼트렌드처럼)으로 출력
2. 조건은 이러합니다
- a. 거래 볼륨이 X(변수)를 넘고 b. 양봉 을 만족하는 모든 캔들들의 HL/2의 값의 평균값을 출력
- 예를 들어 위의 조건을 만족하는 봉이 3개라면 해당 봉들의 HL/2의 값들을 모두 더한다음 3으로 나눈 값. 이때, 해당 위의 조건을 만족하는 봉이 1개 더생겨서 토탈 4개라면, 해당 봉들의 HL/2의 값들을 모두 더한다음 4로 나눈 값.
2022-06-20
1178
글번호 160003
답변완료
수식 문의
아래 수식의 그물망 지표를 깔아보면,
종가, 위 or 아래로 50개의 점이 찍힙니다.
이 50개의 점 사이의 간격이 모두 제각각이겠지만,
표준편차 등을 써서 구해 보면,
가장 조밀하게 서로 모여있는 가격구간이 있을 것입니다.
조밀함의 정도는
상위 n순위의 간격까지를 조밀하다고 정의 합니다.
이 구간대에 있는 값들만 모두 plot으로 표현하고 &
이 구간대에 있는 값들의 평균도 구하여 표현하고 싶습니다.
감사합니다.
Input : Period(5);
Plot1(ma(C,Period*1), "이동평균1");
Plot2(ma(C,Period*2), "이동평균2");
Plot3(ma(C,Period*3), "이동평균3");
Plot4(ma(C,Period*4), "이동평균4");
Plot5(ma(C,Period*5), "이동평균5");
Plot6(ma(C,Period*6), "이동평균6");
Plot7(ma(C,Period*7), "이동평균7");
Plot8(ma(C,Period*8), "이동평균8");
Plot9(ma(C,Period*9), "이동평균9");
Plot10(ma(C,Period*10), "이동평균10");
Plot11(ma(C,Period*11), "이동평균11");
Plot12(ma(C,Period*12), "이동평균12");
Plot13(ma(C,Period*13), "이동평균13");
Plot14(ma(C,Period*14), "이동평균14");
Plot15(ma(C,Period*15), "이동평균15");
Plot16(ma(C,Period*16), "이동평균16");
Plot17(ma(C,Period*17), "이동평균17");
Plot18(ma(C,Period*18), "이동평균18");
Plot19(ma(C,Period*19), "이동평균19");
Plot20(ma(C,Period*20), "이동평균20");
Plot21(ma(C,Period*21), "이동평균21");
Plot22(ma(C,Period*22), "이동평균22");
Plot23(ma(C,Period*23), "이동평균23");
Plot24(ma(C,Period*24), "이동평균24");
Plot25(ma(C,Period*25), "이동평균25");
Plot26(ma(C,Period*26), "이동평균26");
Plot27(ma(C,Period*27), "이동평균27");
Plot28(ma(C,Period*28), "이동평균28");
Plot29(ma(C,Period*29), "이동평균29");
Plot30(ma(C,Period*30), "이동평균30");
Plot31(ma(C,Period*31), "이동평균31");
Plot32(ma(C,Period*32), "이동평균32");
Plot33(ma(C,Period*33), "이동평균33");
Plot34(ma(C,Period*34), "이동평균34");
Plot35(ma(C,Period*35), "이동평균35");
Plot36(ma(C,Period*36), "이동평균36");
Plot37(ma(C,Period*37), "이동평균37");
Plot38(ma(C,Period*38), "이동평균38");
Plot39(ma(C,Period*39), "이동평균39");
Plot40(ma(C,Period*40), "이동평균30");
Plot41(ma(C,Period*41), "이동평균41");
Plot42(ma(C,Period*42), "이동평균42");
Plot43(ma(C,Period*43), "이동평균43");
Plot44(ma(C,Period*44), "이동평균44");
Plot45(ma(C,Period*45), "이동평균45");
Plot46(ma(C,Period*46), "이동평균46");
Plot47(ma(C,Period*47), "이동평균47");
Plot48(ma(C,Period*48), "이동평균48");
Plot49(ma(C,Period*49), "이동평균49");
Plot50(ma(C,Period*50), "이동평균50");
2022-06-20
1135
글번호 160000
답변완료
수식 문의
아래의 수식은 각 고점과 저점의 값을 text로 표현해 주는 파동식입니다.
이 TEXT에, 직전값과의 틱수차이도 함께 표현하고,
하단에는, 각 파동이 만들어진 시간 동안의
거래량을 누적하여 막대그래프로 표현하고 싶습니다.
단,
여기에는 문제가 하나 생기는데요,
직전, 고,저점과 비교하는 수식의 특성상
아침 시초가에는 전일의 고,저점과 비교하는
왜곡이 생기게 될 것입니다.
그리하여,
개장후 첫 파동 만큼은,
(당일 고가~첫파동의 저가)or(당일 저가 ~ 첫파동의 고가)
크기를 구해 틱수차이를 표현합니다.
거래량도 마찬가지로
(시가~첫파동의 마감)까지를 누적으로 표현합니다.
부탁드리겠습니다.
감사합니다.
input:length(6),n(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
TL_SetSize(TL1,n);
TL_SetColor(TL1,WHITE);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
TL_SetSize(TL1,n);
TL_SetColor(TL1,WHITE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2022-06-20
1341
글번호 159997
회원 님에 의해서 삭제되었습니다.
2022-06-23
87
글번호 159994