커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8133
글번호 230811
답변완료
수식 의뢰드립니다!
안녕하세요!
아래 파라볼릭수식의 양전환과 음전환시 종가를 사용하여 바탕색을 넣고 싶습니다!
당일 장이 열리면 전일 장과 파라볼릭이 연결되지 않은 새로운 장으로 바탕색이
나타나도록 부탁드립니다!
항상 감사합니다!
참고 그림 첨부합니다!
Input : AF(0.02), AFMAX(0.2);
Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0),CSarv(0);
if Bdate != Bdate[1] Then
{
Direction = 0;
SAR_Value = Close;
AF_Value = 0.02;
HighValue = High;
LowValue = Low;
EP = 0;
}
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Close < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Close > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
CSarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
CSarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
CSarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
CSarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
Plot1(CSarv,"파라볼릭종가",iff(C>CSarv,RED,BLUE));
----------------------------------------------------------
아래 수식은 당일 고저가 진폭을 나타내는 수식입니다!
지난번처럼 제 임의로 간격이 당일 고가에서 위로, 당일 저가에서 아래로 간격을
조정할 수 있도록 부탁드립니다!
if Bdate != Bdate[1] Then
Condition1 = False;
if Condition1 == False and DayHigh >= daylow+1 then
{
Condition1 = true;
var1 = Text_New(sdate,stime,DayHigh,"당일고가 : "+NumToStr(DayHigh,2)+" 진폭 : "+NumToStr(DayHigh-daylow,2));
var2 = Text_New(sdate,stime,Daylow,"당일저가 : "+NumToStr(Daylow,2)+" 진폭 : "+NumToStr(DayHigh-daylow,2));
}
if Condition1 == true Then
{
Text_SetString(var1,NumToStr(DayHigh,2)+" 진폭 : "+NumToStr(DayHigh-daylow,2));
Text_SetString(var2,NumToStr(Daylow,2)+" 진폭 : "+NumToStr(DayHigh-daylow,2));
Text_SetLocation(var1,sDate,sTime,DayHigh);
Text_SetLocation(var2,sDate,sTime,DayLow);
plot1(DayHigh);
plot2(daylow);
plot3((DayHigh)-0.65);
plot4((daylow)+0.65);
}
Else
{
NoPlot(1);
NoPlot(2);
}
2021-09-08
874
글번호 152069
답변완료
타주기 지표식
일봉의 일목균형표를 60분봉에 표시하는 지표식을 구합니다
추가로 60분봉의 일목균형표를 5분봉에 표시하는 지표식을 구합니다
감사합니다
2021-09-07
969
글번호 152068
답변완료
수식수정요청
안녕하세요
아래의 좌 우 수식에서 4개의 선을 다섯개의 선으로 수정부탁드립니다.
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),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);
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[1])/2,sdate,stime,HH[1]+(HH[1]-LL)/2);
//추세선 오른쪽 연장설정
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtRight(TL5,true);
TL_SetExtRight(TL6,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);
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);
//추세선 오른쪽 연장설정
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtRight(TL5,true);
TL_SetExtRight(TL6,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_SetColor(TL3,연장선색);
TL_SetColor(TL4,연장선색);
TL_SetColor(TL5,연장선색);
TL_SetColor(TL6,연장선색);
2021-09-07
909
글번호 152067
답변완료
최근 55퍼센트 이상 상승한 종목의 눌림목 매매
5일이동평균선 매매
조건1: 10일 이내에 240일 신고가 발생한 종목
조건2: 현재가격이 240일 단순이동평균보다 큰 종목
조건3: 10일 이내에 240일 신고거래량 발생한 종목
조건4: 10일 이내에 최저가 대비 최고가 55% 이상 상승한 종목
조건5: 10일 이내에 시가대비 종가가 20% 이상 상승이 1회 이상인 종목
조건6: 현재기준 10~30일이전에 최저가 대비 최고가가 40%이상 발생한 적이 없음
큰 주가변동이 없다가 최근 10일 동안 급등한종목을 찾고 싶습니다. 10일 전 20일 동안은 큰변동성이 없으면 좋겠습니다. 이 변동성에 대한 값을 input으로 넣게 해주시면 감사하겠습니다. 아무래도 변동성을 알고 싶은거라 수익률 보다는 일일 수익률과 거래량의 표준편차 값으로 하는게 좋을것 같은데 어떻게 해야할지 잘 모르겠네요. 연락 주시면 감사하겠습니다.
조건7: 아래는 키움 5일선의 95%를 지표를 나타내는 수식입니다. 아래수식처럼 5일 종가 이동평균의 95%와 90%의 지표를 작성부탁드리며, 95%의 값 밑으로 내려갔다가 골든크로스하는 5분봉에 강조표시 해주시면 감사하겠습니다.
ma((npredayclose(4)+npredayclose(3)+npredayclose(2)+npredayclose(1)+dayclose())/5*0.95,5)
ma((npredayclose(4)+npredayclose(3)+npredayclose(2)+npredayclose(1)+dayclose())/5*0.90,5)
90%, 95%는 input으로 바꿀 수 있게 부탁드리며 90, 95를 기본값으로 부탁드립니다.
지표:
5분봉완성 기준으로 시스템매매 구축할 예정으로 5분봉 차트에 5일종가기준 이동평균의 95%의 값과 90%의 값이 차트에 나타날 수 있도록 부탁드립니다.
강조:
5분봉 종가가 5일이동평균(종가기준)의 95% 아래로 내려갔다가 다시 골든크로스 하는 종목 강조
첨부파일은 키움영웅문에서 아즈텍WB의 황금선색 선이 5일 종가 이동평균값을 5분봉 차트에 표시한 것입니다. 골든크로스 시점은 7월 29일 오전입니다.
2021-09-06
2114
글번호 152066
답변완료
수식 부탁드립니다
이격도
input : period3(60); #60일 이평선
조건
현재가격 'c'가 60일 이평선 이격도의 값 100보다 크다는 조건식 부탁드립니다
기존 수식에 위조건을 추가하고 싶습니다
2021-09-06
850
글번호 152065
답변완료
후행스팬 표시
안녕하세요 관리자님 우선 감사 드립니다.
제가 아래와 같이 후행스팬 처럼 종가선을 26일 전으로 표시하고 싶은데
26일 이후로 표시가 되서요 확인 부탁 드립니다.
늘 감사 합니다.
Rline = Close;
RRLine = Rline[26];
2021-09-06
826
글번호 152064
답변완료
키움검색식 변경부탁드립니다
안녕하세요
키움조건검색하고 맞지않아서 문의드립니다
첨부한그림의 조건입니다
조건자체가 맞지않는것인지 도저히 구현이 안됩니다
도움주시면 감사드리겠습니다
2021-09-06
942
글번호 152063
답변완료
수식수정좀부탁드립니다
아래지표중 일괄매도 변수조건조정좀할수잇게해주세요 지금진입조건이 엔벨로프20-3하단진입이고 일괄매도가20-3중앙선돌파시일괄매도로되잇잔아요 이일괄매도조건을예를들어 30-5상향선상향돌파시 일괄매도 이런식으로 조건수정좀하게해주세요
Input : Period(20), Percent(3);
input : M1(10000),M2(10000),M3(20000),M4(40000),M5(80000),M6(160000),M7(320000),M8(640000),M9(1280000),M10(2560000);
var : center(0),UPline(0),DNline(0);
center = ma(C, Period);
UPline = EnvelopeUp(Period, Percent);
Dnline = EnvelopeDown(Period, Percent);
if MarketPosition == 0 and CrossDown(C,DnLine) Then
Buy("b1",OnClose,DEF,M1/C);
if MarketPosition == 1 Then
{
if CurrentEntries == 1 Then
Buy("b2",AtLimit,AvgEntryPrice*0.98,M2/min(nextbaropen,AvgEntryPrice*0.98));
if CurrentEntries == 2 Then
Buy("b3",AtLimit,AvgEntryPrice*0.95,M3/min(nextbaropen,AvgEntryPrice*0.95));
if CurrentEntries == 3 Then
Buy("b4",AtLimit,AvgEntryPrice*0.90,M4/min(nextbaropen,AvgEntryPrice*0.90));
if CurrentEntries == 4 Then
Buy("b5",AtLimit,AvgEntryPrice*0.85,M5/min(nextbaropen,AvgEntryPrice*0.85));
if CurrentEntries == 5 Then
Buy("b6",AtLimit,AvgEntryPrice*0.80,M6/min(nextbaropen,AvgEntryPrice*0.80));
if CurrentEntries == 6 Then
Buy("b7",AtLimit,AvgEntryPrice*0.75,M7/min(nextbaropen,AvgEntryPrice*0.75));
if CurrentEntries == 7 Then
Buy("b8",AtLimit,AvgEntryPrice*0.70,M8/min(nextbaropen,AvgEntryPrice*0.70));
if CurrentEntries == 8 Then
Buy("b9",AtLimit,AvgEntryPrice*0.65,M9/min(nextbaropen,AvgEntryPrice*0.65));
if CurrentEntries == 9 Then
Buy("b10",AtLimit,AvgEntryPrice*0.60,M10/min(nextbaropen,AvgEntryPrice*0.60));
if CrossUp(c,center) Then <<<<<<<요기이매도조건변수기간수정좀하게해주세요
ExitLong();
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "b4" Then
Var4 = LatestEntryPrice(0);
if LatestEntryName(0) == "b5" Then
Var5 = LatestEntryPrice(0);
if LatestEntryName(0) == "b6" Then
Var6 = LatestEntryPrice(0);
if LatestEntryName(0) == "b7" Then
Var7 = LatestEntryPrice(0);
if LatestEntryName(0) == "b8" Then
Var8 = LatestEntryPrice(0);
if LatestEntryName(0) == "b9" Then
Var9 = LatestEntryPrice(0);
if LatestEntryName(0) == "b10" Then
Var10 = LatestEntryPrice(0);
}
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "bx4" Then
Var4 = 0;
if LatestExitName(0) == "bx5" Then
Var5 = 0;
if LatestExitName(0) == "bx6" Then
Var6 = 0;
if LatestExitName(0) == "bx7" Then
Var7 = 0;
if LatestExitName(0) == "bx8" Then
Var8 = 0;
if LatestExitName(0) == "bx9" Then
Var9 = 0;
if LatestExitName(0) == "bx10" Then
Var10 = 0;
}
if var4 > 0 Then
ExitLong("bx4",AtLimit,Var4*1.05,"b4");
if var5 > 0 Then
ExitLong("bx5",AtLimit,Var5*1.05,"b5");
if var6 > 0 Then
ExitLong("bx6",AtLimit,Var6*1.05,"b6");
if var7 > 0 Then
ExitLong("bx7",AtLimit,Var7*1.05,"b7");
if var8 > 0 Then
ExitLong("bx8",AtLimit,Var8*1.05,"b8");
if var9 > 0 Then
ExitLong("bx9",AtLimit,Var9*1.05,"b9");
if var10 > 0 Then
ExitLong("bx10",AtLimit,Var10*1.05,"b10");
}
Else
{
var4 = 0;
var5 = 0;
var6 = 0;
var7 = 0;
var8 = 0;
var9 = 0;
var10 = 0;
}
2021-09-06
926
글번호 152062
답변완료
수식변경
늘 감사합니다.
아래수식을 변경해 주세요
1. data2에 사용할수 있도록 해주세요
2. 해외선물용 입니다
3. 시작시간을 임의로 지정할수 있도록해 주세요
예를들면 093000 처럼 변경 가능하게
감사합니다
input : P1(10),per1(50);
input : P2(20),per2(50);
input : P3(30),per3(50);
input : P4(40),per4(50);
input : P5(50),per5(50);
input : P6(100),per6(50);
var : cnt(0),TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0);
var : H1(0),L1(0),H2(0),L2(0),H3(0),L3(0),H4(0),L4(0),H5(0),L5(0),H6(0),L6(0);
H1 = DayHigh;
H2 = DayHigh;
H3 = DayHigh;
H4 = DayHigh;
H5 = DayHigh;
H6 = DayHigh;
L1 = DayLow;
L2 = DayLow;
L3 = DayLow;
L4 = DayLow;
L5 = DayLow;
L6 = DayLow;
}
for cnt = 0 to max(p1,p2,p3,p4,p5,p6)-1
{
if cnt < P1 and DayHigh(cnt) > H1 Then
H1 = DayHigh(cnt);
if cnt < P1 and DayLow(cnt) < L1 Then
L1 = DayLow(cnt);
if cnt < P2 and DayHigh(cnt) > H2 Then
H2 = DayHigh(cnt);
if cnt < P2 and DayLow(cnt) < L2 Then
L2 = DayLow(cnt);
if cnt < P3 and DayHigh(cnt) > H3 Then
H3 = DayHigh(cnt);
if cnt < P3 and DayLow(cnt) < L3 Then
L3 = DayLow(cnt);
if cnt < P4 and DayHigh(cnt) > H4 Then
H4 = DayHigh(cnt);
if cnt < P4 and DayLow(cnt) < L4 Then
L4 = DayLow(cnt);
if cnt < P5 and DayHigh(cnt) > H5 Then
H5 = DayHigh(cnt);
if cnt < P5 and DayLow(cnt) < L5 Then
L5 = DayLow(cnt);
if cnt < P6 and DayHigh(cnt) > H6 Then
H6 = DayHigh(cnt);
if cnt < P6 and DayLow(cnt) < L6 Then
L6 = DayLow(cnt);
}
var1 = H1-(H1-L1)*(per1/100);
var2 = H2-(H2-L2)*(per2/100);
var3 = H3-(H3-L3)*(per3/100);
var4 = H4-(H4-L4)*(per4/100);
var5 = H5-(H5-L5)*(per5/100);
var6 = H6-(H6-L6)*(per6/100);
2021-09-06
973
글번호 152061