커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8046
글번호 230811
답변완료
문의
시뮬레이션을 통해
시간 변화값, 봉갯수 변화값, HL RANGE 변화값이 모두 나와야하는데
HL RANGE 값만 나오지 않습니다.
시간,봉갯수,HL RANGE 3개가 연동될 수 있도록 부탁드립니다.
***************************************************************************
안녕하세요
예스스탁입니다.
input : 시간(130000),봉갯수(100),HLRANGE(0.50);
var : hh(0),ll(0),ii(0);
if bdate != bdate[1] Then
{
hh = 0;
ll = 0;
ii = 0;
}
if stime >= 시간 then
{
ii = ii +1;
if h > hh Then
hh = h;
if l < ll Then
ll = l;
if ii >= 봉갯수 and hh-ll >= HLRANGE Then
ExitLong();
}
즐거운 하루되세요
> 목마와숙녀 님이 쓴 글입니다.
> 제목 : 수식 문의
> 청산수식을 문의드립니다.
입력한 시간부터 봉갯수를 카운트하고 고가저가를 파악합니다.
13시부터 봉개수 100개 되고 고가저가의 RANGE가 0.5이하면 청산합니다.
input : 시간(130000),봉갯수(100),HL RANGE(0.50)
항상 고맙습니다.
2019-03-22
452
글번호 127305
답변완료
문의드립니다
아래 전략 3가지 에서 손절 30 익절 30 외부 변수로 추가 부탁드립니다
1
input : P1(9),P2(13);
Var : cnt(0),Nth(0),tempmax(0), tempindex(0), X1(0),RCI1(0),X2(0),RCI2(0);
Array : VALUE1[50](0),VALUE2[50](0),NTHVALUE[50](0);
for cnt = 0 to 49{
VALUE1[cnt] = C[cnt];
VALUE2[cnt] = C[cnt];
}
###############################################
For Nth = 0 to P1-1 {
tempmax = -99999999;
For cnt = 0 to P1-1{
if VALUE1[cnt] > tempmax then{
tempmax = VALUE1[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE1[tempIndex] = -99999999;
}
X1 = 0;
for cnt = 0 to P1-1{
X1 = X1+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI1 = (1-(6*X1)/(P1*(P1^2-1)))*100;
###############################################
For Nth = 0 to P2-1 {
tempmax = -99999999;
For cnt = 0 to P2-1{
if value2[cnt] > tempmax then{
tempmax = value2[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE2[tempIndex] = -99999999;
}
X2 = 0;
for cnt = 0 to P2-1{
X2 = X2+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI2 = (1-(6*X2)/(P2*(P2^2-1)))*100;
if RCI1 > 80 and RCI2 > 80 and CrossDown(RCI1,RCI2) Then
sell();
if RCI1 < -80 and RCI2 < -80 and CrossUp(RCI1,RCI2) Then
buy();
2
input : P1(9),P2(13),P3(18);
Var : cnt(0),Nth(0),tempmax(0), tempindex(0), X1(0),RCI1(0),X2(0),RCI2(0),X3(0),RCI3(0);
Array : VALUE1[50](0),VALUE2[50](0),VALUE3[50](0),NTHVALUE[50](0);
for cnt = 0 to 49{
VALUE1[cnt] = C[cnt];
VALUE2[cnt] = C[cnt];
VALUE3[cnt] = C[cnt];
}
###############################################
For Nth = 0 to P1-1 {
tempmax = -99999999;
For cnt = 0 to P1-1{
if VALUE1[cnt] > tempmax then{
tempmax = VALUE1[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE1[tempIndex] = -99999999;
}
X1 = 0;
for cnt = 0 to P1-1{
X1 = X1+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI1 = (1-(6*X1)/(P1*(P1^2-1)))*100;
###############################################
For Nth = 0 to P2-1 {
tempmax = -99999999;
For cnt = 0 to P2-1{
if value2[cnt] > tempmax then{
tempmax = value2[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE2[tempIndex] = -99999999;
}
X2 = 0;
for cnt = 0 to P2-1{
X2 = X2+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI2 = (1-(6*X2)/(P2*(P2^2-1)))*100;
###############################################
For Nth = 0 to P3-1 {
tempmax = -99999999;
For cnt = 0 to P3-1{
if value3[cnt] > tempmax then{
tempmax = value3[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE3[tempIndex] = -99999999;
}
X3 = 0;
for cnt = 0 to P3-1{
X3 = X3+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI3 = (1-(6*X3)/(P3*(P3^2-1)))*100;
if RCI1 > 80 and RCI2 > 80 and RCI3 > 80 and CrossDown(RCI1,RCI3) Then
sell();
if RCI1 < -80 and RCI2 < -80 and RCI2 < -80 and CrossUp(RCI1,RCI3) Then
buy();
3
input : P1(9),P2(13),P3(18);
Var : cnt(0),Nth(0),tempmax(0), tempindex(0), X1(0),RCI1(0),X2(0),RCI2(0),X3(0),RCI3(0);
Array : VALUE1[50](0),VALUE2[50](0),VALUE3[50](0),NTHVALUE[50](0);
for cnt = 0 to 49{
VALUE1[cnt] = C[cnt];
VALUE2[cnt] = C[cnt];
VALUE3[cnt] = C[cnt];
}
###############################################
For Nth = 0 to P1-1 {
tempmax = -99999999;
For cnt = 0 to P1-1{
if VALUE1[cnt] > tempmax then{
tempmax = VALUE1[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE1[tempIndex] = -99999999;
}
X1 = 0;
for cnt = 0 to P1-1{
X1 = X1+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI1 = (1-(6*X1)/(P1*(P1^2-1)))*100;
###############################################
For Nth = 0 to P2-1 {
tempmax = -99999999;
For cnt = 0 to P2-1{
if value2[cnt] > tempmax then{
tempmax = value2[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE2[tempIndex] = -99999999;
}
X2 = 0;
for cnt = 0 to P2-1{
X2 = X2+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI2 = (1-(6*X2)/(P2*(P2^2-1)))*100;
###############################################
For Nth = 0 to P3-1 {
tempmax = -99999999;
For cnt = 0 to P3-1{
if value3[cnt] > tempmax then{
tempmax = value3[cnt];
tempIndex = cnt;
NTHVALUE[cnt] = Nth+1;
}
}
VALUE3[tempIndex] = -99999999;
}
X3 = 0;
for cnt = 0 to P3-1{
X3 = X3+ABS((cnt+1)-NTHVALUE[cnt])^2;
}
RCI3 = (1-(6*X3)/(P3*(P3^2-1)))*100;
if RCI1 > 80 and RCI2 > 80 and CrossDown(RCI1,RCI2) Then
sell();
if RCI1 < -80 and RCI2 < -80 and CrossUp(RCI1,RCI2) Then
buy();
if RCI1 > 80 and RCI2 > 80 and RCI3 > 80 and CrossDown(RCI1,RCI3) Then
sell();
if RCI1 < -80 and RCI2 < -80 and RCI2 < -80 and CrossUp(RCI1,RCI3) Then
buy();
2019-03-22
419
글번호 127302
답변완료
시스템문의합니다
당일 시가대비 20틱위에서 매도2계약들어가서 진입가 대비 10틱 20틱에서 1계약씩청산하고 청산이 안됐을시 50틱에서 추가로 가지고 있는 수량대비 2배로 추가매도하고 평단가 대비 10틱 20틱에서 반 반 청산하고 또 청산이 안됐을 경우 80틱에서 추가로 가지고있는 수량대비 2배로 추가매도해서 평단가 대비 10틱 20틱에서 반 반씩청산 하는시스템식을 만들고 싶습니다 그렇게 각 30틱마다 진입이 되겠끔해서 500틱까지 반복이 되겠끔 하고 싶습니다
매수도 마찬가지로요
만약 20틱에서 진입해서 다 청산이 되면 다시 20틱에 오면 매도가 되겠끔 50틱에서 추가로 들어가서 청산이 되면 다시 50틱에서도 진입이 됬으면 좋겠습니다 단 진입이 되어있으면 추가 진입은 금지이고 각 진입이된 다음 30틱에서 진입이 되겠끔 부탁드립니다
만약 1계약이 청산된 상태라면 1계약은 추가로 진입가능하고요
2019-03-22
434
글번호 127300
답변완료
분할 청산 수식 부탁해요~~(국내 주식)
매수진입은 100회에 걸쳐 진입하였고
청산은 첫 신호에 전량 청산으로 요청한 식이 아래 식입니다.
여기에 추가 부탁드릴께요~~~
청산도 해당 조건에 달성시 보유 주식에 10%씩 10회에 걸쳐 청산하는 식을 요청합니다.
====================================================================================
안녕하세요
예스스탁입니다.
Input: Period(14),LPercent(5),SPercent(80),금액(1000000),최대누적횟수(100);
var : MoneyFlow(0);
MoneyFlow = MFI(Period);
if MoneyFlow < 5 and MaxEntries < 최대누적횟수 Then
buy("b",OnClose,def,Floor(금액/c));
if MarketPosition == 1 and MoneyFlow >= SPercent Then
ExitLong("bx");
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : MFI 매수-청산 수식 부탁해요~~
> 국내 주식 매매
30분봉 기준
MFI 저점(LPercent(5))이하에서는 신호 발생시마다 분할매수로 1회에 100만원씩
최대 100회(1억)까지
청산은 MFI 고점(SPercent)에서 일괄 청산하는 식을 만들어 주시면 감사하겠습니다.
2019-03-22
430
글번호 127298
답변완료
신규 진입 수식 부탁합니다.
해당 조건을 모두 만족할때 신규 진입 뜨는 수식 부탁해요..
일봉 차트 - 국내 주식
CCI 일봉 > 0 &&
CCI 주봉 > 0 &&
주봉 20일 이동평균 라인이 우상향 &&
일봉이 5일이동평균(일봉)보다 아래 있을 때
2019-03-22
421
글번호 127296
답변완료
문의 드립니다
안녕하세요 항상 감사드립니다
문의하고싶은 내용은 바로 전 캔들의 스토캐스틱 값 입니다
제가 하고싶은 수식은 바로 전캔들의 스토캐스틱 값보다 크면 매수 작으면 매도
요렇게 수식을 만들고 싶은데 가능한건가요??
10분봉 차트이며 스토캐스틱 값은 5 3 3 의 k선 값입니다
단 매수가 1회 진행되었으면 매도청산 이 진행되기 전까지 매수 금지..
매도가 1회 진행되었으면 매수청산 이 진행되기 전가지 매도 금지
2019-03-22
408
글번호 127295
답변완료
수식 문의
아래는 일전에 도움 받은
"일봉에서 볼 수 있는 주봉 RSI" 입니다.
아래의 수식은 DayOfWeek를 사용하여 주봉의 고,저가를 확인하는데요,
그런 방식이 아니라,
1. 현재봉을 포함 n개 전봉을 묶어서 하나의 봉처럼 카운팅하고 해당 고,저가를 확인
2. (n)+1~(n * 2)개전봉을 묶어서 하나의 봉처럼 카운팅하고 해당 고저가를 확인
3. (n*2)+1~(n * 3)개전봉 묶어서 하나의 봉처럼 카운팅하고 해당 고저가를 확인
4. (n*3)+1~(n * 4)개전봉 묶어서 하나의 봉처럼 카운팅하고 해당 고저가를 확인
.
.
.
.
x. 현재봉 기준 (n*(x-1))+1~(n * x)개전봉 묶어서 카운팅하고 해당 고저가를 확인
하여서,
x까지를 Period로 설정한 RSI를 구하고 싶습니다.
########
현재 설정된 분봉에서, 상위 프레임의 분봉 RSI를 구해 보고 싶어서
위와 같은 아이디어를 생각하게 되었습니다.
다른 방식이 있으면 그 또한 소개해 주시면 감사하겠습니다.
항상 친절한 답변 감사드립니다.
############# 아래 ###############
Inputs: Length(9);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : RSIv(0),didx(0), UpAvg1(0), DownAvg1(0),cnt(0);
Array : MC[100](0);
if DayOfWeek(date) < DayOfWeek(date[1]) Then{
didx = didx+1;
UpAvg1 = UpAvg[1];
DownAvg1 = DownAvg[1];
for cnt = 1 to 99{
MC[cnt] = MC[cnt-1][1];
}
}
MC[0] = C;
If didx == Length Then Begin
UpSum = 0;
DownSum = 0;
For Counter = 0 To Length - 1 Begin
UpAmt = MC[Counter] - MC[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
End;
UpAvg = UpSum / Length;
DownAvg = DownSum / Length;
End
else If didx > Length Then Begin
UpAmt = MC[0] - MC[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
End;
UpAvg = (UpAvg1 * (Length - 1) + UpAmt) / Length;
DownAvg = (DownAvg1 * (Length - 1) + DownAmt) / Length;
End;
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
plot1(RSIV);
PlotBaseLine1(30, "기준선 30");
PlotBaseLine2(70, "기준선 70");
2019-03-22
477
글번호 127294
답변완료
수식화 가능할까요?
안녕하세요. 예스랭귀지에 푹 빠져있는 초보입니다.
다음의 설명을 수식으로 가능할까요???
말로 설명을 드리면...
① 종가가 a봉 이평선 Envelop 하단 b% 이하로 떨어진 상태에서
② 종가가 a봉 이평선과 Envelop b% 하단선의 c%를 상향 돌파하면 매수 (그림에서는 c=33.3%)
③ 종가가 a봉 이평선과 Envelop b% 하단선의 d%를 상향 돌파하면 매도 (그림에서는 d=66.6%)
즉...
① 이전 거래에서 충분히 과매도되어 있는 상태에서
② 매수 기준선을 통과하면 매수 (매수 기준선은 envelop 하단선으로 설정함)
③ 매도 기준선을 통과하면 매도 (매도 기준선은 이평선을 넘지 않음)
수식화 가능하시면 요청드립니다.
감사합니다.
2019-03-21
481
글번호 127293
답변완료
엔빌로프 알람소리 수식
1분차트에서 엔빌로프(60,0.2%) 상단과 하단에 가격이 도달시 알람소리나게 할 수 잇나요?
수식을 만든후에 어디에다 저장을 합니까? 지표쪽인가요 검색쪽인가요??
2019-03-21
456
글번호 127292