커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1842
글번호 230811
답변완료
건의 드립니다.
항상 감사드리며 예스트레이더와 이용자에게 도움이 될 만한
건의를 드립니다. 개발자 분들에게는 다소 번거로울 수 있겠지만
진지하게 검토 부탁드립니다.
첫째. 자동정정주문
자동정정 주문은 슬리피지를 절반은 감소 시켜 주는 효과가 있는 매우
유용한 기능입니다. 그러나 더 유용해 질 수 있습니다.
현재 예스자동정정주문은 주문 이후의 자동정정 기능만 있는데요
여기에 주문 시점에 이용자가 주문 가격을 선택하는 기능을 추가하면
매우 요긴하지 않을까 생각합니다. 즉 사용자가격설정을 추가했으면
하는 겁니다. 현재는 사용자가격설정과 자동정정기능이 별도로 구분되어
있는데요. 사용자가격설정의 틱증감 기능을 예스자동정정 기능에 추가가
된다면 지금보다 더 효과적인 슬리피지 감소 효과를 가져 올 수 있습니다.
둘째. 시스템매매설정의 부가기능에서 진입주문지연 기능입니다.
현재는 진입주문지연을 설정하면 일정 시간이 지난 후에 주문이 현재가로
나가는 것으로 알고 있습니다.
그런데 현재가 뿐만 아니라 신호가나 시장가로 나갈 수 있도록 선택 기능을
추가한다면 이용자에게 큰 도움이 될 것으로 봅니다.
예를 들어 저 같은 경우는 교차 시스템을 이용중입니다. 교차 시스템이기
때문에 1계약 매매하기 위해서 원칙적으로는 2계약 가능한 증거금이 필요합니다.
그러나 증거금을 최대한으로 이용하고 싶거나, 증거금이 2계약이 되지 않을 때는
진입주문지연 기능을 요긴하게 사용하고 있습니다.
예를 들어 청산은 시장가로 하고, 진입은 2초 후에 하도록 해서 증거금 부족으로
진입거절이 되지 않도록 하고 있습니다. 궁여지책이지만 그래도 진입주문지연
기능이 있어 매매가 가능합니다. 그런데 문제는 2초후에 들어가는 주문이
현재가 밖에 없다보니 거의 대부분 신호가 보다 불리하게 체결되는 경우가
많았습니다. 움직임이 클 때는 서터틱이나 차이가 생기기도 합니다. 귀사 개발자가
처음 만들때 체결이 되지 않는 경우를 예방하려는 의도에서 현재가로 주문이
나가도록 한 것 같은데요. 내가 오랫동안 이용한 경험으로는 신호가로 해도 거의
대부분 체결이 됩니다. 캔들 하나가 이전 캔들과 거의 대부분 겹치기 때문에
신호가로 주문 나가서 그 자리에 있어도 대부분 체결이 되더라는 겁니다.
그러나 2초 후의 주문 나가는 순간은 출렁이는 순간을 따라 가는 것이라서 간혹
유리한 경우도 있지만 거의 대부분 불리하게 체결이 됩니다. 그래서 아주 간혹
체결이 되지 않더라도 매번 발생하는 슬리피지의 누적에 비하면 간혹 체결이 되지
않아 발생하는 손실이 훨씬 적습니다. 물론 이것에 대한 선택은 당연히 이용자가
하는 것이고, 책임도 이용자의 것입니다.
예스스탁에서는 가능한 이용자가 선택할 수 있는 폭을 넓혀 주시는 것이, 예스트레이
더의 성능과 기능 향상에 도움이 될 것이라 생각합니다.
세번째. 코스피200 야간 선물을 이용할 수 있게 해 주세요.
나는 우직하게 하이투자증권의 예스트레이더만 이용하다 보니 코스피200 cme야간
선물이 재개된지도 모르고 있었습니다.
그런데 야간 선물이 중요한 것은, 야간 선물을 이용하고 안 하고를 떠나서
매일 아침 갭이 극도로 발생하여 챠트 왜곡이 오전 한, 두시간 동안 지속이 된다는
겁니다. 과거 야간시장이 있을 때는 챠트속성의 복합 챠트를 선택해서 그 왜곡이
많이 감소했는데요. 지금 2년을 지나면서 보니 너무 왜곡이 발생합니다.
더우기 요즘 같은 변동성이 큰 장에서 이런 왜곡이 커서 시스템이 잘 맞지를 않습니다
야간선물을 서비스하지 않는 사정이 있겠지만, 전향적으로 고려해 주시기를
간절히 부탁드립니다. 우리 같은 전업 투자자들은 챠트가 정말 우리 목숨 줄
같은 겁니다. 부탁드립니다. 그리고 혹시 예스트레이더 서비스 하는 증권사중에서
야간 선물이 가능한 곳이 있는지도 알려 주시면 감사하겠습니다.
2022-02-25
1211
글번호 156767
답변완료
수식문의합니다~~
수고하십니다.
1. 아래1 식에서
- 다시 돌려보아도 Bcnt, MarketPosition 이 메세지로그에서 0 발생, 이유가 무엇인지요?
- 매수 연속3회 불가, 매도 연속3회 불가로 수식 수정 부탁드립니다.
== 아래1 ==
Input : 청산P(15),청산L(15);
var : SmaA(0),SmaB(0);
SmaA = ma(C,5);
SmaB = ma(C,20);
var : Bcnt(0);
if Bdate != Bdate[1] Then
Bcnt = 0;
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
Bcnt+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
Bcnt = 0;
//진입청산
if stime > 093500 and stime <163000 and
Bcnt < 3 then
{
//매수
If MarketPosition == 0 and
c > DayOpen and
SmaA>SmaA[1] Then
Buy("B");
If (c>(EntryPrice+청산P) or c <(EntryPrice-청산L)) and
MarketPosition == 1 Then
ExitLong("ELB");
//매도
If MarketPosition == 0 and
c < DayOpen and
SmaA<SmaA[1] Then
Sell("S");
If (c<(EntryPrice-청산P) or c >(EntryPrice+청산L)) and
MarketPosition == -1 Then
ExitShort("ELS");
}
2. 아래2에서 조건문( if SwingHigh(1,mav,Left,Right,Left+Right+1) != -1 Then) 을
사용하는 이유가 무엇인지요?
== 아래2 ==
안녕하세요
예스스탁입니다.
1
H1이나 L1은 3봉전에 이평값을 저장하는 것이 맞습니다.
H2와 L2는 직전 조건만족시의 가격입니다.
L2 = L1[1]이라고 해서 4봉전의 이평가격이 아닙니다.
L1[1]은 L1에 기존에(한봉전) 저장되어 있던 가격을 가져와 L2에 저장한다는 의미입니다.
즉 새롭게 저장해야 할 가격이 생기면
이전까지 저장되어 있던 값을 다른 변수로 옮긴다는 내용입니다.
#스윙하이가 발생하면
if SwingHigh(1,mav,Left,Right,Left+Right+1) != -1 Then{
#H1에 Right봉전 이평값을 저장
H1 = mav[right];
#H2에는 H1의 한봉전까지 저장되어 있던 가격을 가져와 저장
H2 = H1[1];
if H1 < H2 and H2 > 0 Then
sell();
}
#스윙하이가 발생하면
if SwingLow(1,mav,Left,Right,Left+Right+1) != -1 Then{
#L1에 Right봉전 이평값을 저장
L1 = mav[right];
#L2에 L1의 한봉전까지 저장되어 있던 가격을 가져와 저장
L2 = L1[1];
if L1 > L2 and L2 > 0 Then
Buy();
}
3. 캔들이 10시30분 초과시는 c > 103000으로 작성하는데
이것을 105000으로 작성하거나 109000으로 작성하면 프로그램이 몇시로 인식하나요?
예스 덕분에 2번째 자동매매 실투 도전예정입니다.
항상 감사드립니다~~
2022-02-26
1189
글번호 156766
답변완료
예스스탁 관계자 분에게
바쁘신 중에도
성의껏 수식 만들어주셔서 감사합니다 .
많은 도움이 됐습니다 .
감사한 마음 전합니다 .
2022-02-25
976
글번호 156764
답변완료
수식작성 부탁드립니다
안녕하세요?
항상 도움주셔서 감사드립니다
또 한번 어려운 부탁 드립니다
아래 조건을 만족하는 신호 부탁드립니다(틱차트 사용)
1. 매수신호
MACD(12,26)가 상승하고, 선물호가잔량 5이평선이 상승하고, 5이평선이 상승할 때
1) 캔들의 몸통의 중심이 20이평선 위이 있거나
2) 20이평 위에서 첫 양봉(도찌캔들 포함) 캔들을 만들 때
위 2가지 지정한 조건을 최초로 만족하는 캔들에 매수신호
2. 매도신호
MACD(12,26)가 하락하고, 선물호가잔량 5이평선이 하락하고, 5이평선이 하락할 때
1) 캔들의 몸통의 중심이 20이평선 아래에 있거나
2) 20이평 아래에서 첫 음봉(도찌캔들 포함) 캔들을 만들 때
위 2가지 지정한 조건을 최초로 만족하는 캔들에 매도신호
3. MACD 보조지표에 매수매도신를 나타낼 수 있는 방법이 있는지요?
60선위에서 상승에서 하락으로 전환시 매도신호
60선 아래서 하락에서 상승으로 전환시 매수신호
-0.15<MACD<+0.15 사이에서 방향전환시 신호 발생하지 않음
꼭 부탁 드립니다
감사합니다
2022-02-25
1194
글번호 156759
답변완료
함수 한번더 부탁드립니다
아래 인풋변수에서 period의 변수를 바꾼다면
어디어디 변수를 77로 바꿔야하는지 궁금합니다
input : ntime(5),Period(77);
Vars: HH(0), LL(0) ,center(0), LongCondition(False),ShortCondition(False),ExitLongConditon(False), ExitShortCondition(False);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
Array : tH[100](0),tL[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
tH[0] = H;
tL[0] = L;
For cnt = 1 to 99
{
tH[cnt] = tH[cnt-1][1];
tL[cnt] = tL[cnt-1][1];
}
}
if tH[0] > 0 and H > tH[0] Then
tH[0] = H;
if tL[0] > 0 and L < tL[0] Then
tL[0] = L;
if tH[Period] > 0 and tL[Period] > 0 Then
{
HH = 0;
LL = 0;
For cnt = 1 to Period
{
if HH == 0 or (HH > 0 and tH[cnt] > HH) Then
HH = tH[cnt];
if LL == 0 or (LL > 0 and tL[cnt] < LL) Then
LL = tL[cnt];
}
center= (HH+LL)/2 ;
If MarketPosition <= 0 and C < HH Then
Begin
Buy("매수",AtStop,HH);
End;
If MarketPosition == 1 and C > center Then
Begin
ExitLong("매수청산",AtStop,center);
End;
If MarketPosition >= 0 and C > LL Then
Begin
Sell("매도",AtStop,LL);
End;
If MarketPosition == -1 and C < center Then
Begin
ExitShort("매도청산",AtStop,center);
End;
}
}
2022-02-25
1261
글번호 156757
회원 님에 의해서 삭제되었습니다.
2022-02-25
6
글번호 156753
답변완료
수식문의드립니다
아래 조건의 수식을 5분봉 차트에서 사용하고있었다면
1분봉 차트에서 5분봉의 아래와같은 수식의 데이터를 불러오고 싶습니다
예를들어
1분봉 차트에서 5분봉차트 N개의 캔들의 고점을 돌파시 진입
1분봉 차트에서 5분봉차트 N개의 캔들의 저점을 돌파시 진입
과 같은 함수를 만들고싶습니다
input : Period(1);
Vars: HH(0), LL(0) ,center(0), LongCondition(False),ShortCondition(False),ExitLongConditon(False), ExitShortCondition(False);
HH = Highest(high, Period);
LL = Lowest(low, Period);
center= (HH+LL)/2 ;
If MarketPosition <= 0 and C < HH Then
Begin
Buy("매수",AtStop,HH);
End;
If MarketPosition == 1 and C > center Then
Begin
ExitLong("매수청산",AtStop,center);
End;
If MarketPosition >= 0 and C > LL Then
Begin
Sell("매도",AtStop,LL);
End;
If MarketPosition == -1 and C < center Then
Begin
ExitShort("매도청산",AtStop,center);
End;
2022-02-25
944
글번호 156752
회원 님에 의해서 삭제되었습니다.
2022-02-25
233
글번호 156750
답변완료
수식문의합니다~~
안녕하세요?
1. 아래1 수식을 적용하니 하루에 여러번 진입청산이 되는데
메세지로그에는 MarketPositio 과 Bcnt가 0으로 나옵니다
MessageLoG("%.2f",MarketPosition);
MessageLoG("%.2f",Bcntup);
2. 아래2 수식에서 "if SwingLow(1,mav,Left,Right,Left+Right+1) != -1 Then"
이 무엇인지요?
------아래1----------
메세지
안녕하세요
예스스탁입니다.
var : Bcnt(0);
if Bdate != Bdate[1] Then
Bcnt = 0;
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
Bcnt+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
Bcnt = 0;
if Bcnt < 3 and 매수조건 Then
Buy();
연속적으로 3번 매수 중지하는 식 부탁드립니다.
-아래2-----
input : Left(3),right(3);
var : mav(0),H1(0),H2(0),L1(0),L2(0);
mav = ma(C,4);
if SwingLow(1,mav,Left,Right,Left+Right+1) != -1 Then
{
L1 = mav[right];
L2 = L1[1];
}
2022-02-25
1042
글번호 156748