커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4453
글번호 230811
답변완료
60034와 관련입니다
수고 많으십니다
60034의 질문에 대한 답변이 의도하는 바와 다른 답변이라
다시 부탁드립니다
1. 주시가(Weekopen함수)는 월요일 시가로 1주간 변하지 않고 직선으로 표시됩니다.
그런데 주종가(Weekclose함수)는 날마다 변하는 가격에 따라 표시됩니다.
제가 의도하는 것은 그 중에서 마지막 봉의 종가가 직선으로 표시되게 하는 것입니다.
만약 수요일에 차트를 볼 때 그 날의 종가로 월요일부터 직선으로 표시되는 것입니다.
1. 월시가(Monthopen함수)는 월첫거래일 시가로 1달간 변하지 않고 직선으로 표시됩니다.
그런데 월종가(monthclose함수)는 날마다 변하는 가격에 따라 표시됩니다.
제가 의도하는 것은 1달간 마지막 일봉의 종가가 직선으로 표시되게 하는 것입니다.
만약 15일에 차트를 볼 때 그 날의 종가로 월첫거래일부터 직선으로 표시되는 것입니다.
2018-11-13
173
글번호 123608
답변완료
행복; 지표식 작성 바랍니다
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
지표식 관련입니다
<조건>
- 주기; 1분봉
- 종목; 엠씨넥스(097520)
- 20일 이평선의 지표식을 << 아래 >>와 같이 작성을 하였습니다
=======<< 아래 >>============================
Var : 선_20이평(0), 기준일(0);
선_20이평 = (DayClose+DayClose(1)+DayClose(2)+DayClose(3)+DayClose(4)
+DayClose(5)+DayClose(6)+DayClose(7)+DayClose(8)+DayClose(9)
+DayClose(10)+DayClose(11)+DayClose(12)+DayClose(13)+DayClose(14)
+DayClose(15)+DayClose(16)+DayClose(17)+DayClose(18)+DayClose(19)) / 20;
// 20일 이평선;
기준일 = JulianToDate( DateToJulian( CurrentDate[0] ) - 5 );
If sDate >= 기준일 Then
Plot1(선_20이평,"선_20이평",RED);
=======================================================================
지표식을 작성하여 1분봉 차트에 띄운 후에 봉 개수를 4천 개로 할 때와 6천 개로 할 때 20일 이평선의 값이 달라집니다
< 질문 >
1. 무엇 때문인가요?
2. 어떻게 해야 하는지요?
수고하십시요^^
2018-11-13
198
글번호 123606
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
현 시스템 포지션의 당일 수익이 몇틱인지 지표로 나타낼 수 있나요?
2018-11-13
163
글번호 123602
답변완료
수식부탁드립니다~
분봉데이타 기준으로 차트1에 있는 가격데이타와(시고저종) 차트2에 있는 데이타에서
Start(시간)의 가격대비 현재봉을 비교한 가격의 변화율을 구하고
그 변화율의 차이를 구한게 아래 수식입니다.
여기서 변형하고 싶은게
차트1의 가격을 해당봉 종가가 아니라 매수1호가 가격
차트2의 가격을 해당봉 종가가 아니라 매도1호가 가격
으로 바꾸고 싶은데 어떻게 해야할까요?
var : O1(0,data1),Tcond1(false,data1),R1(0,data1);
var : O2(0,data2),Tcond2(false,data2),R2(0,data2);
input : start(090000),finish(153000);
if data1((sdate != sdate[1] and stime >= start) or
(sdate == sdate[1] and stime >= start and stime[1] < start)) Then{
O1 = data1(O);
Tcond1 = true;
}
if data1((sdate != sdate[1] and stime >= finish) or
(sdate == sdate[1] and stime >= finish and stime[1] < finish)) Then{
Tcond1 = false;
}
if data2((sdate != sdate[1] and stime >= start) or
(sdate == sdate[1] and stime >= start and stime[1] < start)) Then{
O2 = data2(O);
Tcond2 = true;
}
if data2((sdate != sdate[1] and stime >= finish) or
(sdate == sdate[1] and stime >= finish and stime[1] < finish)) Then{
Tcond2 = false;
}
if Tcond1 == true Then
R1 = data1(C/O1-1);
else
R1 = 0;
if Tcond2 == true Then
R2 = data2(C/O2-1);
else
R2 = 0;
plot1((R1-R2)*100);
plotbaseline1(0.2);
plotbaseline2(-0.2);
plotbaseline3(0.5);
plotbaseline4(-0.5);
plotbaseline5(0);
2018-11-12
183
글번호 123601
요타 님에 의해서 삭제되었습니다.
2018-11-12
1
글번호 123600
답변완료
수식점검부탁입니다
#,60054 답변수식에서
1번 당월수식은 정상적용됩니다,그런데 2번 전월수식은 점검이 필요합니다
확인 부탁드립니다.
$,미리감사드립니다.
2018-11-12
186
글번호 123599
답변완료
수식 수정 검토 부탁드립니다.
<시스템식 의도>
-이용차트:
. 기본적으로 당일 진입, 당일 청산하려고 하여
. 갭보정 차트 분봉 이용을 해서 (전략실행 차트에서 갭보정설정및 당일청산설정 예정)
. 피봇분봉 기본선과 갭보정한 선을 2종류를 모두 설정한 후,
-진입 :
. 피봇 1차,2차 지지선 (피봇기본 지지선과 갭보정분의 지지선 모두)을 찍고 양봉으로 상향 돌파하고 이 봉을 기준봉으로 하여,
이 기준봉의 고점을 2번째 돌파 시 매수진입함.
-청산 :
. 볼린저밴드(20,2)의 상단 터치시 청산
(단 터치시 청산 표현이 불가능하면 볼벤 상단 근접=전봉 상단터치하면 청산)
. 기준봉의 저가를 하향하면 즉시 손절 청산.
. 당일 청산
하는 식을 만들고자 아래 작성을 해 봤습니다만,
잘 안되서 수정 검토 부탁드립니다.
항상 감사 드립니다.
< 작성분 >
input: period(20),nsd(2),
vars: maV(0), bandup(0), banddn(0);
Var :PP(0), R3(0),R2(0), R1(0), S1(0), S2(0), S3(0); // 기본피봇
Var : PivotD(0),R1D(0),R2D(0),S1D(0),S2D(0),R3D(0), S3D(0); // 보정피봇
PP = ( DayHigh(1) + DayClose(1) + DayLow(1) )/3; //피봇선-기본
R3 = DayHigh(1) + 2*(PP - DayLow(1)); //3차저항-기본
R2 = PP+DayHigh(1)-DayLow(1); //2차저항-기본
R1 = 2 * PP - DayLow(1); //1차저항-기본
S1 = 2 * PP - DayHigh(1); //1차지지-기본
S2 = PP-DayHigh(1)+DayLow(1); //2차지지-기본
S3 = DayLow(1) - 2*(DayHigh(1) - PP); //3차지지-기본
PivotD = (highD(1)+LowD(1)+CloseD(1))/3; // 보정
R1D = 2*PivotD-LowD(1);
R2D = PivotD+highD(1)-LowD(1);
R3D = highD(1) + 2*(pivotD - LowD(1)) ;
S1D = 2*PivotD-highD(1);
S2D = PivotD-highD(1)+LowD(1);
S3D = LowD(1) - 2*(highD(1) - pivotD);
maV = ma(close,period);
bandup = BollBandUp(period,nsd);
banddn = BollBandDown(period,nsd);
if crossup (c,S1) or crossup (c,S2) or crossup (c,S3)
or crossup (c,S1D) or crossup (c,S2D) or crossup (c,S3D) and o < c Then
Buy("b", AtStop,h);
if MarketPosition >0
and c < L[barssinceentry+1] Then
ExitLong();
if MarketPosition > 0 and Crossdown(close , bandup) Then
ExitLong();
2018-11-13
170
글번호 123598
답변완료
60038 참고하여 재질문드립니다.
바로 전에 올린 지그재그 지표는 저역시 실력이 일천하여 변환하기가 쉽지않습니다. 조금 더 비슷하지만, 로직을 확 다이어트한 개념인데요.
수식지왕님께서 제공해주셨습니다.
함수는 따로 셋팅하지않아도되네요..
#==========================================#
# 지 표 명 : 고저라인 지그재그 파동선
# 버 전 : 1.2
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
# 업데이트 : 2017-03-10
#==========================================#
Input:length(10),종가사용여부(1),파동선두께(2),수치표시(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,RED);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLUE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
////////////////////////////////
일단 저도 개발은 해보는데 영 쉽지는 않네요. 가능하시다면 위 로직으로 부탁드리겠습니다. 감사합니다.
추세선은 지워주셔도 무방하며, 위 수식만 응용해보려고하네요.
2018-11-12
223
글번호 123587
답변완료
다시 문의드립니다
골드나 데드일때말구요
저 크로스다운을쓰면 딱 그 상황에서만 저 수식이 나오잖아요
그거말고 하방일때 언제든지 다시 가까워지면
들어가는 신호로 부탁드립니다
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 봉이 이평선 근접시 신호
> 안녕하세요
예스스탁입니다.
현재봉이 이평골드에서 데드로, 골드에서 데드로 변경되는 봉일수 있으므로
한봉전이 Bcond가 true였고 현재봉에서 이평+10%를 하향이탈하면 매수
한봉전이 Scond가 true였고 현재봉에서 이평-90%를 상향돌파하면 매도하게 작성하시면 됩니다.
mav = ma(C,20);
Bcond = C > mav and value1 > Value2;
Scond = C < mav and value1 < Value2;
if Bcond[1] == true and CrossDown(C,mav*1.10) Then
buy();
if Scond[1] == true and CrossUp(C,mav*0.90) Then
sell();
즐거운 하루되세요
> 쩜상쩜하 님이 쓴 글입니다.
> 제목 : 봉이 이평선 근접시 신호
> 해선에서 봉이 60선 근접시 매수매도
봉이 이평을 상방으로 뚫은 상태에서 멀어졌다가 다시 한 10%가격 이내로왔을때 매수
하방으로 뚫은상태에서 봉과 이평이 멀어졌다가 다시 10%정도 이격이 됐을때 매도 하는 수식 부탁드립니다
그리고 닿았을시에도요
Bcond = C > mav and value1 > Value2;
Scond = C < mav and value1 < Value2;
if Bcond == true and Bcond[1] == false Then
buy("매수진입");
저번에 이런 수식을 만들어주셨는데
저기다가 추가해서 할 수 있는 수식부탁드립니다
그 상황에서만 돌파수식이 아니라
이것이 유지되는 상태에서 저것이왓을때 적용되는 수식으로요
2018-11-12
166
글번호 123584