커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3262
글번호 230811
답변완료
[73828]관련 재문의 드립니다.
아래의 수식에 추가해 주시면 감사하겠습니다.
var : PV(0);
var1 = Highest(H,20);
Var2 = Lowest(L,20);
Var3 = Highest(H,240);
var4 = (c-Var2)/(var1-Var2)*100;
if C > O Then
PV = V;
Else
PV = 0;
Condition1 = var1 >= Var2*1.5 and var1 <= Var2*2.0;
#20봉 최고가는 20봉 최저가의 1.5배 이상이고 2.0배 이하이다.
Condition2 = CountIf(C>=C[1]*1.15,20) >= 1;
#20봉 내 전일 종가 대비 종가 15%이상 상승한것이 1회 이상이다.
Condition3 = Var1 == Var3;
#20봉 최고가는 240봉 최고가이다.
Condition4 = CountIf(L<=H*0.90,10) >= 1;
#최근 10봉중에 최고가와 최저가가 -10%이상이 1회 이상이다.
Condition5 = C <= var1*0.85;
#현재가는 20봉 최고가 대비 15% 이상 하락하였다.
Condition6 = CrossDown(Var4,50);
#20일 최고가 초저가 중신선을 데드크로스 한다.
Condition7 = Highest(H,10) == var1;
#10봉 최고가는 20봉 최고가와 같다
Condition8 = H != Highest(H,10);
#현재봉은 10봉최고가가 아님
Condition9 = Highest(PV,20) == Highest(V,20);
#20봉의 양봉의 최고거래량은 20봉의 최고거래량과 같다
if Condition1 and
Condition2 and
Condition3 and
Condition4 and
Condition5 and
Condition6 and
Condition7 and
Condition8 and
Condition9 Then
{
Find(1);
}
Condition6을 삭제하고
아래의 추가조건 부탁드립니다.
1. 최근 20봉 중 발생한 최고거래량은 이전 52봉의 평균 거래량의 10배이상이다.
2. 최고거래량 발생이후 해당 거래량의 10% 이하로 거래량이 발생한 봉이 2개 이상이다.
3. 최근 20봉간 발생한 총 거래금액의 합이 1,000억원 이상이다.
4. 최근 10봉간 종가기준 20봉 중심선의 -10% 이하로 하락한적이 없다.
5. 최근 50봉간 종가가 240일 지수이평선 골든크로스를 1회 이상 한적이 있다. or 종가가 240일 지수이평대비 50% 이하이다.
매수조건을 바꾸려고 합니다.
데드크로스가 아닌 음봉, 음봉, 양봉 순으로 나온경우 다음날 시초가에서 매수하려고 합니다. 마지막 양봉의 종가는 중신선에서 +- 10% 이내 범위이다.
[강조]
최고가와 최저가에 블랙과 그린색, 그리고 매수일에 magenta색으로 강조 부탁드립니다.
2021-09-08
873
글번호 152106
답변완료
검색식 문의 드립니다.
안녕하세요.
일목 후행스팬이 지수51이평과 일목선행1 or 선행2을 돌파하는 검색식 만들려고 하는데요.
후행스팬하고 같은 위치 선행스팬 돌파하는 거 찾으려면
그냥 선행스팬 이라고 해야 하는지 26봉전으로 돌려서 선행스팬[26]이라고 해야 하나요.
즉 위에 게 맞나요? 아래가 맞나요?
검색하니 위치가 정확히 안 맞는 것도 나오고 그래서 헷갈리네요.
정확한 검색시 좀 작성해 주시면 고맙겠습니다.
Input : Period1(51), TurnLen(9), StdLen(26), PrdLen(52);
Variables: 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, TurnLen) + Lowest(Low, TurnLen)) / 2;
기준선 = (Highest(High, StdLen) + Lowest(Low, StdLen)) / 2;
후행스팬 = Close;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, PrdLen) + Lowest(Low, PrdLen)) / 2;
var1 = ema(C,Period1);
if crossup(후행스팬, var1[26])
and
(CrossUp(후행스팬, 선행스팬2) or CrossUp(후행스팬, 선행스팬1))
then Find(1);
/////////////
Input : Period1(51), TurnLen(9), StdLen(26), PrdLen(52);
Variables: 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, TurnLen) + Lowest(Low, TurnLen)) / 2;
기준선 = (Highest(High, StdLen) + Lowest(Low, StdLen)) / 2;
후행스팬 = Close;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, PrdLen) + Lowest(Low, PrdLen)) / 2;
var1 = ema(C,Period1);
if crossup(후행스팬, var1[26])
and
(CrossUp(후행스팬, 선행스팬2[26]) or CrossUp(후행스팬, 선행스팬1[26]))
then Find(1);
2021-09-08
655
글번호 152105
답변완료
문의드립니다!!!
안녕하세요!
1, 아래수식1은 N의 자리에서 세로선과 알람소리가 발생되는데요..
이때 이 N의 조건이 만족시 이 자리와 목표점인 최고저선까지의 사이에 특정색상이 자동으로 칠해지도록 수정이 가능할까요?
가능하다면 이후 목표지점에 도달했을때나 혹은 이조건이 소멸되었을때(즉, 아래 수식에서 N의값이 11틱으로 다시 벌어질때) 이 색상도 다시 소멸될수있으면 좋겠습니다
2, 만약 위의내용이 불가하다면 뭔가 위의내용과 비슷하게 챠트상에 시각적으로 표시할수있는 다른방법이 있다면 도움 부탁드리겠습니다
3, 아래 수식2에서 화면 우하단에 생성되는 알림창은 삭제 부탁드립니다
매번 부탁만 드려서 죄송하고 항상 고마울따름입니다
감사합니다!!!
------------------------------------------------------------------------------
(수식1)
input : N(10),굵기(1);
var : H1(0,data1),L1(0,data1),H2(0,Data1),L2(0,Data1);
var : TL1(0,data1),TL2(0,data1),TL3(0,data1),TL4(0,data1);
H1 = data1(DayHigh(0));
L1 = data1(DayLow(0));
H2 = data4(HighD(0));
L2 = data4(LowD(0));
Plot1(H1,"data1 최고");
Plot2(L1,"data1 최저");
Plot3(H2,"data4 최고");
Plot4(L2,"data4 최저");
#data1가격이 상승해 Data4 최고가-N틱을 만날때
if data1(H) >= H2-PriceScale*N and data1(H[1]) < H2[1]-PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL1 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL1,굵기);
TL_SetColor(TL1,RED);
}
#data1가격이 하락해 Data4 최저가+N틱을 만날때
if data1(L) <= L2+PriceScale*N and data1(L[1]) > L2[1]+PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL2 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL2,굵기);
TL_SetColor(TL2,BLUE);
}
#data4가격이 상승해 Data1 최고가-N틱을 만날때
if data4(H) >= H1-PriceScale*N and data4(H[1]) < H1[1]-PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL3 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL3,굵기);
TL_SetColor(TL3,RED);
}
#data4가격이 하락해 Data1 최저가+N틱을 만날때
if data4(L) <= L1+PriceScale*N and data4(L[1]) > L1[1]+PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL4 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL4,굵기);
TL_SetColor(TL4,blue);
}
(수식 2)
input : P1(5), P2(10), P3(20), P4(60), P5(120);
var1 = ma(C,P1);
Var2 = ma(C,p2);
Var3 = ma(C,p3);
Var4 = ma(C,p4);
var5 = ma(C,p5);
if (h >= var1 and H[1] < var1[1]) or (L <= var1 and L[1] > var1[1]) Then
{
value1 = var1;
Alert("P1이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var2 and H[1] < var2[1]) or (L <= var2 and L[1] > var2[1]) Then
{
value2 = Var2;
Alert("P2이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var3 and H[1] < var3[1]) or (L <= var3 and L[1] > var3[1]) Then
{
value3 = Var3;
Alert("P3이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var4 and H[1] < var4[1]) or (L <= var4 and L[1] > var4[1]) Then
{
value4 = Var4;
Alert("P4이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var5 and H[1] < var5[1]) or (L <= var5 and L[1] > var5[1]) Then
{
value5 = Var5;
Alert("P5이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if value1 > 0 Then
Plot1(value1);
if value2 > 0 Then
Plot2(value2);
if value3 > 0 Then
Plot3(value3);
if value4 > 0 Then
Plot4(value4);
if value5 > 0 Then
Plot5(value5);
2021-09-08
804
글번호 152104
답변완료
수식수정요청
안녕하세요 늘 도움 감사합니다.
아래의 2 가지 수식의 수정 과 도움 부탁드립니다.
첫번째 수식은 다섯개의 선에 텍스트로 숫자가 나오게 수정부탁드립니다.
input : af(0.02), maxAF(0.2),추세선두께(1),추세선색1(YELLOW),추세선색2(CYAN),연장선두께(2),연장선색(gray);
input : 텍스트출력(1);
var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0);
var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0);
var : TL1(0),TL2(0),cnt(0),count(0);
var : TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),tx1(0),tx2(0),tx11(0),tx22(0);
Var : TL11(0),TL22(0);
var1 = CSar(af,maxAF);
if crossup(c,var1) Then
{
T = 1;
HH = H;
HD = sdate;
HT = stime;
HH1 = HH[1];
HD1 = HD[1];
HT1 = HT[1];
if LL > 0 Then
{
#TL1 = TL_new(LD[1],LT[1],LL[1],HD,HT,HH);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL_Delete(TL6);
TL_Delete(TL7);
TL3 = TL_new(HD[1],HT[1],HH[1],sdate,stime,HH[1]);
TL4 = TL_new(HD[1],HT[1],(HH[1]+LL)/2,sdate,stime,(HH[1]+LL)/2);
TL5 = TL_new(HD[1],HT[1],LL,sdate,stime,LL);
TL6 = TL_new(HD[1],HT[1],HH[1]+(HH[1]-LL)/2,sdate,stime,HH[1]+(HH[1]-LL)/2);
TL7 = TL_new(HD[1],HT[1],LL-(HH[1]-LL)/2,sdate,stime,LL-(HH[1]-LL)/2);
//추세선 오른쪽 연장설정
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtRight(TL5,true);
TL_SetExtRight(TL6,true);
TL_SetExtRight(TL7,true);
/* if 텍스트출력 == 1 then
{
Tx11 = Text_New(HD1,HT1,HH1,NumToStr((HH1-LL1)/PriceScale,0)+NewLine+NumToStr(HH1,2));
Text_SetStyle(tx11,2,1);
Text_Delete(tx1);
Tx1 = Text_New(HD,HT,HH,NumToStr((HH-LL[1])/PriceScale,0)+NewLine+NumToStr(HH,2));
Text_SetStyle(tx1,2,1);
}*/
}
#TL11 = TL_New(HD1,HT1,HH1,HD,HT,HH);
}
if CrossDown(c,var1) Then
{
T = -1;
LL = L;
LD = sdate;
LT = stime;
LL1 = LL[1];
LD1 = LD[1];
LT1 = LT[1];
if HH > 0 Then
{
#TL2 = TL_new(HD[1],HT[1],HH[1],LD,LT,LL);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL_Delete(TL6);
TL_Delete(TL7);
TL3 = TL_new(LD[1],LT[1],HH,sdate,stime,HH);
TL4 = TL_new(LD[1],LT[1],(HH+LL[1])/2,sdate,stime,(HH+LL[1])/2);
TL5 = TL_new(LD[1],LT[1],LL[1],sdate,stime,LL[1]);
TL6 = TL_new(LD[1],LT[1],LL[1]-(HH-LL[1])/2,sdate,stime,LL[1]-(HH-LL[1])/2);
TL7 = TL_new(LD[1],LT[1],HH[1]+(HH-LL[1])/2,sdate,stime,HH[1]+(HH-LL[1])/2);
//추세선 오른쪽 연장설정
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtRight(TL5,true);
TL_SetExtRight(TL6,true);
TL_SetExtRight(TL7,true);
/* if 텍스트출력 == 1 then
{
Tx22 = Text_New(LD1,LT1,LL1,NumToStr((HH1-LL1)/PriceScale,0)+NewLine+NumToStr(LL1,2));
Text_SetStyle(tx22,2,0);
Text_Delete(tx2);
Tx2 = Text_New(LD,LT,LL,NumToStr((HH[1]-LL)/PriceScale,0)+NewLine+NumToStr(LL,2));
Text_SetStyle(tx2,2,0);
}*/
}
#TL22 = TL_New(LD1,LT1,LL1,LD,LT,LL);
}
if T == 1 then
{
if H > HH Then
{
HH = H;
HD = sdate;
HT = stime;
TL_SetEnd(TL1,HD,HT,HH);
TL_SetEnd(TL11,HD,HT,HH);
/* if 텍스트출력 == 1 then
{
Text_Delete(tx1);
Tx1 = Text_New(HD,HT,HH,NumToStr((HH-LL[1])/PriceScale,0)+NewLine+NumToStr(HH,2));
Text_SetStyle(tx1,2,1);
}*/
}
}
if T == -1 then
{
if L < LL Then
{
LL = L;
LD = sdate;
LT = stime;
TL_SetEnd(TL2,LD,LT,LL);
TL_SetEnd(TL22,LD,LT,LL);
/* if 텍스트출력 == 1 then
{
Text_Delete(tx2);
Tx2 = Text_New(LD,LT,LL,NumToStr((HH[1]-LL)/PriceScale,0)+NewLine+NumToStr(LL,2));
Text_SetStyle(tx2,2,0);
}*/
}
}
#추세선 두께, 색상
TL_SetSize(TL1,추세선두께);
TL_SetSize(TL11,추세선두께);
TL_SetSize(TL2,추세선두께);
TL_SetSize(TL22,추세선두께);
TL_SetColor(TL1,추세선색1);
TL_SetColor(TL11,추세선색1);
TL_SetColor(TL2,추세선색2);
TL_SetColor(TL22,추세선색2);
#연장선 두께, 색상
TL_SetSize(TL3,연장선두께);
TL_SetSize(TL4,연장선두께);
TL_SetSize(TL5,연장선두께);
TL_SetSize(TL6,연장선두께);
TL_SetSize(TL7,연장선두께);
TL_SetColor(TL3,연장선색);
TL_SetColor(TL4,연장선색);
TL_SetColor(TL5,연장선색);
TL_SetColor(TL6,연장선색);
TL_SetColor(TL7,연장선색);
두번째 수식은 차트에 그림이 나오지가 않는데 어떻게 해야하는것인지요?
고가-저가를 계산한뒤 이것의 5개봉의 평균을 다섯개의 선으로 표시하고 싶은데요
input : P(5);
var1 = H-L;
if dayindex+1 < P Then
var2 = ma(var1,dayindex+1);
Else
var2 = ma(var1,P);
plot1(var2);
Print("고가저가.csv",",%.2f",var1);
2021-09-08
743
글번호 152103
답변완료
문의 드립니다.
안녕하세요..
5일선이 60일 선을 골든크로스하면 매수하고
5일선이 20일선을 데드크로하면 매수청산을 하고
5일선이 60일 선을 데드크로스하면 매도하고
5일선이 20일선을 골든크로하면 매도청산을 하는 시스템식좀 부탁드립니다.
감사합니다.
2021-09-07
702
글번호 152102
답변완료
즉시체결 문의
안녕하세요 완성봉 기준이 아닌 조건 만족 즉시 거래를 하려고 하는데
기존 문의 글에서 보니까 조건에 따라 설정이 조금씩 달라진다고 해서 문의 드립니다.
//롱 진입
If (marketPosition == 0) and (Low < 60선) And (C > 60선) Then Buy("롱");
//롱 청산
If (marketPosition == 1) and (C < 60선-2) Then ExitLong("롱청산");
//숏 진입
If (marketPosition == 0) And (High > 60선) And (C < 60선) Then Sell("숏");
//숏 청산
If (marketPosition == -1) And ((C > 60선) Or ((AA5 > MM20) And CrossUp(C, MM20))) Then ExitShort("숏청산");
일때 Buy / Exitlong을 사용해서 그런지 완성봉기준으로 진입 청산이 됩니다
중간에 조건이 만족하는 즉시 진입 청산이 가능하려면 어떻게 수정해야 할까요
그리고 atlimit 와 atstop의 차이는 무엇인가요??
그동안 문의 글에서 보니까 두가지가 사용되는거 같은데 어떤 상황에서 두개를 구별해서 사용하는지도 알려주시면 감사하겠습니다
마지막으로, 앞에 진입 조건을 모두 설정하였을경우 ATSTOP,0으로 설정해도 이상없는지요
예를들어,
//롱 진입
If (marketPosition == 0) and (Low < 60선) And (C > 60선) Then Buy("롱",atstop,0,0);
//롱 청산
If (marketPosition == 1) and (C < 60선-2) Then ExitLong("롱청산",atstop,0);
이방법이 아니라면 다른 방법문의 드립니다 ㅠㅠ
2021-09-08
751
글번호 152101
답변완료
Re : Re : 선긋기 부탁드립니다.
저의 요청으로 추세선지표를 작성해주신데 대하여 거듭 감사드립니다.
그런데요..
그림과 같이 지나간 날짜는 전일 14:00에 시작점으로 하여 다음날 1130분에 꼭지점으로 각 라인이 추세가 모아집니다.
오늘 진행형인 각 라인들도 전일 15:45분 종가가 형성되면 다음날 시가가 나오면 11:30분에 꼭지점을 가정하여 추세가 그려지게 할 수 있는지요?
지금은 장시작 이전부터, 시가가 나오는 9:00부터 이미 그 시가라인이 꼭지점이 되어 11:30분까지 늘려가는 형태입니다.
한번더 고민과 수고를 부탁드립니다.
미리 감사드립니다.
===================
input : 표시1(1),R1(255),G1(0),B1(0),굵기1(1);
input : 표시2(1),R2(0),G2(0),B2(255),굵기2(1);
input : 표시3(1),R3(0),G3(216),B3(255),굵기3(5);
input : 표시4(1),R4(102),G4(102),B4(102),굵기4(5);
Input : 표시5(1),r5(29),g5(219),b5(22),굵기5(5);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0);
if Index == 0 or (sTime >= 140000 and sTime[1] < 140000) Then
{
var1 = sDate;
Var2 = stime;
}
if NextBarStime == 154500 Then
{
value1 = DayHigh;
value2 = DayLow;
value3 = (Value1+Value2)/2;
value4 = DayClose;
value5 = DayOpen;
if 표시1 > 0 and value1 > 0 Then
{
TL1 = TL_New(var1,Var2,value1,sDate,sTime,NextBarOpen);
TL_SetColor(TL1,RGB(R1,G1,B1));
TL_SetSize(TL1, 굵기1);
}
if 표시2 > 0 and value2 > 0 Then
{
TL2 = TL_New(var1,Var2,value2,sDate,sTime,NextBarOpen);
TL_SetColor(TL2,RGB(R2,G2,B2));
TL_SetSize(TL2, 굵기2);
}
if 표시3 > 0 and Value3 > 0 Then
{
TL3 = TL_New(var1,Var2,Value3,sDate,sTime,NextBarOpen);
TL_SetColor(TL3,RGB(R3,G3,B3));
TL_SetSize(TL3, 굵기3);
}
if 표시4 > 0 and Value4 > 0 Then
{
TL4 = TL_New(var1,Var2,Value4,sDate,sTime,NextBarOpen);
TL_SetColor(TL4,RGB(R4,G4,B4));
TL_SetSize(TL4, 굵기5);
}
if 표시5 > 0 and Value5 > 0 Then
{
TL5 = TL_New(var1,Var2,Value5,sDate,sTime,NextBarOpen);
TL_SetColor(TL5,RGB(R5,G5,B5));
TL_SetSize(TL5, 굵기5);
}
}
Else
{
if sTime < 113000 Then
{
TL_SetEnd(TL1,sDate,sTime,DayOpen);
TL_SetEnd(TL2,sDate,sTime,DayOpen);
TL_SetEnd(TL3,sDate,sTime,DayOpen);
TL_SetEnd(TL4,sDate,sTime,DayOpen);
TL_SetEnd(TL5,sDate,sTime,DayOpen);
}
}
2021-09-07
1131
글번호 152100
답변완료
.문의드립니다
이평 각도를 알고싶은데 알수있는방법은없나요?
캔들은 항상 똑같이 보고잇습니다 갯수고
2021-09-07
1166
글번호 152099
답변완료
수식 문의 드려요
장 초반 30분 레인지 돌파시 진입 청산 수식을 만들고 싶은데요
2021-09-07
1159
글번호 152098