커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8154
글번호 230811
답변완료
수식문의
안녕하세요
하기 수식과 관련하여 문의 드립니다. 검토 부탁드립니다.
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
223
글번호 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
319
글번호 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
223
글번호 116500
답변완료
손절 청산 수식좀 부탁드립니다.
매도 진입가 대비 20틱 이상 손실이고 스톡이 상방이면 매도손절청산하라는 수식좀 부탁합니다.
2018-02-09
221
글번호 116499
답변완료
문의드립니다.
항상 감사합니다.
1. 기타
갭크기가 n%(전일종가대비)이상이면 진입하지 않음.
필터 코딩 부탁드립니다.
2. 시스템
외부변수
금액
1시가 되면 최초진입 금액*0.2
3개봉 지날때마다 금액*0.2씩 추가진입
최초 진입 포함 총 진입이 5번이 되면 매수 종료
다음날 시가에 전량 청산
2018-02-09
238
글번호 116497
회원 님에 의해서 삭제되었습니다.
2018-02-09
9
글번호 116496
답변완료
차트 적용
1분봉에 제한하지 않고 다양한 봉차트에 적용하는 수식으로 변경 부탁드립니다.
***********************************
안녕하세요
예스스탁입니다.
장시작 후 9시 27분까지
양봉갯수와 음봉갯수를 카운트하고
더많은 쪽으로 진입하는 식입니다.
선물1분차트에 적용하셔야 합니다.
input: 진입(092700);
if date != date[1] then {
var1 = 0;
var2 = 0;
}
#장시작후 9시 27분 까지
if stime <= 진입 then {
#양봉갯수
if C > O then
var1 = var1 + 1;
#음봉갯수
else if C < O then
var2 = var2 + 1;
}
#9시27분봉에 양봉갯수가 음봉갯수보다 많으면 매수
if stime == 진입 and var1 > var2 then
buy();
#9시27분봉에 음봉갯수가 영봉갯수보다 많으면 매도
if stime == 진입 and var1 < var2 then
sell();
즐거운 하루되세요
> 목마와숙녀 님이 쓴 글입니다.
> 제목 : 해석
> 아래 수식 주석부탁드립니다
2018-02-09
232
글번호 116495
답변완료
다른 시간대의 지표를 표시할수 있나요?
60분봉의 볼린저밴드를 1분봉에서 표시할수있나요?
2018-02-09
242
글번호 116494
답변완료
수식 문의 드립이다.
안녕하세요.
당일 시스템 수식 진입은 매수, 매도 구분없이 1회로 진입횟수 제한.
1. 연결선물 분봉 틱봉 당일청산 시스템에서 당일갭을 기준으로
-> 당일갭이 +2.5P ~ +3.5P 까지일 경우 매수 진입금지, 매도 진입만 허용.
-> 당일갭이 -2.5P ~ -3.5P 까지일 경우 매도 진입금지, 매수 진입만 허용.
2. 연결선물 분봉 틱봉 당일청산 시스템에서 당일갭을 기준으로
-> 당일갭이 +2.5P 이상일 경우 매수 진입금지, 매도 진입만 허용.
-> 당일갭이 -2.5P 이하일 경우 매도 진입금지, 매수 진입만 허용.
3. 연결선물 분봉 틱봉 당일청산 시스템에서
-> 전일 장중(또는 종가기준) 볼린저밴드의 상단부터 하단까지의 변폭이 3.0PT 이하인 경우에만
당일진입을 허용하고, 3.0PT 이상인 경우에는 당일진입 금지하는 진입제한 수식
수식요청 드립이다.
#진입수식(예제)
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
If CrossUP(value1, value2) Then{
Buy();
}
If CrossDown(value1, value2) Then{
Sell();
}
SetStopEndofday(150000);
감사합니다.
2018-02-09
241
글번호 116493