커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6133
글번호 230811
답변완료
지그재그 수식부탁드립니다
아래 지그재그수식을 첨부파일처럼 고저점과 현지수와 연결되어 나타나도록 수식 수정이 가능다면 부탁드리겠습니다
(사진설명: 저점 발생후 원표시처럼 현지수와 고점이 계속적으로 연결되어 나타나다가 지수하락시 고점형성 후 저점과 지수연결되는 모양)
아니면 아래수식과 관계없는 별도의 수식이 있다면 또한 부탁드립니다
Input : length(2),종가사용여부(0),파동선두께(1),수치표시수(1),수치표시세모(1);
Variables: j(0),jj(0),HH(0),LL(0)
,최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),TL1(0),Text1(0),Text2(0),tl2(0),T(0),var1(0),var2(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
{
T = 1;
최종고가 = 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],"고점");
Text_SetStyle(Text1, 0, 2);
Text_SetColor(Text1,RED);
Text_SetSize(Text1, 12);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
If 수치표시수 == 1 Then
{
Text2 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text2, 0, 1);
Text_SetColor(Text2,BLUE);
Text_SetSize(Text2, 12);
}
}
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]);
TL_SetEnd(TL2,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시수 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,"고점");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text2,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = 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
{
Text2 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text2, 0, 0);
Text_SetColor(Text2,BLACK);
Text_SetSize(Text2, 12);
}
If 수치표시수 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],"저점");
Text_SetStyle(Text1, 0, 2);
Text_SetColor(Text1,BLUE);
Text_SetSize(Text1, 12);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,BLACK);
}
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]);
TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]);
If 수치표시수 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,"저점");
}
If 수치표시수 == 1 Then
{
Text_SetLocation(Text2,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text2,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2022-01-28
1137
글번호 155891
답변완료
부탁 드립니다~~
highest(C(1), 봉수) < C
지표변수>
봉수 645
종목을 찾고 싶습니다
2022-01-28
949
글번호 155890
회원 님에 의해서 삭제되었습니다.
2022-01-28
93
글번호 155889
답변완료
현재봉 기준 7개 이전 봉의 날자에서(x축에 접해)위로 화면 크기의 1/4정도로 막대 그래
현재봉 기준 7개 이전 봉의 날자에서(x축에 접해)위로 화면 크기의 1/4정도로 막대 그래프
그렸으면 합니다
예스스탁 강조에서 봉에 표시 해도 되겠군요
input : Short(5),Mid(20),Long(60),VeryLong(120);
if c[60] or c[120] Then
begin
PlotPaintBar( High, Low, "정배열");
end
else
NoPlot(1);
이러니 안 그려 지네요
input : Short(5),Mid(20),Long(60),VeryLong(120);
if BarIndex == 60 or BarIndex == 120 Then
begin
PlotPaintBar( High, Low, "120이전봉");
end
else
NoPlot(1);
이도 안되네요
2022-01-28
1138
글번호 155885
답변완료
문의드립니다
수정합니다
스스로 해결 노력중..
감사합니다
2022-01-28
1242
글번호 155884
답변완료
전역 변수 같은게 있을까요??
매 봉마다 새로 리셋되는 로컬 변수말고
한번의 시뮬 전체에서 모든 봉이 공유해서 접근할 수 있고
다음 봉이 이전봉이 저장해놓은 광역변수에 접근해서 데이터를 가져다 쓸수있는
전역변수같은게 있을까요?
2022-01-28
1276
글번호 155882
답변완료
수식문의드립니다
1. 변수 초기치 설정
돌파가격 HB, LB의 초기치를 지정가로 정해놓고
지정가 돌파시 매수,
청산시 진입 이후 고가로 HB, LB 업데이트해
업데이트된 가격으로 다시 조건이 되면 재진입
이렇게 구현하고 싶은데
아래와 같이 만들면 초기치가 설정이 안됩니다
var : HB(13990), LB(13985), e60(0);
e60 = Ema(C,5);
if CrossUp(C, HB) Then Buy() ;
if CrossDown(C, LB) Then Sell() ;
if CrossDown(HB, e60) Then Begin
ExitLong();
HB = Highest(H, BarsSinceEntry) ;
End;
if CrossUp(LB, e60) Then Begin
ExitShort();
LB = Lowest(L, BarsSinceEntry);
End;
messagelog로 확인해보면 HB, LB 값이 안뜨고 1.#QNAN00000 이런게 뜨네요
어떤 부분이 잘못된건지 확인 부탁드립니다
2. marketposition initial value
시스템을 실행하면 실행 이전에 차트상의 조건 때문인지 marketposition이 처음엔 -1, 1로 잡혀있고
한번 체결되고 나면 그때부터 제대로 잡히는데
실제 진입 이전의 marketposition 초기치를 0으로 만들고, 이후 업데이트 하도록 하려면 어떻게 해야할까요?
3. 이전 도와주셨던 식 질문
HB 상향돌파시 매수진입, HB -10이면 손절
LB 하향돌파시 매도진입, LB + 10이면 손절
이 조건에서 청산을 봉 완성 이전 현재가가 손절가에 도달했을 때 바로 청산되도록 만들고 싶다 요청드렸고
아래와 같이 작성해 주셨고, 작성해주신 부분에 대해 질문이 있습니다
input : HB(14230), LB(14220) ;
if MarketPosition <= 0 Then
Buy("b",AtStop,HB);
if MarketPosition >= 0 Then
Sell("s",AtStop,LB);
if MarketPosition == 1 Then ExitLong("bx1",AtStop,HB-10);
if MarketPosition == -1 Then ExitShort("sx1",AtStop,HB+10);
진입시 marketposition이 매수일땐 0이하, 매도일땐 0이상인 이유가 무엇인가요?
그리고 이 조건에선 진입이 정확이 어떻게 되는건가요? HB, LB에 매수매도가 걸려있는건가요?
4. "최근 100봉 ATR(14)의 최대값"을 쓰고 싶은데 어떻게 구할 수 있는지 부탁드립니다
2022-01-28
1295
글번호 155881
답변완료
수식 부탁드립니다.
매수 진입
1. data 1에서
a) MACD >= 0 이고
b) MACD SIGANL >= -15 이고
c) MACD SIGNAL의 기울기가 우상향(+)이고
d) RSI의 값이 45보다 크고
e) C 가 20일선 보다 크며
f) C 의 20일선 기울기가 우상향(+)이고
2. data 2 에서
a) RSI 10일평균의 기울기가 우상향(+)이고
b) RSI 의 기울기가 우상향(+)이고
c) MACD 기울기가 우상향(+)이고
d) MACD SIGNAL의 기울기가 우상향(+)이고
e) MACD > MACD SIGNAL 일 경우 매수 진입
청산 a) 진입후 50틱 수익이면 data 1의 30일선 하향 돌파시 청산
b) 진입후 50틱에 도달하지 못하고 손실이면 -30틱에서 청산
매도 진입과 청산은 반대 입니다.
추가로 2의 배수분 (2분, 4분, 6분...)과 5의 배수분(5분, 10분, 15분....)에서 30초전에
알람을 울리게 해 주세요
항상 수고해주셔서 감사합니다.
2022-01-28
1248
글번호 155880
답변완료
부탁드립니다
수고하십니다
1.주식챠트에서 9시 첫5분봉 고가선,저가선,중심선 과 그대로고,저,중심가선의폭을 상,하로
수식부탁드립니다
2022-01-28
1277
글번호 155879