커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3457
글번호 230811
답변완료
수식 작성 부탁드립니다.
안녕하세요.
피라미딩 기법으로 수식을 작성하고 싶습니다.
1. 매매종목 : 해외선물(Micro Mini NASDAQ100)(5분봉 기준)
2. 매매 예시
1) 최초 시장가 1계약 매수
2) 매수와 동시에 손절(-50포인트)만 설정
3) 최초 매수한 가격 기준으로 수익 진행시 +50포인트마다 1계약씩 추가 매수
ex. 13,000Pt에 1계약 최초 시장가 매수 -> 13,050 Pt에 1계약 추가 매수
-> 13,100 Pt에 1계약 추가 매수 ....
4) 각 추가매수한 계약별로 진입할 때마다 손절(-50포인트) 설정
5) 추가 매수후 손절되고, 그 이후 진행되는 봉에서 직전 가격을 또 돌파하면 그때
또다시 진입
ex. 13,100 Pt에 매수 후 13,050 Pt에 손절이 된 후 다시 13,100 Pt에 이르면
또 1계약 추가 매수로 진입
6) 청산은 장 종료시에 시장가로 일괄 청산 설정(익일 05:55분)
이렇게 수식을 만들어 주시면 고맙겠습니다.
2021-04-04
975
글번호 147648
답변완료
오류 원인좀 부탁드립니다.
아래의 오류 구간이(31줄~42줄)
지표식에서는 문제없었는데
시스템식에서는 오류가 나옵니다.
뭔가 원인인지 잘 모르겠습니다.
부탁드리겠습니다.
감사합니다. !!!
---------------------------
input : StartTime(91000),EndTime(151000);
Input : shortPeriod(4), longPeriod(40);
input : 손절(2.8);
input : 익절(3.5);
input : resist(0),resist2(0),resist3(0);
var : Tcond(false,Data1);
var : C2(0,Data2);
var : C3(0,Data3);
var : C4(0,Data4);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
C2 = Data2(c);
C3 = Data3(c);
C4 = Data4(c);
#
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
if date != date[1] then
{
if stime>143000 and stime<153000 Then
{
if Lowest(c3,300)>-0.1 Then resist=1;
else if highest(c3,300)<0.1 Then resist=-1;
else resist=0;
if Average(c2,350)>0 and Lowest(c2,350)>-0.2 Then resist2=1;
else if Average(c2,350)<0 and highest(c2,350)<0.2 Then resist2=1;
else resist2=0;
if resist2==1 and resist==1 Then resist3=2;
Else if resist2==1 and resist==-1 Then resist3=-2;
Else resist3=0;
}
}
# 매수/매도청산
if Tcond == true and resist3<>2 and resist3<>-2 Then
{
If CrossUP(c, value2) Then
{
Buy();
}
If CrossDown(c, value2) Then
{
Sell();
}
}
SetStopEndofday(EndTime);
SetStoploss(손절,PointStop);
SetStopProfittarget(익절,PointStop);
2021-04-04
942
글번호 147647
답변완료
지난 번 답변에 감사드립니다. 시스템 (한번 더) 여쭤봅니다.
지난 3.29일 문의에 성실히 답해 주신 점 지금도 너무 고밥게 생각합니다.
그날 이후 당장 자동매매시스템으로 만들어서 자동매매를 하고 있어 감사드립니다.
자동매매하면서 생긴 의문점을 추가로 해결하고자 아래 두가지에 대해 한번 더 여쭙고자 합니다.
1. 추세매매 속성 상 되돌려주는 부분이 많아 '시스템 트레이딩 설정'창의 '강제청산' 항목의
목표수익 익절 포인트(잠정 20p정도)에 체크하고 매매해보니 한번 익절 포인트에 도달하면 그날의 매매가 끝나는 것을 알게 됐습니다. 제가 원하는 것은 당해 신호로 익절을 했더라도 다시 새로운 신호 출현 시 연속매매를 하고 싶은데 이것도 시스템에 반영이 가능할까요?
2. 아래 시스템에 의하면 시작시간(ntime)은 외부변수로 나와 있어서 시작시간을 변경하기가 수월한데, 끝나는 시간(여기 설정은 05시30분)과 진입제한시간(제 생각으론 04시30분 정도, 진입제한시간 이후 신호엔 신규진입을 하지 않고 청산만)도 외부변수로 뺄 수가 있을까요?
답변에 미리 감사드립니다.
아래는 3.29일 당시 만들어 주신 시스템
input : ntime(90000);
var : entry(0),T(0),S(0);
if sdate !=sDate[1] Then
SetStopEndofday(053000);
if Bdate != Bdate[1] Then
{
SetStopEndofday(0);
entry = 0;
S = 0;
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if T == 0 Then
{
if H >= DayLow+10 Then
S = 1;
if L <= DayHigh-10 Then
S = -1;
}
if (sDate != sDate[1] and sTime >= ntime) or
(sDate == sDate[1] and sTime >= ntime and sTime[1] < ntime) Then
T = 1;
if T == 1 and entry == 0 and MarketPosition == 0 Then
{
if S == 1 Then
Buy("b1");
if S == -1 Then
Sell("S1");
if S == 0 Then
{
if H < DayLow+10 Then
Buy("b2",AtStop,DayLow+10);
if L > DayHigh-10 Then
Sell("s2",AtStop,DayHigh-10);
}
}
if MarketPosition == 1 Then
{
if Highest(h,BarsSinceEntry) >= EntryPrice+10 Then
Sell("bs1",AtStop,Highest(H,BarsSinceEntry)-15);
Else
Sell("bs2",AtStop,Highest(H,BarsSinceEntry)-10);
}
if MarketPosition == -1 Then
{
if Lowest(l,BarsSinceEntry) <= EntryPrice-10 Then
Buy("sb1",AtStop,Lowest(L,BarsSinceEntry)+15);
Else
Buy("sb2",AtStop,Lowest(L,BarsSinceEntry)+10);
}
2021-04-04
1021
글번호 147646
회원 님에 의해서 삭제되었습니다.
2021-04-03
38
글번호 147645
회원 님에 의해서 삭제되었습니다.
2021-04-03
23
글번호 147644
답변완료
문의
일봉, 분봉에 상관없이 적용되도록 하고, 검색 조건은 (가장 최근 1봉당 100억이상 발생한 봉
의 시가보다 현재 시가가 높은 종목 or 현재 시점에서 두번째 1봉당 100억 이상 발생한 봉의
시가보다 높은 종목) 검색
2021-04-03
874
글번호 147643
답변완료
수식의뢰
수고하십니다.
현재 종가가
직전봉부터 이전10봉의 최고가 대비 -20% 이상인 종목 검색식
일봉과 분봉용 따로 부탁합니다.
2021-04-03
839
글번호 147642
답변완료
문의 드립니다.
예스랭귀지에
1. 지표-검색-강조-시스템 다음에 종목검색이 없는데요, 어떻게 해야 하나요?
2. 종목검색 후 관심종목 등록하는 방법도 알고 싶습니다.
3. 관심종목에서 종목을 클릭하면 모든 차트에 반영되는 방법도 알려 주세요.
2021-04-03
728
글번호 147641
답변완료
부탁드립니다
$,아래식에서 plot선 2개를 추가로 출력요청 드립니다.
1,
plot1 (미장시작 첫봉의시가를 미장종료시까지 오른쪽그리기)
plot2 (미장시작봉부터 종가선을 시작점까지 왼쪽그리기하되 봉이갱신되면 이전봉
종가선은 삭제(결국 미장종료후 마지막봉 종가선 하나만 미장시작점까지
왼쪽그리기 유지됨)
*색채우기를 하고자 plot로 요청하니 도움 부탁드립니다.
input : USA시작(223000),USA종료(050000),USA굵기(0);
var : D1(0),T1(0),H1(0),L1(0),Tcond1(false);
var : D2(0),T2(0),H2(0),L2(0),Tcond2(false);
var : D3(0),T3(0),H3(0),L3(0),Tcond3(false);
var : ED1(0),ET1(0),ED2(0),ET2(0),ED3(0),ET3(0);
var : TL11(0),TL12(0),TL13(0),TL14(0);
var : TL111(0),TL121(0),TL131(0),TL141(0);
var : TL21(0),TL22(0),TL23(0),TL24(0);
var : TL211(0),TL221(0),TL231(0),TL241(0);
var : TL31(0),TL32(0),TL33(0),TL34(0);
var : TL311(0),TL321(0),TL331(0),TL341(0);
var : tx1(0),tx2(0),tx3(0);
var : tx11(0),tx21(0),tx31(0);
if time == USA종료 or (time > USA종료 and time[1] < USA종료) Then
Tcond3 = false;
if stime == USA시작 or (stime > USA시작 and stime[1] < USA시작) Then{
D3 = sdate;
T3 = stime;
H3 = H;
L3 = L;
Tcond3 = true;
if d3[1] > 0 and ED3 > 0 Then{
TL_Delete(TL311);
TL_Delete(TL321);
TL_Delete(TL331);
TL_Delete(TL341);
TL311 = TL_New(D3[1],T3[1],H3[1],ED3,ET3,H3[1]);
TL321 = TL_New(D3[1],T3[1],L3[1],ED3,ET3,L3[1]);
TL331 = TL_New(D3[1],T3[1],H3[1],D3[1],T3[1],L3[1]);
TL341 = TL_New(ED3,ET3,H3[1],ED3,ET3,L3[1]);
TL_SetColor(TL311,MAGENTA);
TL_SetColor(TL321,MAGENTA);
TL_SetColor(TL331,MAGENTA);
TL_SetColor(TL341,MAGENTA);
TL_SetSize(TL311,USA굵기);
TL_SetSize(TL321,USA굵기);
TL_SetSize(TL331,USA굵기);
TL_SetSize(TL341,USA굵기);
Text_Delete(tx31);
tx31 = Text_New(ED3,ET3,H3[1],NumToStr(H3[1]-L3[1],4));
Text_SetColor(tx31,MAGENTA);
}
}
if Tcond3 == true Then{
if H > H3 Then
H3 = H;
if L < L3 Then
L3 = L;
ED3 = sdate;
ET3 = stime;
TL_Delete(TL31);
TL_Delete(TL32);
TL_Delete(TL33);
TL_Delete(TL34);
TL31 = TL_New(D3,T3,H3,Sdate,stime,H3);
TL32 = TL_New(D3,T3,L3,Sdate,stime,L3);
TL33 = TL_New(D3,T3,H3,D3,T3,L3);
TL34 = TL_New(sdate,stime,H3,sdate,stime,L3);
TL_SetColor(TL31,MAGENTA);
TL_SetColor(TL32,MAGENTA);
TL_SetColor(TL33,MAGENTA);
TL_SetColor(TL34,MAGENTA);
TL_SetSize(TL311,USA굵기);
TL_SetSize(TL321,USA굵기);
TL_SetSize(TL331,USA굵기);
TL_SetSize(TL341,USA굵기);
Text_Delete(tx3);
tx3 = Text_New(sdate,stime,H3,NumToStr(H3-L3,4));
Text_SetColor(tx3,MAGENTA);
}
2, IFf (OO[0] > OO[1] ,MAGENTA,BLUE) 이 함수 로직을 OO[0]> OO[1] > CC[1]일때로
할때 함수로직 부탁드립니다.
$,고맙습니다.
2021-04-05
1001
글번호 147638