커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6040
글번호 230811
회원 님에 의해서 삭제되었습니다.
2019-01-29
39
글번호 125688
답변완료
문의드립니다.
안녕하세요
첨부한 그림과 같이 현재는 현재저점(1번)과 전저점(2번)의 추세선만 오른쪽으로
연장이 되는데, 여기에
1. 전저점(2번)과 전전저점(3번) 추세선,
2. 현저점(1번)과 전전저점(3번)의 추세선
3. 현저점(1번)과 전전전저점(4번)과의 추세선
4. 2번고점과 3번고점
5. 1번 고점과 3번고점
6. 1번 고점과 4번 고점
이렇게 추세선을 오른쪽 연장해서 넣고 싶습니다.
그리고 지나가면서 새로운 고점 저점이 생기면 맨
앞쪽 추세선은 지워지도록 부탁드립니다.
Input:length(6);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),
TL_Val1(0),TL_Val2(0);
var : T(0),LTL1(0),LTL2(0),LTL3(0);
var : LTL11(0),LTL21(0),LTL31(0);
var : LTL12(0),LTL22(0),LTL32(0);
var : HTL1(0),HTL2(0),HTL3(0);
var : HTL11(0),HTL21(0),HTL31(0);
var : HTL12(0),HTL22(0),HTL32(0);
Array:고점[10,2](0),저점[10,2](0);
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then
{ If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
if T[1] != 1 Then{
TL_SetExtRight(LTL1,False);
LTL1 = TL_New(sDate[index-저점[2,2]],sTime[index-저점[2,2]],저점[2,1],sDate[index-저점[1,2]],sTime[index-저점[1,2]],저점[1,1]);
Ltl11 = Ltl1[1];
Ltl21 = Ltl2[1];
Ltl31 = Ltl3[1];
Ltl12 = Ltl11[1];
Ltl22 = Ltl21[1];
Ltl32 = Ltl31[1];
TL_SetExtRight(LTL1,true);
}
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T = -1;
lastLoVal = L;
If 저점[1,2] < 고점[1,2] Then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
if T[1] != -1 then{
TL_SetExtRight(HTL1,false);
HTL1 = TL_New(sDate[index-고점[2,2]],sTime[index-고점[2,2]],고점[2,1],sDate[index-고점[1,2]],sTime[index-고점[1,2]],고점[1,1]);
htl11 = htl1[1];
htl21 = htl2[1];
htl31 = htl3[1];
htl12 = htl11[1];
htl22 = htl21[1];
htl32 = htl31[1];
TL_SetExtRight(HTL1,true);
}
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,white);
2019-01-29
251
글번호 125687
답변완료
시스템적용 문의합니다.
시스템수식을 아래처럼 적용하였는데 사운드설정을 해보니 막대봉이 이평선을 돌파해도 종가가 나와야 소리가 나옵니다.
제가 원하는 것은 종가가 되기 전에도 가격이 이평선을 돌파하면 즉시 사운드가 나오도록 하고 싶습니다. 어떻게 하면 되나요
Var : Period1(60);
var : Sma1(0);
Sma1 = ma(C,Period1);
# 매수
If CrossUP(c,Sma1) Then
{
Buy();
}
# 매도
If CrossDown(c,Sma1) Then
{
sell();
}
2019-01-28
219
글번호 125686
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
해선
외부변수:
-설정시간
-n틱
수식
var1 = 분봉에서의 일봉 종가 이평;
설정시간에
봉 중간값과
var1 값의 차이가
n틱이하일 때
var2 = 봉의 중간값
*일요일 봉은 셋업하지 않음.
2. 61034 질문 답변 부탁드립니다.
3. 지표
선물 만기일 기준으로
외국인 선물 순매수량 누적
기관 선물 순매수량 누적
개인 선물 순매수량 누적
각 주체들
옵션 순매수량 누적
4. 지표
3지표를 옵션만기일 기준으로 누적
2019-01-29
214
글번호 125685
답변완료
수식 문의
안녕하세요
하기 수쉭문의 부탁드립니다.
1. data 1 과 data 2 의 가격이 모두 볼린져 밴드 이평 하단 5틱 위에 위치하고 있으며,
MACD oscillator가 양에서 음으로 바뀌면 매도 진입 하는 수식 부탁드립니다.
매수는 반대로 data 1 과 data 2 의 가격이 모두 볼린져 밴드 이평 상단 5틱 아래에 위치하고
있으며, MACD oscillator 가 음에서 양으로 바뀌면 매수 진입하는 수식 부탁드립니다.
조건
1.
data1 과 data 2 가 동시에 바뀌지 않더라도 대기하다가 같은 신호가 발생되면 진입하게
부탁드립니다.
예를 들어 data1 은 매도 진입 조건이 이루어 졌는데, data 2가 data 1발생후
5개의 봉 후에 매도 조건이 발생되더라도,
5개 봉을 대기하다가 같은 조건이 되는봉에서 진입하게 부탁드립니다.
2. 하기 두가지 옵션으로 진입하는 수식 부탁드립니다.
a.
진입을 2개로 해서 30틱 익절 1개 나머지 1개는 다음신호까지 대기하는 것으로
부탁드립니다.
b.
진입을 1개만 하는 수식 부탁드립니다.
3. 손절
매도 진입후 가격이 data 1 의 볼린져 밴드 상단에 닿으면 손절하도록 부탁드립니다.
매수 진입수 가격이 data 1 의 볼린져 밴드 하단에 닿으면 손절하도록 부탁드힙니다.
감사합니다.
2019-01-29
216
글번호 125684
답변완료
당일의 시고저 기타선 및 전일의 기타선 문의 드립니다.
예스글로벌hts를 사용중이며 항셍지수를 적용하였을때
아래와 같이 작성하면
기준시간이 우리시간으로 오후6시15분부터 표시가 됩니다.
input : period1(15);
VAR : 기준선(0);
기준선 = (highest(h,Period1)+lowest(l,Period1))/2;
Plot1(dayOpen(0), "시가");
Plot2(dayHigh(0), "고가");
Plot3(dayLow(0), "저가");
Plot4((dayHigh(0)+dayLow(0))/2, "중가");
Plot5(dayHigh(1), "전일고가");
Plot6(dayLow(1), "전일저가");
if c > 기준선 Then
Plot7(기준선, "기준선",YELLOW);
Else
Plot7(기준선, "기준선");
위 수식을 우리시간기준 오전10시15분터부터 작성될수 있도록 수정부탁드립니다.
위의 수식에서 추가해야될 부분을 포함하여 필요한 수식을 아래와 같이 문의드립니다.
우리시간기준 오전10시15분부터(혹시 시간을 변수로 지정해서 변경할수 있으면 부탁드립니다.)
"당일의 시가,고가,저가,중심가,4등분선,기준선(위에 표시되어 있는 기준선)"
"전일의 고가,저가,중심가"
입니다.
감사합니다. 수고하세요^^*
2019-01-28
253
글번호 125683
휴먼시아 님에 의해서 삭제되었습니다.
2019-01-28
0
글번호 125682
답변완료
색깔변화시 매수매도
관리자님 안녕하세요^
수식을 더 부탁드리겠습니다.
if var2 == 1 Then
plot1(var1,"이평",Red);
Else
plot1(var1,"이평",Blue);ㅁ
위수식으로 색깔이 바뀔때 매수(매도)하는 시스템을 만들려고 합니다.
2019-01-28
227
글번호 125681
답변완료
수식부탁합니다
어느 회원님 수식입니다.
피보나치인데 고가,중심,저가만 두고 다 지워버렸습니다.
지표도 지워버렸구요.
중심에만 지표값을 추가해주시면 감사하겠습니다.
Input:ShortPeriod(5),LongPeriod(20),선두께(0);
Var:j(0),ma1(0),ma2(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0),ZZ[20](0);
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0);
r[0] = 0;
r[3] = 0.50;
r[6] = 1;
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
ma1 = Ema(C,ShortPeriod);
ma2 = Ema(C,LongPeriod);
If ma1 < ma2 Then
{
If ma1[1] >= ma2[1] Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
ZZ[j+1] = ZZ[j];
}
LoVal[0] = L;
LoBar[0] = 0;
ZZ[0] = L;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
TL2[j] = TL_New(date21,time21,fr[j],date22,time22,fr[j]);
TL_SetColor(TL2[j],MAGENTA);
}
}
Else If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
ZZ[0] = L;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
TL_SetEnd(TL2[j],date22,time22,fr[j]);
}
}
}
Else If ma1 > ma2 Then
{
If ma1[1] <= ma2[1] Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
ZZ[j+1] = ZZ[j];
}
HiVal[0] = H;
HiBar[0] = 0;
ZZ[0] = H;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
TL3[j] = TL_New(date31,time31,fr[j],date32,time32,fr[j]);
TL_SetColor(TL3[j],BLACK);
}
}
Else If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
ZZ[0] = H;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
for j = 0 to 6
{
TL_SetEnd(TL3[j],date32,time32,fr[j]);
}
}
}
TL_SetSize(TL1,1);
TL_SetSize(TL2[3],선두께);
TL_SetSize(TL3[3],선두께);
2019-01-28
247
글번호 125680