커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6703
글번호 230811
다니엘87 님에 의해서 삭제되었습니다.
2014-11-04
0
글번호 80094
답변완료
다음 함수식 설명 좀 부탁드립니다.
사용자 함수 중 swinghigh 함수입니다.
응용을 할 부분이 많을 것 같아 보았으나 이해가 잘 되지 않습니다.
괜찮으시다면 설명 좀 부탁 드려도 될까요?
< SwingHigh > -------------------------------------------------------------
Input : Occur(NumericSimple), Value(NumericSeries), Left(NumericSimple), Right(NumericSimple), Length(NumericSimple);
Var : Result(0), X(0), J(0), Z(0), Ltrue(FALSE), Counter(0), Found(FALSE);
if CurrentBar >= Length - 1 then
{
Result = -1;
Z = 0;
X = Right;
Counter = 0;
Found = FALSE;
while Counter < Length && X + Left < Length && Found == FALSE
Begin
J = X + Left;
Ltrue = TRUE;
while Ltrue && J > X
Begin
if Value[X] < Value[J] then Ltrue = FALSE;
J = J - 1;
End
J = X - 1;
while Ltrue && J >= X - Right
Begin
if Value[X] <= Value[J] then Ltrue = FALSE;
J = J - 1;
End
if LTrue == TRUE then
{
Z = Z + 1;
if Z >= Occur then
{
Result = Value[X];
Found = TRUE;
}
}
X = X + 1;
Counter = Counter + 1;
End
if Z == 0 then
SwingHigh = -1;
else
SwingHigh = Result;
}
2014-11-04
162
글번호 80093
답변완료
부탁드립니다.
A=highest(V,x1)
valuewhen(1,V==A,(H+L+C)/3)
----------------------------------------
x1은변수20
2014-11-04
148
글번호 80092
답변완료
안녕하세요?
시스템식 문의 드립니다.
If Data1(date!=date[1]) Then
cond= False;
If cond==False and C<= HH*0.15 and C>O and CountIF(CrossUp(mav1,mav2),250)==1 Then{
TT = H;
cond=True;
}
If cond==True and CrossUp(C,TT) Then{
Buy("1");
}
위 식에서 매수후 당일이든 다음날이든 청산을 했다고 가정할때
하루가 지나든 이틀이 지나든 위 조건이 만족한 상태가 이어지면서 + 또 다른 조건을 만족할때 다시 매수 하려 합니다.
즉 어떤 조건을 만족해서 이를 TT에 저장한후 저장한 날을 기준으로 며칠이 지나도
추가 조건을 넣어서 매수2,3,4 를 하려 합니다.
현재는 TT라고 저장한 조건은 맞지 않지만 전일에는 만족 했었고 또는 2일전에는 만족 했었고 ... 이런식이 되는겁니다.
설명을 제대로 했는지 모르겠습니다.
부탁드립니다.
2014-11-04
132
글번호 80091
답변완료
문의 드립니다
1. N일이내(N봉이내) 갭상승이발생하고 그 갭상승 캔들의 저가을 오늘(C) 돌파하는 종목검색식
2. N일이내(N봉이내) 갭하락이발생하고 그 갭하락 전캔들의 저가을 오늘(C) 돌파하는 종목검색식
1번 2번 자세히 보시면 수식의 개념의 차이가 있습니다 일봉기준으로 사용할겁니다
미리 감사 인사 드립니다 꾸벅
2014-11-04
180
글번호 80090
답변완료
비율표기 방법 문의 합니다.
var1 = H-L;
var2 = C-L;
var3 = var2/var1*100;
plot1(var3);
var4 = Text_New(sdate,stime,H+PriceScale,NumToStr(var3,2));
Text_SetStyle(var4,2,2);
위의 식이 일봉의 캔들에서 고가와 저가의 폭에서 종가의 위치를 비율로 표시하는 식으로 알고 있는데....
차트에서 마지막봉의 전봉에만 텍스트로 표시하는 식은 어떻게 되는지요...
차트가 너무 혼란스럽게 보여서요
2014-11-04
142
글번호 80089
답변완료
현재가 읽어들이기
var Data = [];
var Current = [];
function Main_OnStart()
{
Main.MessageLog("현재가, 시가총액 데이터 불러오기");
Start = 0;
for(var i=2; i<=152; i++)
{
Data[i] = Excel.GetData(1, "A"+i);
Current[i] = Data[i].current;
}
for(var i=2; i<=152; i++)
{
Excel.SetData(1,"B"+i,Current[i]);
}
Excel.Save();
Main.MessageLog("현재가, 시가총액 데이터 불러오기 완료");
}
엑셀에서 A줄에 있는 종목의 현재가를 스팟으로 읽어와서 B줄에 순서대로 입력시키고 나서
자동 저장 하게 싶은데 방법이 없을까요???
2014-11-04
227
글번호 80088
답변완료
부탁드립니다.
1.당일 1번째, 2번째, 3번째 봉들만의 최고점,최저점을 선으로 표시
2.당일 고점으로 부터 -1.2P를 선으로 표시
당일 저점으로 부터 +1.2P를 선으로 표시
3.전일 시,고,저,종가를 당일에 선으로 표시
2014-11-04
141
글번호 80083
답변완료
한번만 더 부탁드립니다.
정말 많은 도움이 되었습니다. 감사합니다.
만들어 주신 아래 서식을 Data2에 대해서 적용할 수 있도록 한번만 더 (수정) 부탁드립니다.
#==========================================#
# 지표명 : MACD다이버전스 MACD파동선
# 작성자 : 수식지왕
# 블로그 : http://yahoosir.blog.me
#==========================================#
Input:P1(12),P2(26),MACD변동폭(0.02);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),MACD파동선(0),방향(0),MACDV(0),MACD추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
MACD고[20](0),MACD저[20](0),MACD고Bar[20](0),MACD저Bar[20](0);
MACDV = MACD(P1,P2);//MACD(Period);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
MACD고Bar[j] = MACD고Bar[j] + 1;
MACD저Bar[j] = MACD저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If MACD고[0] <= MACDV || MACD고[0] == 0 || IsNaN(MACD고[0]) == True Then
{
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
Else
MACD고Bar[0] = MACD고Bar[0] + 1;
If MACD저[0] >= MACDV || MACD저[0] == 0 || IsNaN(MACD저[0]) == True Then
{
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
Else
MACD저Bar[0] = MACD저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If MACD저[0][1] + MACD변동폭 > MACDV[1] &&
MACD저[0][1] + MACD변동폭 <= MACDV Then 방향 = 상승;
If MACD고[0][1] - MACD변동폭 < MACDV[1] &&
MACD고[0][1] - MACD변동폭 >= MACDV Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
MACD저[j+1] = MACD저[j];
MACD저Bar[j+1] = MACD저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
MACD고[j+1] = MACD고[j];
MACD고Bar[j+1] = MACD고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If MACD고[1] < MACD고[0] &&
MACD고[0][1] - MACD변동폭 <= MACDV[1] &&
MACD고[0][1] - MACD변동폭 > MACDV Then
{
MACD고[1] = MACD고[0];
MACD고Bar[1] = MACD고Bar[0];
MACD파동선 = MACD고[0];
MACD고[0] = MACDV;
MACD고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If MACD저[1] > MACD저[0] &&
MACD저[0][1] + MACD변동폭 >= MACDV[1] &&
MACD저[0][1] + MACD변동폭 < MACDV Then
{
MACD저[1] = MACD저[0];
MACD저Bar[1] = MACD저Bar[0];
MACD파동선 = MACD저[0];
MACD저[0] = MACDV;
MACD저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If MACD파동선[1] != MACD파동선 Then Plot1(MACD파동선,"MACD파동선",GREEN); //적당껏 수평이동
Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,MACD고[0],MACD저[0]),"MACD파동선",GREEN);
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] &&
MACD저[2] < MACD저[1] Then
{
MACD추세선 = (MACD저[1]-MACD저[2])/(MACD저Bar[2]-MACD저Bar[1]) * MACD저Bar[2] + MACD저[2];
Plot2(MACD추세선,"저점추세선",MAGENTA);
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] &&
MACD고[2] > MACD고[1] Then
{
MACD추세선 = (MACD고[1]-MACD고[2])/(MACD고Bar[2]-MACD고Bar[1]) * MACD고Bar[2] + MACD고[2];
Plot3(MACD추세선,"고점추세선",BLUE);
}
2014-11-04
187
글번호 80082