커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6138
글번호 230811
답변완료
부탁 드립니다.
도움 주심에 감사 드립니다.
질문1)
다음은 현재일 기준 4일전 까지만 선을 긋고 있습니다.
이것을 과거일을 지정하고
그날자 이전 4일동안 선을 긋고 싶습니다.
미리 감사 드립니다.
input:시간(080000);
if sTime >= 시간 and stime[1] < 시간 Then{
var1 = max(H,H[1]);
var2 = min(L,L[1]);
var3 = sdate;
if H > H[1] Then
var4 = stime;
Else
var4 = stime[1];
if L < L[1] Then
var5 = stime;
Else
var5 = stime[1];
var11 = var1[1];
var21 = var2[1];
var31 = var3[1];
var41 = var4[1];
var51 = var5[1];
value1 = TL_New(var31,var41,var11,var3,var4,var1);
value2 = TL_New(var31,var51,var21,var3,var5,var2);
value11 = value1[1];
value21 = value2[1];
value12 = value11[1];
value22 = value21[1];
value13 = value12[1];
value23 = value22[1];
value14 = value13[1];
value24 = value23[1];
TL_Delete(value14);
TL_Delete(value24);
}
질문2)
다음 수식에서
추세선인TL2,TL3가
현재 그어지는 선의 길이에서
좌우 끝단까지 연장해서 그을수 있도록 부탁 드립니다.
Input:length(10),파동선선택1(1),추세선두께(0);
Var:j(0),k(0),q(0),TL1(0),TL2(0),TL3(0),
TL_NewBit(0); // 1:NewLine 2:SetEndLine
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
Value1 = HiLoLineZigZag(length,0,고,저,TL_NewBit);
If Value1 == 1 Then { // 고점
If TL_NewBit == 1 Then { // 신규 고점
if 파동선선택1==1 then{
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
}
TL_SetSize(TL1,1);
k = 0;
For j = 2 To 10 {
If 저[1,1] > 저[j,1] and 저[j,1] > 0 Then { // 전저점보다 낮은 이전 전저점 찾는다
k = j;
j = 10; // exit loop
}
}
If k > 1 Then { // 낮은 전저점이 찾아졌다면
TL2 = TL_New(저[k,3],저[k,4],저[k,1],sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
TL_SetColor(TL2,magenta);
TL_SetSize(TL2,추세선두께);
}
q = q + 1; // 고점이 새로 추가되었으므로 1 증가
If q > 2 and q <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열 크기가 10이므로 10 이내
TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
} Else { // 신규 고점이 아니면 기존 추세선만 연장
If k > 1 Then {
TL_SetEnd(TL2,sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
If q > 2 and q <= 10 Then {
TL_SetEnd(TL3,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
}
If TL_NewBit == 2 Then {
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
} Else If Value1 == -1 Then { // 저점
If TL_NewBit == 1 Then { // 신규 저점
if 파동선선택1==1 then{
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
}
TL_SetSize(TL1,1);
k = k + 1; // 저점이 새로 추가되었으므로 1 증가
If k > 2 and k <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열의 크기가 10이므로 10 이내
TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
q = 0;
For j = 2 To 10 {
If 고[1,1] < 고[j,1] Then { // 전고점보다 높은 이전 전고점을 찾는다
q = j;
j = 10; // exit loop
}
}
If q > 1 Then { // 높은 전고점이 찾아졌다면
TL3 = TL_New(고[q,3],고[q,4],고[q,1],sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
TL_SetColor(TL3,blue);
TL_SetSize(TL3,2);
TL_SetSize(TL3,추세선두께);
}
} Else { // 신규 저점이 아니면 기존 추세선만 연장
If k > 2 and k <= 10 Then {
TL_SetEnd(TL2,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]);
}
If q > 1 Then {
TL_SetEnd(TL3,sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]);
}
}
If TL_NewBit == 2 Then {
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
}
2018-06-18
189
글번호 119796
답변완료
수식부탁드립니다
#,아래수식에서 질문드립니다
1,음운과양운이 교차하는지점에서 연장선을 Y축까지 오른쪽그리기와 교차값을 텍스트 출력
하고 싶습니다, [이때,현재가로부터 이전5개(변수처리)의 교차점연장선과 값만 표시되게]
2,1식을 data2 적용할수있게 도움 부탁드립니다.
Inputs: shortperiod(9), midperiod(26), longperiod(52);
Variables: 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, shortperiod) + Lowest(Low, shortperiod)) / 2;
기준선 = (Highest(High, midperiod) + Lowest(Low, midperiod)) / 2;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, longperiod) + Lowest(Low, longperiod)) / 2;
Plot1(선행스팬1," 선행스팬1");
Plot2(선행스팬2, "선행스팬2");
##,언제나 늘 고맙습니다^^
2018-06-17
191
글번호 119795
답변완료
수식 부탁드립니다
매번 도움주심에 다시한번 진심으로 감사드립니다 ^^*
지수가 "특정지표"를 상하 어느방향으로든 일단 돌파후 다시 눌려서 그 해당지표와 다시
만난후 그 돌파방향의 봉이 완성시 음성신호가 발생되게하고싶습니다
즉, "N패턴"에 해당되는 봉이 완성시 음성신호가 발생되었으면합니다
(* 봉의 꼬리로 해당지표를 터치만했거나
혹은 해당지표를 봉의 일부가 살짝 돌파했더라도
봉의 "종가기준"으로 "N패턴"에 해당되는 봉이 완성시는 조건만족으로 간주))
* 상 하돌파 각각 별도 부탁드립니다
<* "해당지표" 목록입니다>
1, 시가
2, 단순이평선(20선)
3, 가중이평선(20선)
4, 일목균형중 "기준선"
5, if Bdate != Bdate[1] Then{
var1 = H;
var2 = L;
}
plot1(var1);
plot2(var2);
(* 상단선에는 "상방N패턴", 하단선에는 "하방N패턴" 만 발생되면 됩니다)
6, input : P1(5),P2(10);
var : count(0);
var : sumV1(0),sumV2(0),sumV3(0),sumV4(0);
var : mav1(0),mav2(0),mav3(0),mav4(0);
sumV1 = 0;
sumV2 = 0;
for count = 0 to P2{
if count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumV2 = sumV2+DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
plot1(mav1);
plot2(mav2);
7, Input : Period(5);
Var : Sum(0), Counter(0), CSum(0),DayWMA(0);
Sum = 0;
CSum = 0;
For counter = 0 To Period-1 Begin
Sum = Sum + DayClose(counter) * (Period - counter);
CSum = CSum + Period - counter;
End;
If CSum > 0 Then
DayWMA = Sum / CSum;
Else
DayWMA = 0;
plot1(DayWMA);
매번 이렇게 번거롭게해드려서 정말 죄송합니다
예스트레이더를 접한지 얼마안되다보니 이렇게 부탁할일이 많네요 ㅎ
감사합니다 !!!
2018-06-17
190
글번호 119794
답변완료
수식문의드립니다.
데이터매니져에 1분봉에 사용 할 data2값을 넣고
data1과 비교하는 시스템수식을 만들려고 합니다.
여기서 data2에 입력하는 수치는 1달동안 계속 사용하는데
날마다 data2값을 갱신해서 등록해줘야 하나요?
2018-06-17
174
글번호 119793
답변완료
지표 및 함수 문의
안녕하세요.
일봉 Vertical Horizontal filter 를 분봉상에 표현하고자 합니다.
함수가 포함되어 있는데 함수를 수정해도 지표를 수정해도 잘 안되네요 ㅜㅜ
부탁드립니다.
함수의
AccumN(abs(C - C[1]), P);
부분을
AccumN(abs(Dayclose - DayClose[1]), P);
과 같은 방식이 아니라
AccumN(abs(C - DayClose[1]), P);
(c= 분봉 종가)
위와 같은 분봉상에서 움직임을 가지는 지표로 가능한지도 부탁드립니다.
그리고 지표값에 대한 이평선을 추가하고 싶습니다.
감사합니다.
2018-06-17
191
글번호 119792
답변완료
일간 피보나치선 기준시각 설정 수식
수고하십니다.
아래는 일간피보나치 (로그적용) 수식인데,
input : Per1(23.6),Per2(38.2),Per3(50.0),Per4(61.8),Per5(76.4);
var : HH(0),LL(0);
HH = dayhigh;
LL = DayLow;
var1 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per1/100));
var2 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per2/100));
var3 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per3/100));
var4 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per4/100));
var5 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per5/100));
plot1(HH);
plot2(var1);
plot3(var2);
plot4(var3);
plot5(var4);
plot6(var5);
plot7(LL);
위 수식을 특정시간(예 22:30을 시작으로 해서 다음날 22:29까지)을 기준으로 고저점을 계산하여 만들 수 있는지요.
챠트 바탕화면 클릭 차트창 속성에서 배경-> 기준시간 설정 기능이 한국투자증권 이프렌트글로벌에서는 지원되는 않나요?
해외선물차트에서 위 기능이 적용되는 증권사 HTS는 어느 것인가요?
2018-06-16
388
글번호 119791
답변완료
수식 수정좀 부탁드립니다.
지난번 작성해주신 수식을 아래와 같이 응용해보았는데 신호 발생이 안됩니다.
어디가 잘못되었는지??
수정좀 부탁드립니다.
매수진입
1. 아래 13개의 선을 기준으로 상하 5틱의 범위 내에서
2. 1~3개 이전 캔들의 저가가 위 1번에 포함되고
3. 양봉 연속 2개 이상이면 매수 진입
매도진입
1. 아래 13개의 선을 기준으로 상하 5틱의 범위 내에서
2. 1~3개 이전 캔들의 고가가 위 1번에 포함되고
3. 음봉 연속 2개 이상이면 매도 진입
var : OO(0),HH(0),LL(0),CC(0),OO1(0),HH1(0),LL1(0),CC1(0);
var : mav1(0),mav2(0),mav3(0),maxv(0),minv(0),cnt(0);
Array : line[19](0);
if Bdate != Bdate[1] Then{
OO = O;
HH = H;
LL = L;
OO1 = OO[1];
HH1 = HH[1];
LL1 = LL[1];
CC1 = CC[1];
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
var1 = dayhigh(0);
var2 = daylow(0);
var3 = var1-var2;
line[1] = var1;
line[2] = var2;
line[3] = var1-var3*0.236;
line[4] = var1-var3*0.382;
line[5] = var1-var3*0.500;
line[6] = var1-var3*0.618;
line[7] = var1-var3*0.764;
line[8] = var1+var3*0.236;
line[9] = var1+var3*0.382;
line[10] = var1+var3*0.618;
line[11] = var2-var3*0.236;
line[12] = var2-var3*0.382;
line[13] = var2-var3*0.618;
{
for cnt = 1 to 13
Condition1 = H[1]+PriceScale*5 >= Line[cnt] and H[1]-PriceScale*5 <= line[cnt]
or H[2]+PriceScale*5>=Line[cnt] and H[2]-PriceScale*5<= line[cnt]
or H[3]+PriceScale*5 >=Line[cnt] and H[3]-PriceScale*5<= line[cnt] ;
Condition2 = L[1]-PriceScale*5 <= Line[cnt] and L[1]+PriceScale*5 >= line[cnt]
or L[2]-PriceScale*5 <= Line[cnt]and L[2]+PriceScale*5 >= line[cnt]
or L[3]-PriceScale*5 <= Line[cnt] and L[3]+PriceScale*5 >= line[cnt] ;
Condition3 = countif(C > O, 2) >= 2 ;
if Condition3 == true and Condition2 == true Then
buy("매수",OnClose);
Condition4 = countif(C < O, 2) >= 2 ;
if Condition4 == true and Condition1 == true Then
sell("매도",OnClose);
}
2018-06-15
178
글번호 119790
답변완료
피보나치 수식 부탁드립니다.
일봉챠트상 120봉 이내에서 최저가와 최고가를 잊는 피보나치
매매는 분봉에 적용하여 매매
1. 진입일자
2. 매수금액
3. 0.5 돌파시 매수
4. 0.618 돌파시 매수
5. 0.618 하향 이탈후 3거래일 동안 반등을 못할시 4거래일부터 음봉종가(150000) 매수(2회까지)
6. 평단가대비 +10% 수익매도
2018-06-16
213
글번호 119789
답변완료
옆으로1칸이동하는 수식
키움에는 shift( ,1) 옆으로 이동하는 수식이 있는데
옆으로 이동하는 수식좀 가르쳐주세요
2018-06-15
178
글번호 119788