커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6980
글번호 230811
답변완료
쌍쓰리 동시
input : Period(120);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0);
Array: HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
var : tx1(0),tx2(0),tx3(0),tx4(0);
var : tx99(0),tx99count(0),l1(0),l2(0),l3(0),l4(0);
Plot1(value12);
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
}
LoVal[0] = L;
LoBar[0] = 0;
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];
Condition99 = False;
tx99count = 0;
}
Else
{
If LoVal[0] >= L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date22 = date[0];
time22 = stime[0];
Condition99 = False;
}
Else
{
if Condition99 == False and value12 <= value11-0.5 and H >= value12+PriceScale*3 Then
{
Condition99 = true;
l1 = value12;
l2 = l1[1];
l3 = l2[1];
l4 = l3[1];
tx99count = tx99count+1;
if tx99count >= 2 Then
{
if max(L1,L2) <= min(L1,L2)+PriceScale*2 Then
{
tx2 = Text_New(date12,time12,L1-PriceScale*0,"●");
Text_SetStyle(tx2,2,2);
Text_SetColor(tx2,Cyan);
Text_SetSize(tx2,30);
}
}
if tx99count >= 3 Then
{
if max(L1,L2,L3) <= min(L1,L2,L3)+PriceScale*5 Then
{
tx3 = Text_New(date12,time12,L1-PriceScale*0,"●");
Text_SetStyle(tx3,2,2);
Text_SetColor(tx3,Black);
Text_SetSize(tx3,25);
}
}
}
}
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
}
HiVal[0] = H;
HiBar[0] = 0;
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];
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date32 = date[0];
time32 = stime[0];
}
}
2틱 이내 쌍반등과 5틱 이내 쓰리반등이 동시 발생시 동그라미 따로 추가. 부탁드립니다.
(두 수식의 동그라미가 겹치는, 쌍반등이면서 쓰리반등인 부분에 동그라미 따로 추가)
2023-03-16
1290
글번호 167221
답변완료
지표식 문의드립니다
분기 단위로
시가 고가 저가 종가를 나타내어
일주월봉에 적용하려고 하는데 수식 문의드립니다
예를들면
1분기 1~3월
2분기 4~6월
3분기 7~9월
4분기 10-12월
2023-03-16
1104
글번호 167220
답변완료
초보 여쭙니다~~
안녕하세요^^
초보라 이것 저것 해보고 짜집기 하면서 공부 중입니다.
밑에 운영자님이 답변 해주신 내용중에
input : signal_length(11),lin_reg(1),linreg_length(11);
input : lengthMA(34),lengthSignal(9);
input : sto1(12),sto2(5),sto3(5);
input : RSIP(9);
var : bopen1(0,Data1),bhigh1(0,Data1),blow1(0,Data1),bclose1(0,Data1),r1(False,Data1);
var : bopen2(0,Data2),bhigh2(0,Data2),blow2(0,Data2),bclose2(0,Data2),r2(False,Data2);
var : bopen3(0,Data3),bhigh3(0,Data3),blow3(0,Data3),bclose3(0,Data3),r3(False,Data3);
var : bopen4(0,Data4),bhigh4(0,Data4),blow4(0,Data4),bclose4(0,Data4),r4(False,Data4);
var : src1(0,Data1),hi1(0,Data1),lo1(0,Data1),Ema1(0,Data1),eema1(0,Data1),mi1(0,Data1);
var : md1(0,Data1),sb1(0,Data1),sh1(0,Data1),mdc1(0,Data1);
var : src2(0,Data2),hi2(0,Data2),lo2(0,Data2),Ema2(0,Data2),eema2(0,Data2),mi2(0,Data2);
var : md2(0,Data2),sb2(0,Data2),sh2(0,Data2),mdc2(0,Data2);
var : src3(0,Data3),hi3(0,Data3),lo3(0,Data3),Ema3(0,Data3),eema3(0,Data3),mi3(0,Data3);
var : md3(0,Data3),sb3(0,Data3),sh3(0,Data3),mdc3(0,Data3);
var : src4(0,Data4),hi4(0,Data4),lo4(0,Data4),Ema4(0,Data4),eema4(0,Data4),mi4(0,Data4);
var : md4(0,Data4),sb4(0,Data4),sh4(0,Data4),mdc4(0,Data4);
var : stok1(0,Data1),stod1(0,Data1),RSIV1(0,Data1);
var : stok2(0,Data2),stod2(0,Data2),RSIV2(0,Data2);
var : stok3(0,Data3),stod3(0,Data3),RSIV3(0,Data3);
var : stok4(0,Data4),stod4(0,Data4),RSIV4(0,Data4);
var : Bcond(False,Data1),Scond(False,Data1);
bopen1 = data1(iff(lin_reg == 1 , LRL(open, linreg_length) , open));
bhigh1 = data1(iff(lin_reg == 1 , LRL(high, linreg_length) , high));
blow1 = data1(iff(lin_reg == 1 , LRL(low, linreg_length) , low));
bclose1 = data1(iff(lin_reg == 1 , LRL(close, linreg_length) , close));
r1 = data1(bopen1 < bclose1);
bopen2 = data2(iff(lin_reg == 1 , LRL(open, linreg_length) , open));
bhigh2 = data2(iff(lin_reg == 1 , LRL(high, linreg_length) , high));
blow2 = data2(iff(lin_reg == 1 , LRL(low, linreg_length) , low));
bclose2 = data2(iff(lin_reg == 1 , LRL(close, linreg_length) , close));
r2 = data2(bopen2 < bclose2);
bopen3 = data3(iff(lin_reg == 1 , LRL(open, linreg_length) , open));
bhigh3 = data3(iff(lin_reg == 1 , LRL(high, linreg_length) , high));
blow3 = data3(iff(lin_reg == 1 , LRL(low, linreg_length) , low));
bclose3 = data3(iff(lin_reg == 1 , LRL(close, linreg_length) , close));
r3 = data3(bopen3 < bclose3);
bopen4 = data4(iff(lin_reg == 1 , LRL(open, linreg_length) , open));
bhigh4 = data4(iff(lin_reg == 1 , LRL(high, linreg_length) , high));
blow4 = data4(iff(lin_reg == 1 , LRL(low, linreg_length) , low));
bclose4 = data4(iff(lin_reg == 1 , LRL(close, linreg_length) , close));
r4 = data4(bopen4 < bclose4);
src1 = Data1((h+l+c)/3);
hi1 = data1(IFF(IsNan(hi1[1]) == true, ma(high,lengthMA), hi1[1]*(lengthMA-1)+high)/lengthMA);
lo1 = data1(IFF(IsNan(lo1[1]) == true, ma(low,lengthMA), lo1[1]*(lengthMA-1)+low)/lengthMA);
ema1 = data1(ema(src1, lengthMA));
eema1 = data1(ema(ema1, lengthMA));
mi1 = ema1+(ema1-eema1);
md1 = data1(IFf((mi1>hi1), (mi1-hi1) , IFf((mi1<lo1) , (mi1 - lo1) , 0)));
sb1 = data1(ma(md1, lengthSignal));
sh1 = md1-sb1;
mdc1 = data1(iff(src1>mi1,iff(src1>hi1,lime,green),iff(src1<lo1,red,orange)));
src2 = Data2((h+l+c)/3);
hi2 = data2(IFF(IsNan(hi2[1]) == true, ma(high,lengthMA), hi2[1]*(lengthMA-1)+high)/lengthMA);
lo2 = data2(IFF(IsNan(lo2[1]) == true, ma(low,lengthMA), lo2[1]*(lengthMA-1)+low)/lengthMA);
ema2 = data2(ema(src2, lengthMA));
eema2 = data2(ema(ema2, lengthMA));
mi2 = ema2+(ema2-eema2);
md2 = data2(IFf((mi2>hi2), (mi2-hi2) , IFf((mi2<lo2) , (mi2 - lo2) , 0)));
sb2 = data2(ma(md2, lengthSignal));
sh2 = md2-sb2;
mdc2 = data2(iff(src2>mi2,iff(src2>hi2,lime,green),iff(src2<lo2,red,orange)));
src3 = Data3((h+l+c)/3);
hi3 = data3(IFF(IsNan(hi3[1]) == true, ma(high,lengthMA), hi3[1]*(lengthMA-1)+high)/lengthMA);
lo3 = data3(IFF(IsNan(lo3[1]) == true, ma(low,lengthMA), lo3[1]*(lengthMA-1)+low)/lengthMA);
ema3 = data3(ema(src3, lengthMA));
eema3 = data3(ema(ema3, lengthMA));
mi3 = ema3+(ema3-eema3);
md3 = data3(IFf((mi3>hi3), (mi3-hi3) , IFf((mi3<lo3) , (mi3 - lo3) , 0)));
sb3 = data3(ma(md3, lengthSignal));
sh3 = md3-sb3;
mdc3 = data3(iff(src3>mi3,iff(src3>hi3,lime,green),iff(src3<lo3,red,orange)));
src4 = Data4((h+l+c)/3);
hi4 = data4(IFF(IsNan(hi4[1]) == true, ma(high,lengthMA), hi4[1]*(lengthMA-1)+high)/lengthMA);
lo4 = data4(IFF(IsNan(lo4[1]) == true, ma(low,lengthMA), lo4[1]*(lengthMA-1)+low)/lengthMA);
ema4 = data4(ema(src4, lengthMA));
eema4 = data4(ema(ema4, lengthMA));
mi4 = ema4+(ema4-eema4);
md4 = data4(IFf((mi4>hi4), (mi4-hi4) , IFf((mi4<lo4) , (mi4 - lo4) , 0)));
sb4 = data4(ma(md4, lengthSignal));
sh4 = md4-sb4;
mdc4 = data4(iff(src4>mi4,iff(src4>hi4,lime,green),iff(src4<lo4,red,orange)));
stok1 = data1(StochasticsK(sto1,sto2));
stod1 = data1(StochasticsD(sto1,sto2,sto3));
RSIV1 = data1(RSI(RSIP));
stok2 = data2(StochasticsK(sto1,sto2));
stod2 = data2(StochasticsD(sto1,sto2,sto3));
RSIV2 = data2(RSI(RSIP));
stok3 = data3(StochasticsK(sto1,sto2));
stod3 = data3(StochasticsD(sto1,sto2,sto3));
RSIV3 = data3(RSI(RSIP));
stok4 = data4(StochasticsK(sto1,sto2));
stod4 = data4(StochasticsD(sto1,sto2,sto3));
RSIV4 = data4(RSI(RSIP));
Bcond = r1 == true and md1 == green and stok1 > stod1 and RSIV1 > 50 and
r2 == true and md2 == green and stok2 > stod2 and RSIV2 > 50 and
r3 == true and md3 == green and stok3 > stod3 and RSIV3 > 50 and
r4 == true and md4 == green and stok4 > stod4 and RSIV4 > 50 ;
Scond = r1 == False and md1 == Red and stok1 < stod1 and RSIV1 < 50 and
r2 == False and md2 == Red and stok2 < stod1 and RSIV2 < 50 and
r3 == False and md3 == Red and stok3 < stod1 and RSIV3 < 50 and
r4 == False and md4 == Red and stok4 < stod1 and RSIV4 < 50;
if MarketPosition <= 0 and Bcond == true and Bcond[1] == False Then
Buy();
if MarketPosition >= 0 and Scond == true and Scond[1] == False Then
Sell();
if MarketPosition == 1 and Bcond == False Then
ExitLong();
if MarketPosition == -1 and Scond == False Then
ExitShort();
가 있어서 실행해 봤는데요 '수식에서 참조한 2번째 종목데이터가 없습니다.' 라고 뜨는데 무슨말인지 모르겠어서요. 혹시 간단한 설명 부탁드려도 될까요^^?
항상 감사드립니다^^
2023-03-16
1276
글번호 167219
답변완료
식 부탁드립니다.
식 부탁드립니다.
0.지정한 날자부터 조건에 부합하면 계속 자동매수 진행
1.지정한가격 돌파시 매수
2.이후 설정한 가격으로 매도, 손절
매수조건 :시초가가 지정한 돌파매수가격보다 낮을것
매수안하는조건: 당일 가격이 매도설정가격보다 낮게되면
매수안한다
매도,손절 :지정한 가격 이상이면 매도, 이하면 손절
시장가 매수 매도 손절
부탁드립니다
2023-03-16
1018
글번호 167218
답변완료
지표식 문의드립니다
전달 주봉의 마지막 주봉을
새로운 달의 일자가 포함되지 않은 주의 주봉으로 결정하는 지표식을
만들어서 일주월봉에 적용하고 싶습니다.
예를 들어
2월의 경우
2월 20 ~ 2월 24일
2월 27 ~ 3월 3일
로써 2월의 마지막 주봉이 2월 27일~3월 3일에 해당하는 주로 되었는데
제가 원하는 것은
2월 27일 ~ 3월 2일주는 3월이 포함되어있으므로 2월의 마지막 주로 결정하지 않으며,
2월의 마지막 주는 2월 20~24일에 해당하는 주로 결정하고자
하는 목적입니다.
그리고 이 지표를 일주월봉에 적용하고 싶습니다
2023-03-16
1103
글번호 167217
답변완료
시스템식 부탁드립니다.
항상 도움 주셔서 감사합니다.
종목: 해외선물
차트 : 주봉차트
주봉차트에서 봉완성 기준이 아닌 가격조건 만족기준으로만 매매하려 합니다.
아래와 같이 코딩 했는데 위 조건처럼 매매가 되지 않습니다.[느림]
제가 놓치고 있는게 무엇인지 모르겠습니다.
도움 부탁드립니다.
매수 : 현재가가 주봉 10일 이동평균선 위에 있고
현재 이동평균선이 상승중이고
MACD가 0선 위면 매수
위 3가지 모두 만족하면
현재가에서 10틱 하락시 매수
매수물타기 : 포지션 진입이후 진입가격 대비 10틱이 하락하거나
이미 진입된 포지션의 평균진입가격 대비 10틱 하락할때 마다
1계약씩 추가매수(최대 진입횟수 20회)
매수 물타기 청산1 : 포지션 진입이후 계약수가 10개 이내일 경우에는
진입 건별로 10틱 이상 수익이 발생할때마다 1계약씩 청산
포지션 진입이후 계약수가 11개 이상일 경우에는
평균 진입가격보다 10틱 이상 수익발생할 경우 모든 계약 청산
매수청산 : 캔들(현재가가)이 10일 이동평균선 아래로 하락하거나
10일 이동평균선추세가 하락전환하거나
MACD가 0선 아래로 하락시 매수청산
매도 : 현재가가 주봉 10일 이동평균선 아래에 있고
현재 이동평균선이 하락중이고
MACD가 0선 아래면 매도
위 3가지 모두 만족하면
현재가에서 10틱 상승시 매도
매도물타기 : 포지션 진입이후 진입가격 대비 10틱이 상승하거나
이미 진입된 포지션의 평균진입가격 대비 10틱 상승할때 마다
1계약씩 추가매도(최대 진입횟수 20회)
매도 물타기 청산1 : 포지션 진입이후 계약수가 10개 이내일 경우에는
진입 건별로 10틱 이상 수익이 발생할때마다 1계약씩 청산
포지션 진입이후 계약수가 11개 이상일 경우에는
평균 진입가격보다 10틱 이상 수익발생할 경우 모든 계약 청산
매도청산 : 캔들(현재가가)이 10일 이동평균선 위로 상승하거나
10일 이동평균선추세가 상승전환하거나
MACD가 0선 위로 상승시 매도청산
위에 설명한대로 아래 시스템식 수정 부탁드립니다.
#-----------------------------------------------------------------------
# 매수
If marketposition == 0 and C > 이평 and 이평 > 이평[1] and MACDV > 0 then
Buy("B",AtLimit,C-PriceScale*매수폭,amt);
If marketposition == 1 and MACDv < 0 or 이평[0] < 이평[1] or C < 이평 Then
ExitLong("BX",AtLimit,C,"",amt,1);
# 매도
If marketposition == 0 and C < 이평 and 이평 < 이평[1] and MACDV < 0 then
Sell("S",AtLimit,C+PriceScale*매도폭,amt);
If marketposition == -1 and MACDv > 0 or 이평[0] > 이평[1] or C > 이평 Then
ExitShort("SX",AtLimit,C,"",amt,1);
도움 부탁드립니다.
감사합니다.
2023-03-16
842
글번호 167216
답변완료
문의드립니다
차트쉐어에 공개된 지표의 수식을 구하는 방법이 있나요?
2023-03-16
995
글번호 167215
답변완료
식 부탁드립니다.
안녕하세요^^
아래 식 부탁드립니다.
1. 60평선(mav4)이 20평선(mav3) 위에 있고,
전전60평선 값 - 전전20평선 값이 현60평선 값 - 현20평 값 보다 크다는
식 표현이 필요합니다.
!(mav4[2]-mav3[2] > mav4-mav3+5) and
위와 같이 작성하였는데 뭔가 수치 번동은 있는데
제가 뜻하는 대로 제어가 되지 않습니다.
부탇드립니다.
수고하세요^^
2023-03-16
711
글번호 167214
2wnwn 님에 의해서 삭제되었습니다.
2023-03-16
13
글번호 167213