커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1748
글번호 230811
답변완료
해선용 양방향 지표 부탁드립니다.
지난번에 20이평위 확정봉발생시 매수 매도를 문의드렸었는데
하나의 이평이 아닌 60이평과 5이평 두이평을 모두위로확정봉 발생시
매수하고 두이평 모두 아래로 확정봉 발생이 매도하는데
단순히 매수 청산이 아닌 스위칭으로 주문이 나갈수 있게 부탁드립니다.
2021-01-26
1238
글번호 145826
답변완료
문의드립니다
안녕하세요 수고하십니다
아래수식은 예전에 만들어 주신 일명 지그재그 지표입니다
수식가공하고십습니다 검색식으로요
예를들기위해서 가 나 다 로 설명하겠습니다
가 첫번재 저점 = 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다
나 = 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다
다 두번재 저점 = 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다
조건입니다 나에 고저 과 다의 저점을 빼기한 값을 가의 저가에 더하기한 값이
기준입니다 기준가에 현재가가 2%근접하면 검색되는식 입니다
미리감사드립니다
Input:barCnt(5);
Var:j(0),turnPntBit(""),TL1(0),TL2(0),TL3(0),T(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]);
if turnPntArr[1][0] == "Hi" Then{//and valArr[1] > valArr[3] Then{
var1 = valArr[2]-abs(valArr[1]-valArr[3]);
var2 = blue;
}
if turnPntArr[1][0] == "Lo" Then{//and valArr[1] < valArr[3] Then{
var1 = valArr[2]+abs(valArr[1]-valArr[3]);//;-PriceScale;
var2 = red;
}
TL2 = TL_New(sDate[barArr[2]],sTime[barArr[2]],var1,sDate[barArr[1]],sTime[barArr[1]],var1);
TL_SetColor(tl2,var2);
}
Else
{
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,GREEN);
2021-01-26
1419
글번호 145825
답변완료
문의 드립니다.
plot1(C-data2(C));
PlotBaseLine1(0);
분봉차트에서 베이시스 지표를 만들어 확인하는데
현물의 경우 동시호가 시간대에는 값이 존재하지 않아
선물가격이 그대로 베이시스에 반영되므로 그림상 왜곡이 심한데
동시호가 구간에서는 베이시스 값이 없는 것으로 나타내주십시오.
2021-01-26
1237
글번호 145824
답변완료
수식 부탁드립니다
수고하십니다
아래와 같이 수식을 작성했는데 신호가 정확이 나오지 않고 10분 ~ 20분 빠르거나 늦거나
아니면 거르는 경우도 있어 잘못 작성 되었는지 확인 좀 부탁 드리겠습니다
항목 6개중 4개가 AND 되면 신호가 나오도록 하는 의도입니다
감사합니다
Input : period(2),p(0);
Input : af11(0.015),AFMAX11(0.2),af21(0.015),AFMAX21(0.2),af31(0.015),AFMAX31(0.2);
Input : af41(0.015),AFMAX41(0.2),af51(0.015),AFMAX51(0.2),af61(0.015),AFMAX61(0.2);
Var :v11(0,data1),v21(0,data1),v31(0,data1),v41(0,data1),v51(0,data1),v61(0,data1);
v21 = data2(csar(af21,AFMAX21));
v31 = data3(csar(af31,AFMAX31));
v41 = Data4(csar(af41,AFMAX41));
v51 = Data5(csar(af51,AFMAX51));
v61 = Data6(csar(af61,AFMAX61));
if ( Data1(C > v11) and Data2(C > v21) and Data3(C > v31) and Data4(C > v41) ) or
( Data1(C > v11) and Data2(C > v21) and Data3(C > v31) and Data5(C > v51) ) or
( Data1(C > v11) and Data2(C > v21) and Data3(C > v31) and Data6(C > v61) ) or
( Data1(C > v11) and Data3(C > v31) and Data4(C > v41) and Data5(C > v51) ) or
( Data1(C > v11) and Data3(C > v31) and Data4(C > v41) and Data6(C > v61) ) or
( Data2(C > v21) and Data3(C > v31) and Data4(C > v41) and Data5(C > v51) ) or
( Data2(C > v21) and Data3(C > v31) and Data4(C > v41) and Data6(C > v61) ) or
( Data2(C > v21) and Data4(C > v41) and Data5(C > v51) and Data6(C > v61) ) or
( Data3(C > v31) and Data4(C > v41) and Data5(C > v51) and Data6(C > v61) ) Then
buy("매수");
if ( Data1(C < v11) and Data2(C < v21) and Data3(C < v31) and Data4(C < v41) ) or
( Data1(C < v11) and Data2(C < v21) and Data3(C < v31) and Data5(C < v51) ) or
( Data1(C < v11) and Data2(C < v21) and Data3(C < v31) and Data6(C < v61) ) or
( Data1(C < v11) and Data3(C < v31) and Data4(C < v41) and Data5(C < v51) ) or
( Data1(C < v11) and Data3(C < v31) and Data4(C < v41) and Data6(C < v61) ) or
( Data2(C < v21) and Data3(C < v31) and Data4(C < v41) and Data5(C < v51) ) or
( Data2(C < v21) and Data3(C < v31) and Data4(C < v41) and Data6(C < v61) ) or
( Data2(C < v21) and Data4(C < v41) and Data5(C < v51) and Data6(C < v61) ) or
( Data3(C < v31) and Data4(C < v41) and Data5(C < v51) and Data6(C < v61) ) Then
SELL("매도");
2021-01-26
997
글번호 145823
답변완료
C 라는 데이터가 헷갈립니다. (종가)
제가 2010년1월1부터 현재까지 종가들을 취합해서
추세선을 그리려고 합니다.
그런데 C[1]이라는 값은 시뮬레이션 차트에 그려진 봉들중에 오른쪽에서 2번째로 있는
봉의 종가값으로 알고있는데요.
그래서 제가 진짜 C[1]의 값이 오른쪽 2번째 종가값이 맞는지 확인을 하려고 코드를 작성했습니다.
var : abc(0),t(""),a(0);
abc = C[1];
t = NumToStr(abc,0);
a = Text_New(20210111,110000,80000, t);
Text_SetSize(a,40);
위 코드에 대해 설명을 드리자면,
2021년 1월 11일 11시 80000원 좌표에 C[1]의 값을 출력하는 코드입니다.
보시다시피 어떤 숫자들이 겹쳐서 출력되는걸 보실 수 있습니다.
그렇다는 것은 C[1]이 앞서 가정했던 오른쪽 2번째 종가값이 아니고 어떤 값들의 집합인 것 같은데요. 이게 제 수준에선 이해가 안되서요. 제가 분명히 지금 어딘가에서부터 이해가 안되고 있는 것 같아요. 도와주시면 감사하겠습니다
2021-01-26
1110
글번호 145813
답변완료
디버깅하면 모든시간에 대해서 변수가 출력되버립니다.
var : a("안녕");
Text_New(20210111,110000,80000,a);
MessageLog("%s",a);
이런 코드가 있는데요. 제가 생각하기에
디버그를 하면 출력값이
안녕 이라고 1개만 나와야할텐데,
300개의 바에 대해서 각 시간마다 안녕이라고 출력되버립니다.
그렇다는 것은
질문: 제가 a라는 변수를 선언했지만 사실상 a는 동일한 값이 300개가 있는 배열으로 정의된건가요? 300개의 공간이 있는 배열인건가요??
2021-01-26
950
글번호 145808
답변완료
파라볼릭 지표함수의 알고리즘
안녕하세요.
현재 예스랭귀지에서 시스템트레이딩을 개발하고 있는중입니다.
파라볼릭의 지표를 약간 수정해서 사용하고 싶은데 예스랭귀지에서는 파라볼릭 지표함수가
Sar(가속도, 가속도최대치) 만 제공되는거 같은데
이 Sar 값 자체를 구하는 알고리즘을 알고싶습니다.
감사합니다.
2021-01-26
1100
글번호 145805
답변완료
문의드립니다
안녕하세요
매수 후
이전 매수 가격보다 5% 하락했을때 매수하는 수식 부탁드립니다
2021-01-26
1195
글번호 145804
답변완료
신호 miss 질문 드립니다.
if data2(crossup(c,0)) then
buy();
​
if data2(crossdown(c,0)) then
sell();
buy 신호 한번 나오고, 이후는 신호들이 나오지 않고 있습니다.
첫번째 사진은 저때 렉이 봉을 총 35000개쯤 불러서 쓰긴해서 렉이 5~10초쯤 있었는데
이게 요인이 될수도 있는지요?
세번째 사진은 재접속해서 봉갯수 최소화해서 돌리는중인데
신호가 두번더 생성되야 하는데 나오지 않고있습니다.
두번째 사진은 모의투자로 접속해서 새로해본건데
buy 에서 sell로 전환해야하는데,
sell 문자가 차트상에 써지다가 그냥 지워지는게 확인되었습니다...
2021-01-26
1163
글번호 145803