커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7134
글번호 230811
답변완료
지표 문의 드립니다.
* 좋은 하루 되십시요.
* 아래 수식에서 마이너스가 나오는데 외그렇죠?
제 의도는 5봉 기준으로 현재가격이 몇 퍼센트에 위치 하느냐 를 보고 싶은데 잘 안되네요.
즉 현재가(c[1])가 5봉 최하단이면 0 이고 현재가(c[1])가 최상단이면 100 입니다.
어느부분이 잘못 되었나요?
<아래수식>
var1 = max(c[1],c[2],c[3],c[4],c[5]) ;
var2 = Min(c[1],c[2],c[3],c[4],c[5]) ;
var3 = (var1+var2) / 2 ;
var4 = (C[1]-var3)/var3[1]*100;
Plot1(var4) ;
* 매번 고맙습니다. 수고하십시요.
2020-09-16
809
글번호 142411
답변완료
문의 드립니다
당일중간값을 현재값이 터치했을때 선그래프로 나타나게 할수는 있나요?
수식을 알고 싶습니다
2020-09-16
885
글번호 142410
답변완료
부탁드립니다.
-현재 파라볼릭 최고점과 전 최고점이 아니라 전전 최고점과 현재 시점의 최고점을 서로 연결하는 추세선을 구현해 주세요(바로 앞전 파라볼릭을 하나 건네 뛰는 형식입니다)
- 물론 현재 파라볼릭 최저점과 전 최저점이 아니라 전전 최저점과 현재 시점의 최저점을 서로 연결하는 추세선을 구현해 주세요
2020-09-16
887
글번호 142409
답변완료
문의 드립니다
첨부 사진처럼 매 추세선 전고저점에서 한번씩 진입청산이 되어야하는데 드문드문 가끔 한번씩만 실행이 되고 있어 개선부탁드립니다.
정말 감사합니다.
Input:length(12);
input : 익절틱수(27),손절틱수(25),진입횟수(1);
Var : j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0);
var : 처리구분(""),TL_Val1(0),TL_Val2(0),color(0),T(0);
Array:고점[10,2](0),저점[10,2](0);
var : entry(0);
if Bdate != Bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then
TL_Delete(TL2);
}
if 고점[1,1] > 고점[2,1] or 고점[2,1] == 0 Then{
color = RED;
//buy("b");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T = -1;
lastLoVal = L;
If 저점[1,2] < 고점[1,2] Then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then
TL_Delete(TL3);
}
if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{
color = blue;
//sell("s");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,3);
if T == 1 and CrossUp(C,고점[2,1]) Then
{
if entry < 진입횟수 Then
Buy("b");
Else
ExitShort("sx");
}
if T == -1 and CrossUp(C,저점[2,1]) Then
{
if entry < 진입횟수 Then
Sell("s");
Else
ExitLong("bx");
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2020-09-16
993
글번호 142408
답변완료
문의드립니다
항상 도움을 주셔서 감사합니다
아래의 수식에서 BuySetup = false가 되는조건으로
ADXv가 20이하에서 50캔들이상 머무르면 false가 되는 수식을 부탁드립니다.
input : Period(14);
var : BuySetup1(true),ADXv(0),DP(0),DM(0);
ADXv = ADX(Period);
DP = DiPlus(Period);
DM = DiMinus(Period);
if BuySetup == false and CrossUp(ADXv,30)
Then Buysetup = True;
if ADXv가 20이하에서 50캔들이상 머무르면 Then
BuySetup = false;
2020-09-15
957
글번호 142407
답변완료
문의드립니다!
먼저 항상 수고해주심에 감사말씀 드립니다!
아래수식에서 Plot6(전일고가), Plot11(천정대칭가격), Plot12(바닥대칭가격)만을 대상으로해서...
이 3개의 선이 캔들과 만나기 N틱전에(예 3틱전)
각각 1)세로선과 2)음성신호가 발생토록 수정 부탁드립니다
* 세로선의 두께와 색상은 조정이 가능하도록 부탁드립니다!
감사합니다!!!
--------------------------------------------------------------------------
var : 당일시가(0),전일시가(0),금일종가(0),전일종가(0);
var : 금일고가(0),전일고가(0),금일저가(0),전일저가(0);
var : 금일중간가격(0),전일중간가격(0),천정대칭가격(0),바닥대칭가격(0);
var : Tx1(0),tx2(0),tx3(0),tx4(0),tx5(0),tx6(0);
var : Tx7(0),tx8(0),tx9(0),tx10(0),tx11(0),tx12(0);
당일시가 = dayopen;
전일시가 = dayopen(1);
금일종가 = dayclose;
전일종가 = dayclose(1);
금일고가 = dayhigh;
전일고가 = dayhigh(1);
금일저가 = daylow;
전일저가 = daylow(1);
금일중간가격 = (dayhigh + daylow)/2;
전일중간가격 = (dayhigh(1)+daylow(1))/2;
천정대칭가격 = dayhigh + (dayhigh - dayhigh(1));
바닥대칭가격 = daylow - (daylow-daylow(1));
Plot1(당일시가);
Plot2(전일시가);
Plot3(금일종가);
Plot4(전일종가);
Plot5(금일고가);
Plot6(전일고가);
Plot7(금일저가);
Plot8(전일저가);
Plot9(금일중간가격);
Plot10(전일중간가격);
Plot11(천정대칭가격);
Plot12(바닥대칭가격);
if Index == 1 or Bdate != Bdate[1] Then
{
tx1 = Text_New_Self(sDate,sTime,당일시가,"당일시가 "+NumToStr(당일시가,2));
tx2 = Text_New_Self(sDate,sTime,전일시가,"전일시가 "+NumToStr(전일시가,2));
tx3 = Text_New_Self(sDate,sTime,금일종가,"금일종가 "+NumToStr(금일종가,2));
tx4 = Text_New_Self(sDate,sTime,전일종가,"전일종가 "+NumToStr(전일종가,2));
tx5 = Text_New_Self(sDate,sTime,금일고가,"금일고가 "+NumToStr(금일고가,2));
tx6 = Text_New_Self(sDate,sTime,전일고가,"전일고가 "+NumToStr(전일고가,2));
tx7 = Text_New_Self(sDate,sTime,금일저가,"금일저가 "+NumToStr(금일저가,2));
tx8 = Text_New_Self(sDate,sTime,전일저가,"전일저가 "+NumToStr(전일저가,2));
tx9 = Text_New_Self(sDate,sTime,금일중간가격,"금일중간가격 "+NumToStr(금일중간가격,2));
tx10 = Text_New_Self(sDate,sTime,전일중간가격,"전일중간가격 "+NumToStr(전일중간가격,2));
tx11 = Text_New_Self(sDate,sTime,천정대칭가격,"천정대칭가격 "+NumToStr(천정대칭가격,2));
tx12 = Text_New_Self(sDate,sTime,바닥대칭가격,"바닥대칭가격 "+NumToStr(바닥대칭가격,2));
}
Else
{
Text_SetLocation(tx1,NextBarSdate,NextBarStime,당일시가);
Text_SetLocation(tx2,NextBarSdate,NextBarStime,전일시가);
Text_SetLocation(tx3,NextBarSdate,NextBarStime,금일종가);
Text_SetLocation(tx4,NextBarSdate,NextBarStime,전일종가);
Text_SetLocation(tx5,NextBarSdate,NextBarStime,금일고가);
Text_SetLocation(tx6,NextBarSdate,NextBarStime,전일고가);
Text_SetLocation(tx7,NextBarSdate,NextBarStime,금일저가);
Text_SetLocation(tx8,NextBarSdate,NextBarStime,전일저가);
Text_SetLocation(tx9,NextBarSdate,NextBarStime,금일중간가격);
Text_SetLocation(tx10,NextBarSdate,NextBarStime,전일중간가격);
Text_SetLocation(tx11,NextBarSdate,NextBarStime,천정대칭가격);
Text_SetLocation(tx12,NextBarSdate,NextBarStime,바닥대칭가격);
}
2020-09-15
1089
글번호 142406
답변완료
문의드립니다.
안녕하세요.
1. 100일 간의 최저점 LL 찍고
2. 이후 상승한 최고점 hh가 최저점에서 +30% ~ +100% 사이
3. 최저점일(LL) 이후 현재 (최대 300일) 까지 아래 조건 만족 종목 검색
< 이평선 크로스 >
4. 20일선과 60일선 골드 후 7일 이상 데드가 나지 않아야 골드 인정 – 윕소 방지
5. 위 골드 이후 20일선과 60일선 데드 후 3일 이상 골드가 나지 않아야 데드 인정
6. 위의 방식으로 골드가 한번 더 나오고 데드 발생
( 첫골드 – 첫데드 – 둘째골드 – 둘째데드 )
7. 위 조건 이후
둘째 데드가 발생한 상태에서 (세번째골드는 없는 상태)
최근3일 중 종가가 20일선 돌파한 종목 검색
위 조건을 만족하는 종목검색식 부탁드립니다
2020-09-16
1366
글번호 142405
답변완료
부탁드립니다.
1. 첨부한 엑셀파일 중 업종1 부분의 내용을
차트의 오른쪽 상단에 텍스트로 표기하고 싶습니다.
SK하이닉스, 포스코케미칼, 삼성전자, 삼성SDI 처럼
업종 내용이 여러 건 인 종목의 경우
가능하다면 한 텍스트 창에 모두 표기하면 좋겠고
안되면 첫번째 텍스트 왼쪽에 계속해서 표기해주면 좋겠습니다.
2. 업종2 부분의 내용은
차트의 왼쪽 하단에 텍스트로 표기하고 싶습니다.
삼성전자 처럼 내용이 길어서 한줄에 다 안들어 가는 경우는
위로 줄 바꾸어 내용을 계속해서 표기해주면 좋겠습니다.
2020-09-15
1348
글번호 142404
답변완료
부탁 드립니다.
도움에 감사 드립니다.
타주기 수식 부탁 드립니다.
1)예를 들어 10분차트에서 60분 지표
2)예를 들어 60분봉차트에서 일봉지표
미리 경배로 감사 인사 올립니다.
input:p(100),sig(5);
var1 = Accum(1)%p+1;
Var2 = Accum(c);
if var1 == 1 Then
value1 = Var2[1];
Var3 = Var2 - value1;
var20=Var3/var1;
var55=c-var20;
var56=ma(var55,sig);
참고수식)
input : 타주기분(numeric),P(numeric),sig(numeric);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum(0);
Array : CC[100](0),CMO[100](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = C;
2020-09-15
1151
글번호 142399