커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1501
글번호 230811
답변완료
문의 드립니다
input : StartTime(140000),EndTime(50000);
input : 익절틱수(0),손절틱수(50);
var : Tcond(False),entry(0);
Variables: Mom(0);
Var : N1(0),dayPl(0),당일수익(400),당일손실(100),Xcond(false);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
{
Tcond = False;
}
if Tcond == true Then
{
if L ==lowest(L,2) and highest(H,2) >= lowest(L,2)+PriceScale*1 Then
{
Buy("b",AtStop,(highest(H,2)+lowest(L,2))/2);
}
if MarketPosition == 1 and BarsSinceEntry == 8 Then
ExitShort();
}
if H == highest(H,2) and lowest(L,2) <= highest(H,2)+PriceScale*1 Then
{
Sell("s",AtStop,(lowest(L,2)+highest(H,2))/2);
}
if MarketPosition == -1 and BarsSinceEntry == 8 Then
ExitLong();
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
5,20 이동평균선 역배열에 매수 진입금지
5,20 이동평균선 정배열에 매도 진입금지를 추가하고자 합니다.
2023-10-20
848
글번호 173236
답변완료
시스템 실행 시 결과가 나오지 않습니다.
아래 시스템으로 실행시 결과가 나오지 않습니다.
번거로우시더라도 확인 부탁드리겠습니다.
고맙습니다..
[시스템]
Input :
SampleLength(20 ) ,
FastLength(10),
SlowLength(20) ;
Var :
Z_ValuePrice(0),
PriceOsc(0);
Z_ValuePrice =standardize(Close,SampleLength,1);
PriceOsc = PriceOscillatorTS(Z_ValuePrice , FastLength, SlowLength);
If PriceOsc < 0 and PriceOsc[1] > 0
And FastLength < SlowLength
Then
Sell ( "tPOsc(z)SE" ,OnClose,DEf ) ;
If PriceOsc > 0 and PriceOsc[1] < 0
And FastLength < SlowLength
Then
Buy ( "tPOsc(z)LE" ,OnClose, DEf ) ;
[함수 : PriceOscillatorTS]
inputs:
Price( numericseries ),
FastLength( numericsimple ),
SlowLength( numericsimple ) ;
PriceOscillatorTS = AverageFC( Price, FastLength ) - AverageFC( Price, SlowLength ) ;
2023-10-19
1103
글번호 173235
답변완료
부탁드립니다
수고하십니다
아래수식이 어디가 잘못이있나요
var : 피봇포인트(0), 1지지(0), 1저항(0), 2지지(0), 2저항(0),연장선두께(1),연장선두께1(2);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0);
var: tx3(0),tx4(0),tx5(0),tx6(0),tx7(0);
피봇포인트 = (DayHigh(1)+DayLow(1)+DayClose(1))/3;
1지지 = 2*피봇포인트-DayHigh(1);
1저항 = 2*피봇포인트-DayLow(1);
2지지 = 피봇포인트-DayHigh(1)+DayLow(1);
2저항 = 피봇포인트+DayHigh(1)-DayLow(1);
if DataCompress <= 2 and bdate != bdate[1] then
{
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(sdate[1],stime[1],1지지,sdate,stime,1지지);
TL2 = TL_New(sdate[1],stime[1],1저항,sdate,stime,1저항);
TL3 = TL_New(sdate[1],stime[1],2지지,sdate,stime,2지지);
TL4 = TL_New(sdate[1],stime[1],2저항,sdate,stime,2저항);
TL5 = TL_New(sdate[1],stime[1],피봇포인트,sdate,stime,피봇포인트);
TL_SetExtRight(TL1,true);
TL_SetExtRight(TL2,true);
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
TL_SetExtRight(TL5,true);
Text_Delete(tx3);
Text_Delete(tx4);
Text_Delete(tx5);
Text_Delete(tx6);
Text_Delete(tx7);
tx3 = Text_New(sDate,sTime,피봇포인트," (피봇포인트):"+NumToStr(피봇포인트,2));
tx4 = Text_New(sDate,sTime,1지지," 1지지:"+NumToStr(1지지,2));
tx5 = Text_New(sDate,sTime,1저항," 1저항:"+NumToStr(1저항,2));
tx6 = Text_New(sDate,sTime,2지지," 2지지:"+NumToStr(2지지,2));
tx7 = Text_New(sDate,sTime,2저항, 2저항:"+NumToStr(2저항,2));
Text_SetStyle(tx3,0,1);
Text_SetStyle(tx4,0,1);
Text_SetStyle(tx5,0,1);
Text_SetStyle(tx6,0,1);
Text_SetStyle(tx7,0,1);
#연장선 색상
TL_SetColor(TL1,RED);
TL_SetColor(TL2,BLUE);
TL_SetColor(TL3,RED);
TL_SetColor(TL4,BLUE);
TL_SetColor(TL5,YelloW);
#연장선 두께
TL_SetSize(TL1,연장선두께);
TL_SetSize(TL2,연장선두께);
TL_SetSize(TL3,연장선두께);
TL_SetSize(TL4,연장선두께);
TL_SetSize(TL5,연장선두께1);
}
2023-10-19
979
글번호 173234
답변완료
함수요청
안녕하세요?
아래 글번호 84183번 재질문입니다.
웹에서 서치한 BOX 차트의 공식입니다.
스크립트에 반영 부탁드립니다.
ma = n 일 이동평균
upper = (종가 - ma) 가 양인 값들로 이루어진 배열(오른 날을 nPlus)
lower = (종가 - ma) 가 음인 값들의 배열(내린 날을 nMinus)
upperMean = upper의 nPlus 평균
lowerMean = lower의 nMinus 평균
upperstd = upper의 nPlus 표준편차
lowerstd = lower의 nMinus 표준편차
box 챠트의 상위선 = ma + upperMean + (2 * upperstd)
box 챠트의 하위선 = ma + upperbox 챠트의 하위선 = ma + lowerMean - (2 * lowerstd)
2023-10-19
1025
글번호 173233
답변완료
OBV 문의 드립니다.
도움 감사드립니다.
예스스탁하고 키움에서 제공하는 OBV 형식이 달라서 키움것을 구현하려면 어떻게 변경해야 하나요? OBV의 기간값을 조정해서 사용하고 싶어서요.
아래가 키움의 OBV 수식 입니다.
수식1: OBV()
수식2: MA(OBV(), Signal, 이평종류)
키움 OBV 함수
sum(if(C>C(1),v,if(C<C(1),-v,0)))
2023-10-19
1360
글번호 173231
답변완료
자동매도수식 검토 및 MessageList오류여부 검토 부탁드립니다.
수고많으십니다.
Main.MessageList("na2=",Account7);
Main.MessageList("na1=",woo,"계좌=",num);
var num = Account7.Balance.number;
질문입니다.
na2에서 Account7은 계좌번호가 표시가 되는데
na1에서 계좌번호를 변수로 저장한 num으로 넣으면 undefined 에러가 발생합니다.
수식검토 부탁드립니다.
// 전역변수선언
var exit7;
var Position7;
var Snum7;
var Bnum7;
var BuyFill7;
var SellFill7;
var ID7,ID8,Num7,Num8;
var Xcode7,Xpst7,Xvo7,XID7;
var Xcode8,Xpst8,Xvo8,XID8;
//스팟 시작
function Main_OnStart()
{
Main.SetTimer(1, 10000);
exit7 = false;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
if (exit7 == false)
{
Account7.SetBalanceItem(MD7, 0);
var vo7 = Account7.Balance.count; //수량
var po7 = Account7.Balance.position; //포지션방향(매도1, 매수2)
var cu7 = Account7.Balance.current; //현재가
var num = Account7.Balance.number;
var woo = C7.GetIndicatorData("진입1", 1, 0);
Main.MessageList("na2=",Account7);
Main.MessageList("na1=",woo,"계좌=",num);
}
}
if ( po7 == 1 && Cu7 >=woo) //매도포지션이고 현재가격이 지표 "진입" 값과 같으면
{
exit7 = true; //첫번째 SetTimer 시작
//전량 시장가로 매수주문(청산) 및 ID7에 주문아이디 저장
ID7 = Account7.OrderBuy(MD7,vo7, 0, 1);
}
if (po7 == 2 && Cu7 <= woo) //매수포지션이고 현재가격이 지표"진입" 값과 같거나 작으면
{
//전량 시장가로 매도주문(청산) 및 ID7에 주문아이디 저장
ID7 = Account7.OrderSell(MD7,vo7, 0, 1);
}
//2번 타이머
if (nEventID == 2) //두번째 SetTimer 시작
{
Main.KillTimer(2);
//Num7주문번호의 미체결 객체 셋팅
Account7.SetUnfillOrderNumber(Num7);
//미체결 수량이 있으면
if (Account7.Unfill.count > 0)
{
Xcode7 = Account7.Unfill.code; //종목코드 저장
Xpst7 = Account7.Unfill.orderKind; //주문구분 저장
Xvo7 = Account7.Unfill.count; //주문수량 저장
XID7 = Account7.OrderCancel(Num7); //취소주문, 주문아이디 XID7 저장
}
}
//3번 타이머
if (nEventID == 3)
{
Main.KillTimer(3);
//Num8주문번호 미체결 객체 셋팅
Account7.SetUnfillOrderNumber(Num8);
if (Account7.Unfill.count > 0)
{
Xcode8 = Account7.Unfill.code;
Xpst8 = Account7.Unfill.orderKind;
Xvo8 = Account7.Unfill.count;
XID8 = Account7.OrderCancel(Num8);
}
}
//주문응답
function Main_OnOrderResponse(OrderResponse)
{
//주문응답 아이디(orderID)가 ID7(최초주문아이디)과 같으면
if (OrderResponse.orderID == ID7)
{
//주문번호 저장
Num7 = OrderResponse.orderNum;
Main.SetTimer(2, 5000);
}
//주문응답 아이디가 ID8과 같으면
if (OrderResponse.orderID == ID8)
{
Num8 = OrderResponse.orderNum;
Main.SetTimer(3, 5000);
}
//재주문
//주문응답 아이디가 XID7과 같으면
//시장가로 재주문
if (OrderResponse.orderID == XID7)
{
if (Xpst7== 1)
{
Account7.OrderSell(Xcod7, Xvo7, 0, 1);
}
if (Xpst7== 2)
{
Account7.OrderBuy(Xcod7, Xvo7, 0, 1);
}
}
//주문응답 아이디가 XID8과 같으면
//시장가로 재주문
if (OrderResponse.orderID == XID8)
{
if (Xpst8 == 1)
{
Account7.OrderSell(Xcod8, Xvo8, 0, 1);
}
if (Xpst8 == 2)
{
Account7.OrderBuy(Xcod8, Xvo8, 0, 1);
}
}
}
}
감사합니다.
2023-10-19
1162
글번호 173224
답변완료
문의드립니다.
수고많으십니다.
국선,해선 매매에서 금액이나 틱(포인트)등으로 손실을 제한하고 싶습니다.
예를들어 50만원이나 100틱만큼 평가손실이 되면 자동으로 청산되고 해당일은 더이상 거래가 안되게하는 수식을 원합니다.
미리 노고에 감사드립니다~
2023-10-19
995
글번호 173220
답변완료
선물 시스템 문의 드립니다.
안녕하세요..항상 많은 도움 감사드립니다.
시스템 거래에 대해서 2가지 궁금한 사항이 있어서 문의 드립니다.
1번 : 나스닥 선물 거래 시간을 오전 10시부터 다음날 오전7시까지 즉 오전7시부터 오전10시까지 3시간을 제외한 시간을 거래하고 싶은데요. stime 설정을 어떻게 해야 하나요?
2번 : A,B,C,D 네 가지 이평선이 수렴한 것을 구현하고 싶은데요. 수렴정도를 제가 %(퍼센트)를 조정할 수 있게 구현하려면 어떻게 해야 하나요?
2023-10-19
2163
글번호 173215
답변완료
문의드립니다.
안녕하세요~
변환 부탁드립니다.
매집간격 - 2.0 / D1 - 1 / Period1 - 60 / Percent1 - 100
기간=매집간격*20;
A1=지수평균((highest(종가,(기간-기간/2))+highest(종가,기간))/2,기간);
A2=D1*stdev((저가+고가+종가)/3,기간);
K=if(종가>시가,1-(abs(종가-시가)/abs(highest((종가-시가),기간))),1);
a=A1+K*A2;
(CrossUp(c(5),a)
or CrossUp(c(4),a)
or CrossUp(c(3),a)
or CrossUp(c(2),a))
and
Disparity(Period1) <= Percent1
감기조심하세요~
2023-10-19
1037
글번호 173214