커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8158
글번호 230811
답변완료
수식 문의 드립니다...^^
수고가 많으시죠...
볼린저밴드 (40.2) 이평선 3일
볼린저밴드 상단에 이평선 3일 상승돌파에 매수 하락돌파에 매도
볼린저밴드 하단에 이평선 3일 하락돌파에 매도 상승돌파에 매수
이상입니다...수고하세요...
2017-12-12
209
글번호 114905
답변완료
매수 미체결 수량 청산 주문 관련
매수 주문이 나갔는데 수량이 적어 체결이 안되다가 청산 수식이 나왔는데 이상하게 청산이 안되는 경우가 있는거 같습니다.
우선 청산수식 나가면 그전에 주문이 발생한 미체결 매수 신호를 다 없애고 청산수식이 나가게 할수는 없나요?
2017-12-12
222
글번호 114904
답변완료
키움수식을 예스용으로
키움수식입니다.
수식1
HighestSince(1,CrossUp(Trix(5),0),avg(C,20))
수식2
LowestSince(1,CrossDown(Trix(5),0), avg(C,20))
수식3
HighestSince(1,CrossUp(Trix(20),0),avg(C,20))
수식4
LowestSince(1,CrossDown(Trix(20),0), avg(C,20))
수식변환부탁드립니다.
2017-12-11
302
글번호 114903
답변완료
ma 에 대해서 다시 질문드립니다.
아래와 같이 답변주셨는데요
물론 말씀하신것처럼 이평계산 이상의 봉을 넣으면 잘나오고있습니다.
하지만 문제 되는점은 저는 봉수를 필요이상으로 많이넣고싶지않습니다
(차트를 수십개 띄워서 매매하는데 예스트레이더는 64bit를 지원하지 않으므로
필요이상의 봉을 하면 프로그램이 다운됩니다.)
15분봉상에서 제가 필요로 하는 봉수는 2000봉입니다.
2000봉 15분봉으로 지표를 하면 분명히 Sma11 = ma(C,i7800); 값은
Sma11 = ma(C,1560); 과 같으므로 화면상에 최근 400여 봉정도는 나타나야 된다고생각합니다
물론 2000봉에 15분봉상 ma(c,1560)으로 직접 숫자를 넣으면 잘 작동합니다
하지만 변수로 위와 같이 i7800 = 1560; Sma11 = ma(C,i7800); 넣으면 작동하지 않습니다.
이는 문법적으로는 문제없는데 기능상 문제인거같은데요
왜그런지 궁금합니다.
안녕하세요
예스스탁입니다.
차트에 지정한 기간의 이평을 계산할만큼 봉수가
충분한지 확인해 보시기 바랍니다.
첨부된 그림과 같이 이평이 정상적으로 계산되고 그려지고 있습니다.
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : ma 값이 계산안됩니다
> //Input : DayPeriod1(5), DayPeriod2(10), DayPeriod3(20), DayPeriod4(31), DayPeriod5(60);
var : Sma1(0),Sma2(0),Sma3(0),Sma4(0),Sma5(0);
var : Sma6(0),Sma7(0),Sma8(0),Sma9(0),Sma10(0);
var : Sma11(0);
var : i650(650),i1000(1000),i1300(1300),i2000(2000),i2600(2600),i3000(3000);
var : i4000(4000),i5000(5000),i6000(6000),i7000(7000),i7800(7800);
if Index==0 Then{
ClearDebug;
if(BarInterval==3)Then{
i650 = 650;
i1000 = 1000;
i1300 = 1300;
i2000 = 2000;
i2600 = 2600;
i3000 = 3000;
i4000 = 4000;
i5000 = 5000;
i6000 = 6000;
i7000 = 7000;
i7800 = 7800;
}
if(BarInterval==5)Then{
i650 = 390;
i1000 = 600;
i1300 = 780;
i2000 = 1200;
i2600 = 1560;
i3000 = 1800;
i4000 = 2400;
i5000 = 3000;
i6000 = 3600;
i7000 = 4200;
i7800 = 4680;
}
if(BarInterval==15)Then{
i650 = 130;
i1000 = 200;
i1300 = 260;
i2000 = 400;
i2600 = 520;
i3000 = 600;
i4000 = 800;
i5000 = 1000;
i6000 = 1200;
i7000 = 1400;
i7800 = 1560;
}
//MessageLog("barin %.f",BarInterval);
}
/*
Sma1 = ma(C,Period1);
Sma2 = ma(C,Period2);
Sma3 = ma(C,Period3);
Sma4 = ma(C,Period4);
Sma5 = ma(C,Period5);
Sma6 = ma(C,Period6);
Sma7 = ma(C,Period7);
Sma8 = ma(C,Period8);
Sma9 = ma(C,Period9);
Sma10 = ma(C,Period10);
Sma11 = ma(C,Period11);
*/
Sma1 = ma(C,i650);
Sma2 = ma(C,i1000);
Sma3 = ma(C,i1300);
Sma4 = ma(C,i2000);
Sma5 = ma(C,i2600);
Sma6 = ma(C,i3000);
Sma7 = ma(C,i4000);
Sma8 = ma(C,i5000);
Sma9 = ma(C,i6000);
Sma10 = ma(C,i7000);
Sma11 = ma(C,i7800);
MessageLog("i1300 %.f %.f %.f",i7000,sma10,ma(C,i7000));
Plot1(Sma1);
Plot2(Sma2);
Plot3(Sma3);
Plot4(Sma4);
Plot5(Sma5);
Plot6(Sma6);
Plot7(Sma7);
Plot8(Sma8);
Plot9(Sma9);
Plot10(Sma10);
Plot11(Sma11);
분봉에 따라 ma 값을 변하게 하고싶습니다
즉 5분봉일때 10분봉일 때 5분봉일때 100ma를 10분봉일때 50ma 로 지표를 나타내고싶어서
위와 같이만들었는데
제대로 작동하지 않는군요
그래서 프린트해봤더니
이상합니다
ma(c,1300) 은 정확히 값을 출력하는데 ma(c,i1300) 은 값이 안나옵니다
이게 왜 이런지 궁금합니다.
i1300의 값이 정확히 바뀌는걸 분봉마다 debug 통해확인하는뎅도
ma(c,1300)으로 값을 직접 넣은것과 ma(c,i1300) 처럼 변수로 하는것의 값이 너무 다릅니다
왜그런가요?
2017-12-11
274
글번호 114902
답변완료
수식수정부탁드립니다
안녕하세요 다음 수식에서 고점저점발생시 고점수치,저점수치(TEXT)의 숫자가 아닌 예를들어 원이나 삼각형태의 어떠한 형태의 표시가 발생하도록 수식변형부탁드립니다
감사합니다
Input:length(5),종가사용여부(0),파동선두께(5),수치표시(1);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
PlaySound("F:₩예스트레이더소리₩띠웅.wav");
Text_SetStyle(Text1, 2, 1);
Text_SetColor(Text1,BLACK);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,red);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
PlaySound("F:₩예스트레이더소리₩띠웅.wav");
Text_SetStyle(Text1, 2, 0);
Text_SetColor(Text1,BLACK);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,red);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2017-12-11
236
글번호 114900
회원 님에 의해서 삭제되었습니다.
2017-12-11
59
글번호 114899
답변완료
부탁드립니다.
수식 부탁드립니다.
아래수식을 갭보정으로 부탁드립니다.
-----------------------------------------
INPUT : TPA(8), HAA(8), TAL(4)
VAR : TCHAN(0), BCHAN(0);
VAR : haclose(0), haopen(0), hahigh(0), halow(0),hae(0),tpae(0),trendae(0),typ(0),h4(0),tv(0);
if Accum(1) > 1 then {typ=(H+L+C)/3;
haclose=(Open + HIGH + LOW +CLOSE ) / 4 ;
haopen = (haopen[1] + haclose[1]) / 2;
hahigh=Max(H,haopen,haclose);
halow=Min(L,haopen, haclose);
H4=(haclose+haopen+hahigh+halow)/4;
hae = MA(h4, HAA) ;
tpae= MA(typ, TPA);
trendae=MA(C,TAL);
tv=IFF(tpae>hae and C>O AND C > trendae,1,
IFF(tpae<=hae and C<=O and C<=trendae,-1,tv[1]));
plot1(0,"0");
plot2(tv,"tv");
2017-12-11
232
글번호 114896
답변완료
atstop 진입조건 문의
if stime<091000 then LL = DayLow;
sell("S",atstop,LL);
위 atstop을 이용한 진입식을 아래처럼 if문을 이용한 진입식으로 변형하려합니다
if stime<091000 then LL = DayLow;
if crossdown(c,LL) then sell("S");
그런데 시뮬을 해보면 위 아래식의 진입신호가 다르게 나오던데
동일하게 진입이 발생하게끔 수정 좀 부탁드리겠습니다
2017-12-11
210
글번호 114883
고민중 님에 의해서 삭제되었습니다.
2017-12-11
5
글번호 114882