커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5502
글번호 230811
답변완료
문의드립니다.
안녕하세요? 수고가 많으세요.
첨부한 엑셀파일에 A,B,C 종목은 종가를 기준으로 하여 300일 데이터를 작성 하였습니다.
(종목A는 CJ, 종목B는 CJ CGV, 종목C는 CJ제일제당 이고 주식선물, 수정하지 않은 데이터입니다.)
A는 Data1, B는 Data2, C는 Data3로 하여 종목 B와 종목 C를 합성하고 새로운 주가 데이터를 만들고 (합성종목(B와 C)의 초기값은 A종목의 첫번째 값(Cell B5)) "e" (Cell J)의 값을 생성하여 보조지표로 작성 할 예정 입니다.
엑셀파일에 빨간색으로 표시된 부분(Cell H2, Cell E5, Cell F5)은 외부 입력변수로 처리 하겠습니다.
Cell E와 Cell F의 수익률은 각각 종목 B와 종목 C의 Log수익률(Ln(나중값) - Ln(이전값))입니다.
Cell G의 합성 수익률은 종목 B와 C의 Log수익률에 가중치(Cell E5, F5)를 곱하여 생성합니다.
Cell H의 합성주가는 Cell G에서 생성된 합성 수익률을 가지고 합성주가를 생성합니다.((1+합성수익률(Cell G))*이전 합성주가).
Cell I의 Spread는 종목A(Cell B)의 Log값에 합성주가(Cell H)와 Beta(Cell H2)를 곱하여 뺀값입니다( Ln(종목A) - Ln(합성주가) * Beta)
Cell J2의 균형점(귤색)은 Cell I의 Spread 전체값의 평균입니다.
Cell J의 "e" 값은 Spread값에 균형점을 뺀값입니다.(spread - 균형점)
수고스러우시겠지만 수식 작성좀 부탁 드립니다.
2019-10-22
250
글번호 133032
답변완료
종목검색식 부탁드립니다
볼린져밴드(20.2)상단선이 엔밸로프(20.5) 상단선을 골든크로스 하는 종목검색식 부탁드립니다
2019-10-22
199
글번호 133031
답변완료
부탁드립니다.
안녕하세요 작성해주신 수식 감사합니다.
몇가지만 추가 부탁드립니다.
최초 ★(누적 -120) 이후 익절로 인한 SetStopTrailing 위 tx 가 "0"이 될때 까지
매수매도(B1, S1, B2, S2) 위에 ■를 표시 하고 싶습니다.
"0"이후 다시 ★ 발생되면 ■ 표시 반복합니다.
목적은 스팟을 이용하여 "■"표시된 매수매도(B1, S1, B2, S2)만 인식하여 진입하기 위함입니다.
그럼 부탁드립니다.
예)
B2 --> SetStopTrailing : 0
B1 --> SetStopLoss : -40
B2 --> SetStopLoss : -80
S1 --> SetStopLoss : -120 ★ # -120시작, 매수 매도에 ■ 표시
B2 ■ --> SetStopLoss : -160 ★
B1 ■ --> SetStopTrailing :-130 ★
B2 ■ --> SetStopTrailing :-100
S1 ■ --> SetStopTrailing :-70
B1 ■ --> SetStopTrailing :-40
B1 ■ --> SetStopTrailing :-10
S2 ■ --> SetStopTrailing : 0 # 0 끝, 다음 매수 매도에 ■ 표시 종료
B1 --> SetStopTrailing : -40
B2 --> SetStopLoss : -80
S1 --> SetStopLoss : -120 ★ # -120시작, 매수 매도에 ■ 표시
B2 ■
Input : 손절(20),익절(15),익절하락(3);
input : P1(30), P2(120), p3(240);
input : StartTime(090000),EndTime(050000);
var : tx(0),X(false);
var: Tcond(false);
var1 = ma(C, P1);
var2 = ma(C, P2);
var3 = ma(C, P3);
######## 진입제한
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime)Then
{
Tcond = true;
}
if (sdate != sdate[1] and stime >= Endtime) or
(sdate == sdate[1] and stime >= Endtime and stime[1] < Endtime)Then
{
Tcond = false;
}
## 진입
if Tcond == true and marketposition == 0
and crossup(var1,var2) Then {
buy("B1");
}
if Tcond == true and marketposition == 0
and crossdown(var1,var2) Then {
sell("S1");
}
if Tcond == true and marketposition == 0
and crossup(var2,var3) and var3[1] < var3 Then {
buy("B2");
}
if Tcond == true and marketposition == 0
and crossdown(var3,var4) and var3[1] > var3 Then {
sell("S2");
}
## 청산
if MarketPosition == 1 then {
SetStopTrailing(익절하락,익절,PointStop);
SetStopLoss(손절,PointStop);
}
if MarketPosition == -1 Then {
SetStopTrailing(익절하락,익절,PointStop);
SetStopLoss(손절,PointStop);
}
if ((sdate != sdate[1] and stime >= Endtime) or
(sdate == sdate[1] and stime >= Endtime and stime[1] < Endtime)) Then {
if MarketPosition == 1 Then {
ExitLong("BE6");
}
if MarketPosition == -1 Then {
ExitShort("SE6");
}
}
var : tt(0);
if TotalTrades > TotalTrades[1] then
{
if IsExitName("StopLoss",1) == true then
{
tt = tt - 40;
if tt >= 0 Then
tt = 0;
if tt > -120 then
{
tx = Text_New(ExitDate(1),ExitTime(1),h[BarsSinceExit(1)],NumToStr(tt,0));
Text_SetSize(tx,20);
}
else
{
tx = Text_New(ExitDate(1),ExitTime(1),h[BarsSinceExit(1)],NumToStr(tt,0)+"★");
Text_SetSize(tx,20);
}
}
if IsExitName("StopTrailing",1) == true then
{
tt = tt + 30;
if tt >= 0 Then
{
tt = 0;
X = true;
}
tx = Text_New(ExitDate(1),ExitTime(1),h[BarsSinceExit(1)],NumToStr(tt,0));
Text_SetSize(tx,20);
Text_Setstyle(tx,2,2);
//Text_SetSize 폰트 사이즈
//Text_Setstyle 좌우상하 정렬
}
}
2019-10-22
195
글번호 133030
답변완료
검색시 기본 봉수
예스트레이더 검색기에서 검색시 검색기간에서
일,분으로 검색시 검색에 필요한 기본 봉수는 몇개가 적당한가요?
분봉이나 일봉이 봉수차이가 있나요?
아님 500봉까지 많이 하는게 좋은건가요?
2019-10-22
218
글번호 133029
답변완료
검색식 부탁드립니다.
분봉상 아래선 돌파시 검색식 문의드립니다.
(max(nPredayhigh(25),nPredayhigh(24),nPredayhigh(23),
nPredayhigh(22),nPredayhigh(21),nPredayhigh(20),nPredayhigh(19),
nPredayhigh(18),nPredayhigh(17),nPredayhigh(16),nPredayhigh(15),
nPredayhigh(14),nPredayhigh(13),nPredayhigh(12),nPredayhigh(11),
nPredayhigh(10),nPredayhigh(9),nPredayhigh(8),nPredayhigh(7),
nPredayhigh(6),nPredayhigh(5),nPredayhigh(4),nPredayhigh(3),
nPredayhigh(2),nPredayhigh(1),PreDayHigh(),DayHigh())+min(nPredaylow(25),nPredaylow(24),nPredaylow(23),
nPredaylow(22),nPredaylow(21),nPredaylow(20),nPredaylow(19),
nPredaylow(18),nPredaylow(17),nPredaylow(16),nPredaylow(15),
nPredaylow(14),nPredaylow(13),nPredaylow(12),nPredaylow(11),
nPredaylow(10),nPredaylow(9),nPredaylow(8),nPredaylow(7),
nPredaylow(6),nPredaylow(5),nPredaylow(4),nPredaylow(3),
nPredaylow(2),nPredaylow(1),PreDayLow(),DayLow()))/2
2019-10-22
203
글번호 133028
답변완료
답해주신 수식 문의 드립니다
if MarketPosition == 0 Then
buy("b",AtStop,C+PriceScale*10,10);
=> 위에서 AtStop뒤에 C는 무언가요?
buy("b"에서 b에 종목 번호를 넣으면 되나요?
PriceScale*10,10 =>는 10호가,10주
이렇게 되는 건가요?
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
var1 = LatestEntryPrice(0);
if CurrentContracts < CurrentContracts[1] Then
var1 = LatestExitPrice(0);
위 if 문은 10주 매수한 가격에서 10호가 상승하면
추가 10주매수하고 매수한 가격에서 10호가 하락하면
아래의 ExitLong로 매도 하란 말인가요?
bb와bx는 종목인가요 매수할 금액인가요?
종목명은 숫자로 넣는거 같던데 어느 부분에 있는건지?
너무 기본이 없어 어찌 여쭤야 될지 모르겠습니다
그럼에도 무모한 질문에
친절히 답변해 주셔서 감사합니다
buy("bb",AtStop,var1+PriceScale*40,10);
ExitLong("bx",AtStop,var1-PriceScale*10,"",10,2);
}
2019-10-22
178
글번호 133027
답변완료
Print에서 시간부분 개선 요청드려요
안녕하세요?
Print(saveFilename,",%s,%f",SymbolCode,Value1);
위 Print관련 밤 12시의 시간대 값이 아래와 같이 나옵니다.
엑셀에서 불러오면 시간으로 인식이 안됩니다.
엑셀에서 시간으로 인식할수 있도록 시간출력부분 개선을 요청드립니다.
2019-10-09 23:58:00 ,CL_1,52.490000
2019-10-09 23:59:00 ,CL_1,52.490000
2019-10-10 : : 0 ,CL_1,52.490000
2019-10-10 : 1:00 ,CL_1,52.490000
2019-10-10 : 2:00 ,CL_1,52.500000
2019-10-10 : 3:00 ,CL_1,52.500000
2019-10-10 : 4:00 ,CL_1,52.500000
2019-10-10 : 5:00 ,CL_1,52.500000
2019-10-10 : 6:00 ,CL_1,52.500000
2019-10-10 : 7:00 ,CL_1,52.510000
2019-10-10 : 8:00 ,CL_1,52.500000
2019-10-10 : 9:00 ,CL_1,52.490000
2019-10-10 :10:00 ,CL_1,52.510000
2019-10-10 :11:00 ,CL_1,52.500000
2019-10-10 :12:00 ,CL_1,52.510000
2019-10-10 :13:00 ,CL_1,52.530000
2019-10-22
196
글번호 133026
답변완료
새로운 봉일때 1회만 실행하고자 합니다
안녕하세요?
지표에 아래와 같이 넣었는데-
새로운봉이 나타나면 1번만 체크하고자 합니다.
oldIndex에 최근 봉번호를 가지고 있고 새로운 봉인지 비교하게 하였습니다.
헌테 같은봉에서 틱정보가 수신되면 oldIndex가 값이 안바뀌어 있고~
그래서 실행이 자꾸 됩니다.
변수가 이전값을 잘 기억 못하는 건가요?
어떻게 조치해야 하나요?
var : oldIndex(0), nowIndex(0);
nowIndex = BarIndex;
MessageLog ("시작 old=%.f ", oldIndex);
if oldIndex<>nowIndex Then
{
//-- 요기 봉당 1회만 실행
oldIndex = nowIndex;
}
MessageLog ("끝 old=%.f ", oldIndex);
-----------------------------------
디버깅 결과 예)
시작 old=149
끝 old=150
시작 old=149
끝 old=150
시작 old=149
끝 old=150
시작 old=150
끝 old=151
시작 old=150
끝 old=151
2019-10-22
218
글번호 133025
답변완료
수식의뢰드립니다.
안녕하세요!
항상 도움을 주셔서 감사드립니다.
아래 수식은 일전에 만들어 주신 것입니다.
오실레이터가 0선 위에 있으면 봉챠트에 분홍색선이,
0선 아래 이면 초록색선에 나타나도록 부탁드립니다.
선이 나타나는 횟수는 상관없습니다.
참고 그림 첨부합니다.
부탁드립니다.
var1 = Bids-asks;
if var1 >= 0 then
plot1(var1,"총잔량비",RED);
Else
plot1(var1,"총잔량비",blue);
PlotBaseLine1(0);
2019-10-23
205
글번호 133024