커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4395
글번호 230811
답변완료
중심선지표식2 수정
항상 감사드립니다
아래의 지표식을 전일종가,전일고가,전일저가의 데이타를 일부구간에서 산출하여(5분봉에서 전일종가근처의 데이타) 입력하여 당일치의 지표식만 표현하고자 합니다..
input : 전일고가(100),전일저가(90),전일종가(95);
var : 중심선(0),aa(0),상단선(0),하단선(0);
if bdate != bdate[1] then
{
중심선 = (전일고가+전일저가)/2;
aa = max(abs(전일종가-전일저가),abs(전일고가-전일종가));
상단선 = 중심선+aa;
하단선 = 중심선-aa;
}
Else
{
if H >= 상단선+aa then
{
중심선 = (h+하단선)/2;
aa = max(abs(h-중심선),abs(중심선-하단선));
상단선 = 중심선+aa;
하단선 = 중심선-aa1;
}
if L <= 상단선-aa then
{
중심선 = (상단선+l)/2;
aa = max(abs(상단선-중심선),abs(중심선-l));
상단선 = 중심선+aa;
하단선 = 중심선-aa;
}
}
plot1(중심선);
plot2(상단선);
plot3(하단선);
감사합니다
2018-06-08
209
글번호 119575
비슬짱 님에 의해서 삭제되었습니다.
2018-06-07
4
글번호 119574
답변완료
문위드립니다
양봉종가에 매수신호,,음봉종가에 매도신호 부탁드립니다
2018-06-07
222
글번호 119571
엘라 님에 의해서 삭제되었습니다.
2018-06-07
1
글번호 119570
답변완료
수식수정부탁드립니다.
아래는 이미 답변받은 수식인데 설명이 부족하여 원하는수식의 작성이 안됐습니다.
if dayopen >= value1 and idx <= ndate+5 Then 여기서
아마도 시초가가 value1 이상인 경우에만 동작해서 그런것 같은데
1차매수가 진행된 날에 한해서만 2차매수가 진행되며
1차매수 후 그다음날 시초가가 value1이하이면서 2차매수 가격대가 오면 매수주문이
안됩니다.
설명이 미흡해서 그런것 같습니다. 죄송합니다.
다시 조건을 적어보면...
==================================================================================
5거래일이내에 가장 최근의 전일종가대비 10%이상 상승마감한 캔들에서
전일종가 < 당일저가 인경우 전일종가~당일종가까지 4등분선
전일종가 > 당일저가 인경우 당일저가~당일종가까지 4등분선을 기준으로
시초가가 1번선 이상일경우 2번선에서 매수, 3%수익실현
2번선에서 매수 후 하락시 3번선에서 추가매수, 1.5% 수익실현
(당일에만 추가매수가 아닌 거래일이 지나더라도 5거래일 이내라면 추가매수)
2차매수까지 진행된경우 4번선에서 손절
시초가가 1번선 아래, 2번선 이상인경우는 3번선에서 매수 ,3%수익실현
3번선에서 매수후 하락시 4번선에서 추가매수, 1.5% 수익실현
(당일에만 추가매수가 아닌 거래일이 지나더라도 5거래일 이내라면 추가매수)
2차매수까지 진행된경우 5번선에서 손절
2번선에서 한번이라도 매수진행된 경우 2번선은 재진입 금지
3번선에서 한번이라도 매수진행된 경우 3번선은 재진입 금지
==============================================================================
var : idx(0),ndate(0),maxv(0),minv(0),midv(0);
if bdate != bdate[1] Then{
idx = idx+1;
if DayClose(1) >= DayClose(2)*1.10 Then
{
ndate = idx;
var1 = min(DayLow(1),DayClose(2));
maxv = max(DayClose(1),var1);
minv = min(DayClose(1),var1);
midv = (maxv+minv)/2;
value1 = maxv;
value2 = (maxv+midv)/2;
value3 = midv;
value4 = (midv+minv)/2;
value5 = minv;
}
}
if dayopen >= value1 and idx <= ndate+5 Then
{
if MarketPosition == 0 then
buy("b11",atlimit,value2);
if MarketPosition == 1 and MaxEntries == 1 Then
buy("b12",atlimit,value3);
if MarketPosition == 1 and MaxEntries == 2 Then
ExitLong("bl1",AtStop,value4);
}
if dayopen < value1 and dayopen >= value2 and idx <= ndate+5 Then
{
if MarketPosition == 0 then
buy("b21",atlimit,value3);
if MarketPosition == 1 and MaxEntries == 1 Then
buy("b22",atlimit,value4);
if MarketPosition == 1 and MaxEntries == 2 Then
ExitLong("bl2",AtStop,value5);
}
if MarketPosition == 1 Then
{
if MaxEntries == 1 Then
ExitLong("bp1",atlimit,avgEntryPrice*1.03);
if MaxEntries == 2 Then
ExitLong("bp2",atlimit,avgEntryPrice*1.015);
}
> 5거래일이내에 가장 최근의 전일종가대비 10%이상 상승마감한 캔들에서
전일종가 < 당일저가 인경우 전일종가~당일종가까지 4등분선
전일종가 > 당일저가 인경우 당일저가~당일종가까지 4등분선을 기준으로
시초가가 1번선 이상일경우 2번선에서 매수, 3%수익실현
2번선에서 매수 후 하락시 3번선에서 추가매수, 1.5% 수익실현
2차매수까지 진행된경우 4번선에서 손절
시초가가 1번선 아래, 2번선 이상인경우는 3번선에서 매수 ,3%수익실현
3번선에서 매수후 하락시 4번선에서 추가매수, 1.5% 수익실현
2차매수까진 진행된 경우 5번선에서 손절하는 수식 부탁드립니다.
2018-06-07
269
글번호 119569
답변완료
부탁드립니다.
1. 58116호와 관련하여, 1분챠트에서 종가가 highest(h,20)[5]를 올라서면 바로 매수하지 말고 이를 기준봉 삼아서 그 이후 종가가 기준봉 삼은 봉의 고가를 넘어서면 매수하고, 종가가 lowest(l,20)[5]를 내려서면 바로 매도하지 말고 이를 기준봉 삼아서 그 이후 종가가 기준봉 삼은 봉의 저가를 내려가면 매도하라는 시스템식을 만드는데 있어서, 예를들면 08시02분에 매수신호가가 먼저 나와 진입하였으면 그 이후 08시 59분까지는 설사 매도 신호가 나와도 진입하지 않고, 다음 09시간대 이후로 넘어가 조건 만족할 때 매도신호가 나올 수 있도록 구현해 주세요,
한마디로 매 시간대마다 매수든 매도든 먼저 진입한 신호가 있을 때에는 그 반대 포지션 신호가 나오더라도 똑 같은 시간대만큼은 신호가 나오지 않도록 해 주세요, 감사합니다.
2018-06-07
216
글번호 119568
답변완료
시스템식 여쭤봅니다~
수식 여쭤봅니다.
개별종목 1분봉에 적용할려고 합니다.
금액설정하고 싶습니다.
1차 매수는 전일종가에서 -2% ( 설정금액의 50%)
2차 매수는 전일종가에서 -5% ( 설정금액 나머지 50%)
매수가 된 시간 이후부터 이런패턴으로 매도를 하고 싶습니다
매수가1차든 2차까지든 9시20분 전에 일어나면
매도는 당일 오전 9시20분에 전체물량 20%
당일 오전11시20분에 전체물량 25%
당일 오후14시50분에 전체물량 33%
다음날 오전 9시20분에 전체물량 50%
다음날 오전 11시20분에 남은물량 전부
매수가 1차든 2차까지든 11시20분전에 일어나면
당일 오전11시20분에 전체물량 20%
당일 오후14시50분에 전체물량 25%
다음날 오전 9시20분에 전체물량 33%
다음날 오전 11시20분에 남은물량 50%
다음날 오후 14시40분에 남은물량 전부
매수가 1차든 2차까지든 14시40분전에 일어나면
오후 14시40분에 전체물량 20%
다음날 오전 9시20분에 전체물량 25%
다음날 오전 11시20분에 전체물량 33%
다음날 오후 14시40분에 전체물량 50%
다다음날 오전 9시20분에 남은 물량 전부
매수가 1차든 2차까지든 14시40분 이후에 일어나면
다음날 오전 9시20분 전체물량 20%
다음날 오전 11시20분 전체물량 25%
다음날 오후 14시40분 전체물량 33%
다다음날 오전 9시20분 남은 물량 전부
* 당일 시가 또는 당일 고가가 전일종가보다 10% 이상되었다가 흘러내리는 종목은 제외
* 매수는 주가가 전일종가보다 하락할시 1차 매수 2차매수로 두번정도 분할매수를 하고 싶고
* 1차든 2차든 매수가 일어나서 물량이 있으면 시간에 따라 분할매도가 되어 물량이 전부 매도되는 그때까지 재매수가 없었으면 합니다.( 하루 또는 이틀이 될수도 있죠)
그러니까 1차매수 또는 2차매수까지는 한종목당 한번만 허용.
* 모든 물량이 매도되는 날에는 그당일에는 다시 매수가에 닿아도 매수가 안일어나게 하고 싶습니다.
감사합니다.
2018-06-08
234
글번호 119566
답변완료
안녕하세요?
안녕하세요?
아래수식에서 고점과 저점의 가격은 숫치로 표시가 되는데요
피보나치 가격도 고저점 처럼 표시하고 싶습니다.
피보나치 38.2 , 50 , 61.8%의 가격을 수치로 표시.
고가,저가가 표시되는 그라인으로 표시되면 좋겠습니다.
고가
1200
----------------------------------------------- 61.8%
1000
----------------------------------------------- 50%
800
----------------------------------------------- 38.2%
저가
바쁘시겠지만 부탁드립니다.(지그재그파동은 수식지왕님 홈피에서 참고했습니다.)
항상 수식지원에 감사드립니다.
Input:length(30),줄간격(3),종목자릿수(0);
input :BOT(0),t382(38.2),t500(50),t618(61.8),TOP(100);
var: T(0),TL31(0),TL32(0),TL33(0),TL34(0),TL35(0);
Var:j(0),TL1(0),Text1(0),Text2(0),Text3(0),TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[5,4](0),저[5,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
T = 1;
If TL_NewBit == 1 Then { // 신규
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetColor(TL1,WHITE);
TL_SetSize(TL1,3);
var1 = 고[2,1];
var2 = 저[1,1];
VAR3 = 저[2,1];
var4 = abs(var1-var2);
var5 = abs(var1-var3);
TL11 = TL_New(고[2,3],고[2,4],var1-Var4*(BOT/100),저[1,3],저[1,4],var1-var4*(BOT/100));
TL12 = TL_New(고[2,3],고[2,4],var1-var4*(t382/100),저[1,3],저[1,4],var1-var4*(t382/100));
TL13 = TL_New(고[2,3],고[2,4],var1-var4*(t500/100),저[1,3],저[1,4],var1-var4*(t500/100));
TL14 = TL_New(고[2,3],고[2,4],var1-var4*(t618/100),저[1,3],저[1,4],var1-var4*(t618/100));
TL15 = TL_New(고[2,3],고[2,4],var1-var4*(TOP/100),저[1,3],저[1,4],var1-var4*(TOP/100));
# plot11(var11-var14*(t500/100),"Per1%",RED);
TL_SetColor(TL11,RED);
TL_SetColor(TL12,black);
TL_SetColor(TL13,YELLOW);
TL_SetColor(TL14,red);
TL_SetColor(TL15,yellow);
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr((고[1,1]),종목자릿수));
Text_SetStyle(Text1, 2, 1);
Text2 = Text_New(고[1,3],고[1,4],고[1,1]+줄간격*PriceScale,"+"+NumToStr(abs(고[1,1]-저[1,1])/PriceScale,0));
Text_SetStyle(Text2, 2, 1);
}
If TL_NewBit == 2 Then { // 연장
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetEnd(TL11,저[1,3],저[1,4],var1-var4*(BOT/100));
TL_SetEnd(TL12,저[1,3],저[1,4],var1-var4*(t382/100));
TL_SetEnd(TL13,저[1,3],저[1,4],var1-var4*(t500/100));
TL_SetEnd(TL14,저[1,3],저[1,4],var1-var4*(t618/100));
TL_SetEnd(TL15,저[1,3],저[1,4],var1-var4*(TOP/100));
TL_SetColor(TL11,RED);
TL_SetColor(TL12,white);
TL_SetColor(TL13,YELLOW);
TL_SetColor(TL14,white);
TL_SetColor(TL15,yellow);
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr((고[1,1]),종목자릿수));
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]+줄간격*PriceScale);
Text_SetString(Text2,"+"+NumToStr(abs(고[1,1]-저[1,1])/PriceScale,0));
Text_SetColor(Text2,RED);
}
}
Else If Value1 == -1 Then { // 저점
T = -1;
If TL_NewBit == 1 Then { // 신규
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetColor(TL1,CYAN);
TL_SetSize(TL1,3);
var1 = 고[1,1];
var2 = 저[2,1];
var3 = 고[2,1];
var4 = abs(var1-var2);
var5 = abs(var2-var3);
TL11 = TL_New(저[2,3],저[2,4],var1-Var4*(BOT/100),고[1,3],고[1,4],var1-Var4*(BOT/100));
TL12 = TL_New(저[2,3],저[2,4],var1-var4*(t382/100),고[1,3],고[1,4],var1-var4*(t382/100));
TL13 = TL_New(저[2,3],저[2,4],var1-Var4*(t500/100),고[1,3],고[1,4],var1-Var4*(t500/100));
TL14 = TL_New(저[2,3],저[2,4],var1-var4*(t618/100),고[1,3],고[1,4],var1-var4*(t618/100));
TL15 = TL_New(저[2,3],저[2,4],var1-Var4*(TOP/100),고[1,3],고[1,4],var1-Var4*(TOP/100));
TL_SetColor(TL11,RED);
TL_SetColor(TL12,white);
TL_SetColor(TL13,YELLOW);
TL_SetColor(TL14,white);
TL_SetColor(TL15,blue);
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr((저[1,1]),종목자릿수));
Text_SetStyle(Text1, 2, 0);
Text2 = Text_New(저[1,3],저[1,4],저[1,1]-줄간격*PriceScale,"-"+NumToStr(abs(저[1,1]-고[1,1])/PriceScale,0));
Text_SetStyle(Text2, 2, 0);
Text_SetColor(Text2,BLUE);
}
If TL_NewBit == 2 Then { // 연장
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
TL_SetEnd(TL11,고[1,3],고[1,4],var1-Var4*(BOT/100));
TL_SetEnd(TL12,고[1,3],고[1,4],var1-var4*(t382/100));
TL_SetEnd(TL13,고[1,3],고[1,4],var1-var4*(t500/100));
TL_SetEnd(TL14,고[1,3],고[1,4],var1-var4*(t618/100));
TL_SetEnd(TL15,고[1,3],고[1,4],var1-var4*(TOP/100));
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr((저[1,1]),종목자릿수));
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]-줄간격*PriceScale);
Text_SetString(Text2,"-"+NumToStr(abs(저[1,1]-고[1,1])/PriceScale,0));
Text_SetColor(Text2,BLUE);
}
}
if T == 1 Then{
TL_Delete(TL31);
TL_Delete(TL32);
TL_Delete(TL33);
TL_Delete(TL34);
TL_Delete(TL35);
var11 = 고[1,1];
var12 = 저[1,1];
VAR13 = 고[2,1];
var14 = abs(var11-var12);
var15 = abs(var12-var13);
TL31 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],var11-Var14*(BOT/100),sdate,stime,var11-Var14*(BOT/100));
TL32 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],var11-var14*(t382/100),sdate,stime,var11-var14*(t382/100));
TL33 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],var11-var14*(t500/100),sdate,stime,var11-var14*(t500/100));
TL34 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],var11-var14*(t618/100),sdate,stime,var11-var14*(t618/100));
TL35 = TL_New(sdate[index-고[1,2]],stime[index-고[1,2]],var11-var14*(TOP/100),sdate,stime,var11-var14*(TOP/100));
plot1(var11-var14*(t500/100),"Per1%",RED);
}
TL_SetColor(TL31,RED);
TL_SetColor(TL32,white);
TL_SetColor(TL33,YELLOW);
TL_SetColor(TL34,white);
TL_SetColor(TL35,yellow);
if T == -1 Then{
TL_Delete(TL31);
TL_Delete(TL32);
TL_Delete(TL33);
TL_Delete(TL34);
TL_Delete(TL35);
var11 = 고[1,1];
var12 = 저[1,1];
VAR13 = 저[2,1];
var14 = abs(var11-var12);
var15 = abs(var11-var13);
TL31 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],var11-Var14*(BOT/100),sdate,stime,var11-Var14*(BOT/100));
TL32 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],var11-var14*(t382/100),sdate,stime,var11-var14*(t382/100));
TL33 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],var11-var14*(t500/100),sdate,stime,var11-var14*(t500/100));
TL34 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],var11-var14*(t618/100),sdate,stime,var11-var14*(t618/100));
TL35 = TL_New(sdate[index-저[1,2]],stime[index-저[1,2]],var11-var14*(TOP/100),sdate,stime,var11-var14*(TOP/100));
TL_SetColor(TL31,RED);
TL_SetColor(TL32,white);
TL_SetColor(TL33,YELLOW);
TL_SetColor(TL34,white);
TL_SetColor(TL35,yellow);
}
2018-06-07
279
글번호 119559
답변완료
강제청산
시스템설정창의 최소 가격 변화(강제청산) 수식을 아래에 추가해주십시요.
시뮬레이션을 위해 input에도 반영바랍니다.
input:최소가격변화포인트(0.5), 봉갯수(50)
******************************************
Inputs: Length(10), Consec(2);
If CountIf(Close > Highest(High, Length)[1], Consec) == Consec Then
Buy ("CBO_LE");
If CountIf(Close < Lowest(Low, Length)[1], Consec) == Consec Then
Sell ("CBO_SE");
2018-06-07
220
글번호 119552