커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1697
글번호 230811
답변완료
수식 문의
안녕하세요, 항상 친절한 답변감사드립니다.
차트에 뿌려서 상태를 확인하려는 간단한 로직입니다만,
수식에 대한 이해가 없다 보니 전혀 감이 안 잡히네요.
부탁 좀 드리겠습니다.
############### 매도 조건 1 ################
1. 타주기 장기스토 %D가 x1값 위에서
2. 타주기 단기스토%K 가 장기스토 %D 를 크로스다운한 다음,
(동시에가 아니라 위의 조건을 만족한 상태라면 언제라도)
3. 장기스토 %D > x2값 위에서
4. 단기스토%K 가 장기스토 %D 를 크로스다운한 다음,
5. 장기스토는 여전히 x3값 위에 있고
6. 단기스토는 여전히 장기스토 아래 있고
7. 현재가가 볼린저밴드 상단선 보다 위에 있는 '상태'
(동시에가 아니라 위의 조건을 만족한 상태라면 언제라도)
그런 다음,
→ CCI가 100을 크로스업 하면 알람소리를 냄
→ CCI가 x4값을 크로스다운 하면 매도 또는
CCI가 x5값 위에 있고, 8개봉 이상 상승하다가 아래로 꺽이면 매도
############### 매수 조건 1 ################
1. 타주기 장기스토 %D가 n1값 아래에서
2. 타주기 단기스토%K 가 장기스토 %D 를 크로스업한 다음,
(동시에가 아니라 위의 조건을 만족한 상태라면 언제라도)
3. 장기스토 %D > n2값 아래에서
4. 단기스토 %K 가 장기스토를 크로스업한 다음,
5. 장기스토는 여전히 n3값 아래에 있고
6. 단기스토는 여전히 장기스토 위에 있고
7. 현재가가 볼린저밴드 하단선 보다 아래에 있는 '상태'
(동시에가 아니라 위의 조건을 만족한 상태라면 언제라도)
그런 다음,
→ CCI가 -100을 크로스다운 하면 알람소리를 냄
→ CCI가 n4값을 크로스업 하면 매수 또는
CCI가 n5값 밑에 있고, 8개봉 이상 하락하다가 위로 꺽이면 매도
############### 매도 조건 2 ################
1. 현재가격이 볼린저 밴드 하단선 아래 있고
그런 다음,
→ CCI가 100을 크로스업 하면 알람소리를 냄
→ CCI가 x4값을 크로스다운 하면 매도 또는
CCI가 x5값 위에 있고, 8개봉 이상 상승하다가 아래로 꺽이면 매도
############### 매수 조건 2 ################
1. 현재가격이 볼린저 밴드 상단선 위에 있고
→ CCI가 -100을 크로스다운 하면 알람소리를 냄
→ CCI가 n4값을 크로스업 하면 매수 또는
CCI가 n5값 밑에 있고, 8개봉 이상 하락하다가 위로 꺽이면 매도
2021-11-15
883
글번호 153587
시고르시고르 님에 의해서 삭제되었습니다.
2021-11-13
3
글번호 153586
시고르시고르 님에 의해서 삭제되었습니다.
2021-11-13
2
글번호 153585
답변완료
문의 드립니다.
비슷한거 추가 문의 드립니다.
이전캔들 N(5)개 봉 최고가 최저가 돌파시 매수 매도 진입하는 수식입니다.
조건 되면 즉시 매수 매도인데요.
양봉이더라도 즉시 매수이니 이전 음봉캔들이 최저가이니 그 저가를 깨는 즉시 매도 들어가는 맞는데 진입이 없었습니다.
2번 부분도 진입이 되어야 하는데 안되었구요.
아래 수식이 맞는 지도 확인 및 수정 부탁드립니다.
수식과 이미지 남겨드립니다.
감사합니다.
input : n1(5);
input : StartTime(233000),EndTime(013000);
input : 익절틱수(80),손절틱수(0);
var : Tcond(false), T(0);
Array : H1[50](0),L1[50](0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
{
T = 0;
Tcond = true;
}
if Tcond == true Then
{
if NextBarOpen <= Highest(H,n1)[1] Then
Buy("b1",AtStop,Highest(H,n1)[1]+PriceScale*1);
if NextBarOpen >= Lowest(L,N1)[1] Then
Sell("s1",AtStop,Lowest(L,N1)[1]-PriceScale*1);
if MarketPosition == 1 Then
ExitLong("bx",AtStop,L[BarsSinceEntry]-PriceScale*1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,H[BarsSinceEntry]+PriceScale*1);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-11-12
581
글번호 153584
답변완료
문의 드립니다.
다시 문의드립니다.
수정해주신 수식을 데모해봤는데요.
이전캔들 5개의 최고 최저가에 대한 진입이 틀립니다.
표시된 도치 양봉이 N개 최저가를 돌파한 캔들이지만 양봉이니 진입하지 않지만
다음 음봉캔들도 N개 최저가를 돌파했으니 그 캔들 종가에 매도가 들어가야 맞지 않나요.
그리고 손절이든 익절이든 N회 거래만 진행하고 거래 종료하는 부분 추가해주십시요.
이미지 사진과 주신 수식 남겨 드립니다.
감사합니다.
input : n1(5);
input : StartTime(233000),EndTime(013000);
input : 익절틱수(80),손절틱수(0);
var : Tcond(false), T(0);
Array : H1[50](0),L1[50](0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
T = 0;
Tcond = true;
}
if Tcond == true Then
{
if C > Highest(H,n1)[1] and C > O Then
Buy("b");
if C < Lowest(L,N1)[1] and C < O Then
Sell("s");
if MarketPosition == 1 Then
ExitLong("bx",AtStop,L[BarsSinceEntry]-PriceScale*1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,H[BarsSinceEntry]+PriceScale*1);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-11-12
643
글번호 153583
답변완료
문의 드립니다
3202 파워종목검색화면에서 작성한수식으로 종목검색시도하니까요
사용자설정 검색기간 사용하지 않음,, 이라고 뜨면서 검색결과가 안나옵니다
봉갯수는 500 으로 설정하고 (500 이상 안되는건가요?)
기준봉은 어떻게 설정하는지 모르겠네요 (500으로도 설정하고 0으로도 설정해봤음)
제가 사용법을 잘 몰라서.. 그런지
자세히 설명 좀 부탁드립니다
봉갯수는 일봉, 주봉 상관없이 최대 500개 인가요?
2021-11-12
687
글번호 153581
답변완료
수식 문의
친절한 답변 감사드립니다.
수식을 짜시는 입장에서 최대한 써보려고 노력했으나
문과충인지라 한계가 있음을 이해해 주시기 바랍니다.
감사합니다.
-----------------------------
아래의 지표를 기반으로 다음과 같은 수식을 구하는데 도움을 얻고자 합니다.
항상 친절한 답변 미리 감사드립니다.
-------------------------------------------
1번. 각 이평선간의 간격을 구해둡니다.
ㄱ= abs(var1-var2)
ㄴ= abs(var2-var3)
ㄷ= abs(var3-var4)
ㄹ= abs(var4-var5)
.
.
.
끝= abs((varX-1)-varX)
2번. (연달아 놓여진 n개의 ㄱ~끝의 간격의 합)을 구해둡니다.
ex : 20개 이평인 경우 연달아 놓여진 4개의 이평선 간격의 합
a = (ㄱ+ㄴ+ㄷ+ㄹ)
b = (ㄴ+ㄷ+ㄹ+ㅁ)
c = (ㄷ+ㄹ+ㅁ+ㅂ)
.
.
.
.
z
3번. 2번에서 구해진 a~z중 그 값이 가장 작은 놈 3개를 찾습니다.
4번. 3번에서 찾은 세개의 값에 해당하는 이평선을 찾습니다.
ex : a,b,c가 가장 작다고 했을 때
a = var1,2,3,4,5
b = var2,3,4,5,6
c = var3,4,5,6,7
이 찾아 질 것입니다.
5번. 4번에서 찾은 이평선들의 중간값을 찾습니다.
ex :
a = var1,2,3,4,5 중 (가장 큰 값 + 가장 작은 값 / 2)
b =
c =
6번. 5번에서 구해진 3개의 값을 점으로 찍습니다.
7번.그 점이 현재가와 가장 가까이 있으면서
현재가 위에 있으면 rgb(x,x,x)로
아래에 있으면 rgb(y,y,y)로 점을 찍습니다.
그 점이 현재가와 두번째로 가까이 있으면서
현재가 위에 있으면 rgb(x1,x1,x1)로
아래에 있으면 rgb(y1,y1,y1)로 점을 찍습니다.
그 점이 현재가와 가장 멀리 있으면서
현재가 위에 있으면 rgb(x2,x2,x2)로
아래에 있으면 rgb(y2,y2,y2)로 점을 찍습니다.
8번. 각각 세개의 점에 대한 이동평균선을 구합니다.
------------- 아 래 ----------------
input : P(22),n(2);
var1 = ma(C,P);
var2 = ma(C,P+n*1);
var3 = ma(C,P+n*2);
var4 = ma(C,P+n*3);
var5 = ma(C,P+n*4);
var6 = ma(C,P+n*5);
var7 = ma(C,P+n*6);
var8 = ma(C,P+n*7);
var9 = ma(C,P+n*8);
var10 = ma(C,P+n*9);
var11 = ma(C,P+n*10);
var12 = ma(C,P+n*11);
var13 = ma(C,P+n*12);
var14 = ma(C,P+n*13);
var15 = ma(C,P+n*14);
var16 = ma(C,P+n*15);
var17 = ma(C,P+n*16);
var18 = ma(C,P+n*17);
var19 = ma(C,P+n*18);
var20 = ma(C,P+n*19);
Plot1(var1,"이평1",IFf(var1>Var20,RED,BLUE));
Plot2(var2,"이평2",IFf(var2>Var20,RED,BLUE));
Plot3(var3,"이평3",IFf(var3>Var20,RED,BLUE));
Plot4(var4,"이평4",IFf(var4>Var20,RED,BLUE));
Plot5(var5,"이평5",IFf(var5>Var20,RED,BLUE));
Plot6(var6,"이평6",IFf(var6>Var20,RED,BLUE));
Plot7(var7,"이평7",IFf(var7>Var20,RED,BLUE));
Plot8(var8,"이평8",IFf(var8>Var20,RED,BLUE));
Plot9(var9,"이평9",IFf(var9>Var20,RED,BLUE));
Plot10(var10,"이평10",IFf(var10>Var20,RED,BLUE));
Plot11(var11,"이평11",IFf(var11>Var20,RED,BLUE));
Plot12(var12,"이평12",IFf(var12>Var20,RED,BLUE));
Plot13(var13,"이평13",IFf(var13>Var20,RED,BLUE));
Plot14(var14,"이평14",IFf(var14>Var20,RED,BLUE));
Plot15(var15,"이평15",IFf(var15>Var20,RED,BLUE));
Plot16(var16,"이평16",IFf(var16>Var20,RED,BLUE));
Plot17(var17,"이평17",IFf(var17>Var20,RED,BLUE));
Plot18(var18,"이평18",IFf(var18>Var20,RED,BLUE));
Plot19(var19,"이평19",IFf(var19>Var20,RED,BLUE));
Plot20(var20,"이평20");
2021-11-13
660
글번호 153580
답변완료
체결강도 가격으로
var1 = accumn(upvol,dayindex+1);
var2 = accumn(DownVol,dayindex-1);
var3 = var1/var2*100;
plot1(var3);
PlotBaseLine1(100,"체결강도100선");
위 체결강도 수식을 분봉에서 체결강도가 100을 크로스할때 종가를 표시(선)하는 수식 부탁드립니다
2021-11-12
715
글번호 153574
부똘이 님에 의해서 삭제되었습니다.
2021-11-12
11
글번호 153571