커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7304
글번호 230811
하늘이여o 님에 의해서 삭제되었습니다.
2017-07-23
0
글번호 111515
답변완료
함수 수식
mma(C, 50):
index == 0 이면 C
index == 1 이면 ma(C,2)
...
index == 48 이면 ma(C,49)
index >= 49 면 ma(C,50) 을 리턴시키고 싶은데, 잘 안됩니다.
input: Price(Numeric), Period(Numeric);
if (index+1) < Period then mma = ma(Price, index+1);
else mma = ma(Price, Period);
이렇게 한 후에 지표로
var1 = mma(C, 50);
Plot1(var1);
로 하니 결과가 그림처럼 나옵니다. 즉, index < 50 인 부분에도 나와야 하는데 왜 안나오는지 모르겠습니다.
원인 및 정정 부탁드립니다. 감사합니다.
2017-07-23
206
글번호 111514
앙이 님에 의해서 삭제되었습니다.
2017-07-23
4
글번호 111513
답변완료
보조 지표 그리기..
yesLanguage에서 yesGlobal의 보조 지표를 그리게 할 수 있나요?
예를 들어 "수치전환 수직선" yesLanguage에서 함수를 사용하여 매일 10시에 표시되게
할려고 합니다.
그래게 할 수 있다면 사용법이 나와있는 자료를 받고 싶습니다.
2017-07-23
177
글번호 111512
답변완료
부탁드림니다
**고가-다음파동의고가,저가-다음파동의저가,종가고-다음파동의종가고,종가저-다음파동의종가저 의수평라인을 추가해서 그리고 싶슴니다
1 장기파동(length(60))의 최고점(빨강색두깨3)-다음최고점까지연결,최저점(검정색 두께3)-다음파동의최저점연결
2 단기파동(length1(10))의 최고점(분홍색 두께1),최저점(청색 두께1)의 수평라인을 추가하고
3 장기파동(length(60))의 최고점종가선(빨강색두깨1),최저점종가선(검정색 두께1)
4 단기파동(length1(10))의 최고점종가선(분홍색 두께1),최저점종가선(청색 두께1)의 수평라인을 추가해서 그리고 싶슴니다.
5 그림참고는 52250번 그림과 동일 함니다
수식;
Input:length(60);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
var : UpTL_chk(false),DnTL_chk(false);
Array:valArr[20](0),barArr[20](0),turnPntArr[20]("");
Input:length1(10);
var:lastHiVal1(0),lastLoVal1(0),turnPntBit1(""),TL11(0),T(0),T1(0);
var : H1(0),H2(0),L1(0),L2(0),H11(0),L11(0),H22(0),L22(0);
Array:valArr1[20](0),barArr1[20](0),turnPntArr1[20]("");
For j = 0 To 19 {
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then {
If turnPntArr[1] == "Hi" Then turnPntBit = "Lo";
Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit == "Hi" or turnPntBit == "Lo" Then {
If turnPntBit <> turnPntArr[1] Then {
for j = 18 downto 1 {
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then {
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
# 진입 체크
TL_SetSize(TL1,2);
TL_SetColor(TL1,GREEN);
For j = 0 To 19 {
barArr1[j] = barArr1[j] + 1;
}
Condition11 = Highest(H,length1) == H and lastHiVal1 <> H;
Condition12 = Lowest(L,length1) == L and lastLoVal1 <> L;
If Condition11 Then lastHiVal1 = H;
If Condition12 Then lastLoVal1 = L;
turnPntBit1 = "";
If Condition11 and Condition12 Then {
If turnPntArr1[1] == "Hi" Then turnPntBit1 = "Lo";
Else If turnPntArr1[1] == "Lo" Then turnPntBit1 = "Hi";
}
Else If Condition11 Then turnPntBit1 = "Hi";
Else If Condition12 Then turnPntBit1 = "Lo";
If turnPntBit1 == "Hi" or turnPntBit1 == "Lo" Then {
If turnPntBit1 <> turnPntArr1[1] Then {
for j = 18 downto 1 {
valArr1[j+1] = valArr1[j];
barArr1[j+1] = barArr1[j];
turnPntArr1[j+1] = turnPntArr1[j];
}
}
If turnPntBit1 <> turnPntArr1[1] or
(turnPntBit1 == turnPntArr1[1] and
((turnPntBit1 == "Hi" and valArr1[1] < H) or
(turnPntBit1 == "Lo" and valArr1[1] > L))) Then {
valArr1[1] = IFF(turnPntBit1 == "Hi",H,L);
barArr1[1] = 0;
turnPntArr1[1] = turnPntBit1;
If turnPntArr1[1][1] <> turnPntArr1[1][0] Then
TL11 = TL_New(sDate[barArr1[2]],sTime[barArr1[2]],valArr1[2],sDate[barArr1[1]],sTime[barArr1[1]],valArr1[1]);
Else
TL_SetEnd(TL11,sDate[barArr1[1]],sTime[barArr1[1]],valArr1[1]);
}
}
TL_SetSize(TL11,4);
TL_SetColor(TL11,GREEN);
2017-07-23
183
글번호 111511
답변완료
수정
아래수식을 사용하는데 값이 키움과 다르게 나옵니다.
키움기준으로 아래수식 비교해서 수정할 부분 수정 부탁드립니다.
input : Period(20170703),BarRio(0.01),Percent1(50);
var : B(0),sumB(0),HH(0),LL(0),H2(0);
B = IFF((C-O)/O>=BarRio or (C[1]*1.02<=H and C>=O) or (C[2]>O[2]*1.01 and C[1]>O[1]*1.01 and C>=O)
, V, IFF((C-O)/O<=-BarRio or (C < O and C[1]*1.03 <= H) or (C[1]*0.99>=C and C < O)
or (C[1]*0.97>=L and C < O) or (H[1]*0.97 > C and O>C),-V,0));
if sdate >= Period then{
sumB = sumB+B;
if (sdate != sdate[1]) and (sdate == Period or (sdate > Period and sdate[1] < Period)) Then{
LL = sumB;
HH = sumB;
H2 = sumb-LL;
}
if sumB < LL Then
LL = sumB;
if sumB > HH Then
HH = sumB;
var1 = sumB-LL;
var2 = HH-SumB;
if var1 > H2 Then
H2 = var1;
var3 = H2*(Percent1/100);
plot1(var1,"매수",RED);
plot2(var3,"50%",YELLOW);
}
키움에서 사용하는 수식
B = sum(if(C >= O*(1+A/100) or (C(1)*1.02<=H and C>=O) or (C(2)>O(2)*1.01 and C(1)>O(1)*1.01 and C>=O)
, V, if(C <= O*(1-A/100) or (C < O and C(1)*1.03 <= H) or (C(1)*0.99>=C and C < O)
or (C(1)*0.97>=L and C < O) or (H(1)*0.97 > C and O>C) , -V, 0)));
D = valuewhen(1, date == 날짜 and date(1) != 날짜, B(1));
B - D
E = B -D;
F = highestsince(1, date == 날짜 and date(1) != 날짜, E);
F/2
2017-07-23
137
글번호 111510
답변완료
안녕하세요?
안녕하세요?
분할청산 수식 문의 드립니다.
3계약을 진입한 상태에서 질문 드립니다.
잔고가 3계약일때 익절 +5틱(1계약) , +10틱(1계약) , +20틱(1계약) ,
손절 -10틱(1계약), 손절 -15틱(1계약), 손절 -20틱(1계약)
잔고가 2계약일때 익절 +10틱(1계약) , +20틱(1계약) , 손절 -5틱(1계약) ,진입가(1계약)
잔고가 1계약일때 익절 +20틱(1계약) , 진입가(1계약)
매수,매도 청산식 부탁드립니다.
감사합니다.
2017-07-23
139
글번호 111509
답변완료
부탁 드립니다.
도움 주심에 경배로 감사 인사 드립니다.
질문1)
일시를 지정한 A,B,C, 세점을
연결한 선 등 첨부한 그림과 같이 부탁 드립니다.
질문2)
해선에서
p100으로 지정된 기간에 생성된 선이 길게 나타 날 경우
(당일을 초과하여 다음날로 연장될 경우)
06:00에는 정지하여
그선이 다음날(07:00 이후) 에는 나타나지 않게 가능 하겠는지요?
(var13 != Hv3, var33 != hv3->를 사용하지 않는 수식으로)
input : p100(30);
var : HV1(0),HV2(0),HV3(0);
var : HH1(0),HH2(0),HH3(0);
var : LL1(0),LL2(0),LL3(0);
HV1=NthHighest(1,v,p100);
HV2=nthhighest(2,v,p100);
HV3=nthhighest(3,v,p100);
HH1=NthHighest(1,h,p100);
HH2=nthhighest(2,h,p100);
HH3=nthhighest(3,h,p100);
LL1=NthLowest(1,L,P100);
LL2=NTHLOWEST(2,L,P100);
LL3=NTHLOWEST(3,L,P100);
if Hv3 > 0 and v == Hv3 and
((Hh1 > 0 and h == Hh1) or
(Hh2 > 0 and h == Hh2) or
(Hh3 > 0 and h == Hh3)) Then{
Condition3 = true;
var13 = H;
}
//if Condition3 == true and var13 != Hv3 Then
// Condition3 = false;
#########################################################
if Hv3 > 0 and v == Hv3 and
((LL1 > 0 and L == LL1) or
(LL2 > 0 and L == LL2) or
(LL3 > 0 and L == LL3)) Then{
Condition33 = true;
var33 = L;
}
//if Condition33 == true and var33 != hv3 Then
// Condition33 = false;
############################################
if Condition3 == true then{
plot3(var13,"H3",blue,def,0);
}
if Condition33 == true then{
plot33(var33,"L3",blue,def,0);
}
2017-07-23
200
글번호 111508
답변완료
지표부탁드릴게요.
크루드오일 180분봉의 이평선 매매
---------------------------------------------------
5,20,60일 이평선을 그린다.
60일이평선은 기울기를 색으로 표시한다.
1.추세선은 60이평의 기울기 색깔로 정한다.
빨강이면 매수기회포착 / 파랑이면 매도기회포착 대기중
2.추세선 기울기가 빨강선일때(매수기회포착)
- 매수기회는 가격이 20일선 아래로 내려갔다가 20일선을 넘는 시점에 매수
돌파하는 시점에 점을 찍어주세요. (빨강)
소리 딸랑딸랑 넣어주세요.
3.추세선 기울기가 파랑선일때(매도기회포착)
- 매도기회는 가격이 20일선 위로 갔다가 아래로 내려가는 바로 그지점에 매도
돌파하는 시점에 점을 찍어주세요. (파랑)
소리 딸랑딸랑 넣어주세요.
4.거래시간은 저녁9시~ 새벽2시까지 매매가능하게 해주세요.
5.저점으로 부터 봉의 꼭지가 6,7개 이면 위의 신호를 잡히지 않게해주세요.
6.손절은 50틱입니다. 익절200틱
2017-07-22
206
글번호 111507