커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4351
글번호 230811
답변완료
문의합니다.
문의합니다.
시물레이션시 그림과 같이 진입 후 수익이 났습니다.
캔들을 보면 시가 종가 고가 저가 4개에 대해서만 확실히 알수 있고
형성되는 과정을 알수가 없습니다.
수익 처리가 되었을때 그림의 1번,2번 처럼 캔들 형성 순서가 다를수 있는데..
1번처럼 형성시 수익
2번처럼 형성시 손절
60분봉 이상에서도 신뢰해도 되는지 알고 싶습니다.
세번째 사진을 보면 시간이 정시 기준입니다.(60분봉)
이유와 실거래시 어떤 문제가 생길수 있는지 알고 싶습니다.
2018-02-11
192
글번호 116508
답변완료
문의드립니다..^^
여러모로 도움을 많이 받고 있어 항상 감사한 마음을 가지고 있습니다..^^
문의 드릴 내용은......
1. 현재봉 포함하여 30봉이내에 최고값과 최저값에 가로라인(점선)을 차트에 긋고 싶습니다.
2. 현재봉 포함하여 이전 60봉에 세로라인(점선)을 긋고 싶습니다.
3. 해당월물(선물)의 태동부터 각 주체간 누적순매수를 표현하고 싶습니다. 가령, 201803월 선
물인 경우 처음 상장된 시점부터 각 외인,기관,개인 누적순매수를 지표로 나타냈으면
합니다.
감사합니다..
2018-02-10
166
글번호 116507
답변완료
수식문의
수고하십니다
이앞전봉이 20틱이상 변동만있을경우에 이전봉 고점을 5틱 넘으면 매수 이전봉의 저점을5틱깨면 매도 하는식 부탁합니다
2018-02-11
174
글번호 116506
답변완료
문의드립니다.
차트에 10틱 간격으로 수평선을 넣을려고 합니다.
부탁드립니다.
2018-02-10
179
글번호 116505
답변완료
시스템식 문의드립니다.
아래의 시스템전략을 식으로 어떻게 구현해야 할 지 궁금합니다.
1. 최근 n봉 이내 고점봉의 시가대비 k%하락 시 매수.
2. 최근 n분 이내 고점봉의 시가대비 k%하락 시 매수.
3. 최근 n봉 이내에 음봉이 p개 이상 있고, n봉 중 고가 대비 k%하락 시 매수.
2018-02-12
169
글번호 116504
답변완료
질문있습니다.
기존의 시스템에 참조데이터를 활용해서 시스템을 작동하도록 하고싶었습니다
하지만 기존의 시스템에 단순히 var: aaa(0,data2); 와같이
참조 변수를 선언만 해도 이상하게 시스템이 정상작동하지 않았습니다.
해서 게시판을 검색해서 아래의 답변을얻었습니다.
===========================================================================
수식에 참조데이터함수가 사용되면
수식에 계산되는 값의 변수타입과 계산식등을
데이터번호 함수로 묶어 주셔야 합니다.
변수에 데이터번호를 지정해 해당 변수가 1봉전, 2봉전과 같이 이전값 참조할때
어떤 데이터의 주기로 이전값을 참조해야하는지 지정해 주셔야 하며
계산식도 데이터 함수로 묶어 주셔야 합니다.
data2값이 있는 수식에 ma(c,10)과 같이 사용되면
10봉을 data1의 주기로 카운트 하는것이 아니라 data1과 data2를 합친 봉수로
처리하게 됩니다.
랭귀지 도움말에서 예스랭귀지 활용부분에 타종목/타주기 참조에 해단
내용 참고하시기 바랍니다.
Var : MA1(0,data1), MA2(0,data1);
Var : test(1,data2);
test = Data2( close );
MA1 = data1(MA(Close, 10));
MA2 = data1(MA(Close, 20));
If (MA1[1] < MA2[1] ) Then
Buy ();
If (MA1[1] > MA2[1] ) Then
Sell ();
즐거운 하루되세요
=====================================
라는 답변을 다른분에게 해주셨는데요
궁금한것이 참조데이터를 활용하려면 무조건 기존에 작성된 데이터에 대해서 모두다
수식에는 data1(기존수식) 과 같이 하고 변수 선언시에는 기존 변수(0,data1) 과 같이 지정해주어야하나요?
저는 위에 답변을 보고 기존 변수선언시에만 기존 변수(0,data1) 하였더니
일단 원하는데로 시스템이 작동하는 것을 확인했는데요
변수 선언시뿐아니라 수식에도 모두다 적용을 해줘야하는지궁금합니다.
2018-02-09
170
글번호 116503
답변완료
수식문의
안녕하세요
하기 수식과 관련하여 문의 드립니다. 검토 부탁드립니다.
nput : Period(20),dv(2);
var : BBmd(0),BBdn(0),bbup(0),BandB(0),HH(0),LL(0);
BBmd = ma(C,Period);
BBdn = BollBandDown(Period,Dv);
BBUp = BollBandUp(Period,Dv);
BandB = ((C-BBDn)/(BBUp-BBdn))*100;
if crossup(BandB,90) Then
HH = BandB;
if BandB > 90 and BandB > HH Then
HH = BandB;
if CrossDown(BandB,10) Then
LL = BandB;
if BandB < 10 and BandB < LL Then
LL = BandB;
if HH > 100 and CrossDown(BandB,90) and c >= bbmd-PriceScale*10 and C >= O Then
sell("s4");
if LL < 0 and crossup(BandB,10) and C <= bbmd+PriceScale*10 and C <= O Then
buy("b4");
1. 상기 수식이 잘 적용되지 않고 있습니다.
발생하는 부분인데도 발생하지 않고, 넘어갑니다. 무엇이 잘못된 것인지 잘 모르겠습니다.
제가 원하는 것은 Band%B로 진입을 결정하는 것입니다.
매도 : Band%B가 90 이하로 내려올 때 매도 진입
- 조건은 100을 넘고 와서 90이하로 내려와야 합니다.
95나 98에서 90이하로 내려오면 진입하지 않습니다.
매수 : Band%B가 10 이상으로 올라올 때 매수 진입
- 조건은 0을 넘고와서 10 이상으로 올라와야 합니다.
2 나 5 에서 10 이상으로 올라오면 진입하지 않습니다.
2. 추가 조건사항으로 두가지 시간 프레임을 사용해서 적용하고 싶습니다.(data2 사용)
data 1 과 data 2가 동시에 band%b의 90이하로 내려올 때 매도, 10 이상으로 올라올 때 매수
하는 수식 부탁드립니다. 조건은 1번과 같습니다. 참고로 data2 가 짧은 주기 입니다.
data 1 (60분봉) 과 data 2 (30분봉) 가 동시에 신호를 발생할 때,
data 2 기준으로 진입 부탁드립니다.
즉 data 1 은 경계선에 있는데, data 2는 탈출을 했으면 진입되게 부탁드립니다.
3. 추가 조건사항으로 data 1의 ADX가 1 이상이면 진입대기 하다가,
1보다 작아지면 진입합니다.
감사합니다.
2018-02-11
158
글번호 116502
답변완료
수정 부탁드립니다.
// Asia - 17
// Europe 17 - 2330
// USA 2330 -
Params : eeTIME1(170000), eeTIME2(233000);
Vars : tCNT1(0), tCNT2(0), tCNT3(0);
Vars : TCOND1(False), TCOND2(False), TCOND3(False);
Vars : st(0), et(0);
V1 = Dayofweek((10000 * Year(D)) + (100 * 3) + 1);
If V1 = 0 Then Value2 = 8
Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜
V2 = Dayofweek((10000 * Year(D)) + (100 * 11) + 1);
If V2 = 0 Then Value4 = 1
Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜
If date > (10000 * Year(D)) + (100 * 3) + value2
And date < (10000 * Year(D)) + (100 * 11) + value4 Then
Begin
st = 070000; // 써머타임 적용 시, 장시작 시간
et = 060000; // 써머타임 적용 시, 장종료 시간
End
Else
Begin
st = 080000; // 장 시작 시간
et = 070000; // 장 종료 시간
End;
condition1 = (IntPortion(time/10000) > IntPortion(et/10000)
And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1];
/////////////////////////////////////////////////////////////////////////
Vars : dIdx1(0), dIdx2(0), dIdx3(0);
Vars : HH1(0), HH2(0), HH3(0);
Vars : LL1(0), LL2(0), LL3(0);
If condition1 Then
Begin
tCNT1 = 0;
tCNT2 = 0;
tCNT3 = 0;
dIdx1 = 0;
dIdx2 = 0;
dIdx3 = 0;
End
Else If et < TIME And TIME < eeTIME1 Then dIdx1 = dIdx1 + 1
Else If eeTIME1 < TIME And TIME < eeTIME2 Then dIDx2 = dIdx2 + 1
Else If TIME < et Then dIdx3 = dIdx3 + 1;
v99 = TotalTrades;
If tCOND1 And v99 > v99[1] Then tCnt1 = tCnt1 + 1
Else If tCOND2 And v99 > v99[1] Then tCnt2 = tCnt2 + 1
Else If tCOND3 And v99 > v99[1] Then tCnt3 = tCnt3 + 1;
If dIdx1 <> 0 And dIdx2 = 0 And dIdx3 = 0 Then
Begin
HH1 = Highest(H, dIdx1);
LL1 = Lowest(L, dIdx1);
End
Else If dIdx2 <> 0 And dIdx3 = 0 Then
Begin
HH2 = Highest(H, dIdx2);
LL2 = Lowest(L, dIdx2);
End
Else If dIdx3 <> 0 Then
Begin
HH3 = Highest(H, dIdx3);
LL3 = Lowest(L, dIdx3);
End;
If st < eeTIME1 Then
Begin
If st < TIME And TIME < eeTIME1 Then TCOND1 = True
Else TCOND1 = False;
End
Else
Begin
If st < TIME Or TIME < eeTIME1 Then TCOND1 = True
Else TCOND1 = False;
End;
If eeTIME1 < eeTIME2 Then
Begin
If eeTIME1 < TIME And TIME < eeTIME2 Then TCOND2 = True
Else TCOND2 = False;
End
Else
Begin
If eeTIME1 < TIME Or TIME < eeTIME2 Then TCOND2 = True
Else TCOND2 = False;
End;
If eeTIME2 < et Then
Begin
If eeTIME2 < TIME And TIME < et Then TCOND3 = True
Else TCOND3 = False;
End
Else
Begin
If eeTIME2 < TIME Or TIME < et Then TCOND3 = True
Else TCOND3 = False;
End;
Vars : SP(0), TickSize(0);
SP = SignalPosition;
TickSize = OneTick * PriceScale;
If SP = 0 Then
Begin
If TCOND1 And tCNT1 < 1 Then
Begin
If HH3 > H Then Buy("B_Asia", Atstop, HH3 + TickSize);
If LL3 < L Then Sell("S_Asia", Atstop, LL3 - TickSize);
End
Else If TCOND2 And tCNT2 < 1 Then
Begin
If HH1 > H Then Buy("B_Eu", Atstop, HH1 + TickSize);
If LL1 < L Then Sell("S_Eu", Atstop, LL1 - TickSize);
End
Else If TCOND3 And tCNT3 < 1 Then
Begin
If HH2 > H Then Buy("B_Usa", Atstop, HH2 + TickSize);
If LL2 < L Then Sell("S_Usa", Atstop, LL2 - TickSize);
End;
End;
2018-02-11
206
글번호 116501
답변완료
문의드립니다.
SwingLow 이용하여 전저점을 차례대로 구할 때
SwingLow(1,L,3,3,10)
SwingLow(2,L,3,3,10)
SwingLow(3,L,3,3,10)
...
이런식으로..
첫번째로 20이평 보다 낮은 값을 갖는 swinglow값 추출하는 수식 부탁드립니다.
항상 감사드립니다.
2018-02-09
149
글번호 116500