커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6134
글번호 230811
답변완료
수식 문의 드립니다.
30분봉 기준 50이평선 상단 조건에서만 10분봉의 특정조건 주문 실행하려면 어떤 수식이 필요한가요?
예를 들어) 30분봉 기준 50이평선 상단에서 10분봉 기준 50이평선 돌파 시 매수
2022-02-09
1075
글번호 156128
답변완료
수식문의드립니다
안녕하세요
수식 질문 하나 드립니다!
매수(매도) 한쪽 방향으로 3회 진입하면 추가진입이 안되도록 만들고 싶습니다
생각엔 매수에 Hcount, 매도에 Lcount라는 변수를 정의하고
청산이 이뤄질때마다 Hcount = Hcount +1이 되도록 해 Hcount가 3이 넘으면 진입이 안되도록 하면 될것같은데...
아래와 같은 상황에서 청산시 어떻게 count 해야될지를 모르겠습니다...
input : TT(55700), TD(20220205), N(5) ;
var : HB(14710), LB(14680), e60(0), Hcount(0), Lcount(0) ;
e60 = Ema(C,60);
if sDate >= TD and sTime >= TT Then
Condition1 = true;
if Condition1 == true Then
{
if Hcount < 3 then Buy("b",AtStop,HB,2) ;
if Lcount < 3 then Sell("s",AtStop,LB,2) ;
if marketposition > 0 Then
{
if e60 < HB Then ExitLong("exitL1",AtStop,HB-N);
if e60 >= HB && CrossDown(close, e60) Then ExitLong("exitL2") ;
HB = Highest(H, BarsSinceEntry) ;
}
if marketposition < 0 Then
{
if e60 > LB Then ExitShort("exitS1",AtStop,LB+N);
if e60 <= LB && CrossUp(close, e60) Then ExitShort("exitS2");
LB = Lowest(L, BarsSinceEntry);
}
}
-------------------------------
if e60 >= HB && CrossDown(close, e60) Then ExitLong("exitL2") ;
이 상황에선 그냥 조건 만족할때 Hcount = Hcount + 1을 추가하면 될것 같은데
if e60 < HB Then ExitLong("exitL1",AtStop,HB-N);
여기선 방법이 안떠오르네요
혹시 청산되는 상황 자체를 감지해 count 할 수 있는 방법이나
해결할 다른 방법이 있는지 조언 부탁드리겠습니다
감사합니다
2022-02-09
1254
글번호 156127
답변완료
문의 드립니다!
안녕하세요!
아래수식이 옵션만기일이 다가올수록 어느날부터인가 챠트상에 전혀 표시가되지않는데요 (국선에 적용시)
제가 이수식에대한 이해를 못하고있기때문에 이유를 모르겠습니다
1, 이수식에대한 기본적인 구성원리를 간단히라도 설명해주시면 감사하겠습니다
*특히 plot2(var2+var3*0.500,"중심");==> 이부분에대한 자세한 설명좀 부탁드리겠습니다
2, 그리고 만기일까지 지표가 표시되게끔할려면 수식의 수정이 필요한지 여부도 설명 부탁드립니다
초보자의 기본적인 질문에도 매번 친절히 답변해주심에 항상 진심으로 감사드리고있습니다!!!
-----------------------------------------------------
var : month(0),nday(0),week(0);
var :EX(false),HH(0),LL(0),OO(0),CC(0),DD(0),HH1(0),LL1(0),OO1(0);
month = int(date/100)-int(date/10000)*100;
nday = date - int(date/100)*100;
week = DayOfWeek(date);
#선물만기
#if Month%3 == 0 and nday >= 8 and nday <= 14 and week == 4 then
if nday >= 8 and nday <= 14 and week == 4 then#옵션만기
EX = true;
Else
EX = false;
if EX == false and EX[1] == true Then{
Condition1 = true;
DD = sDate;
HH = H;
LL = L;
OO = O;
CC = C;
HH1 = HH[1];
LL1 = LL[1];
OO1 = OO[1];
}
if Condition1 == true then
{
if H > HH Then
HH = H;
if L < LL Then
LL = L;
var1 = HH;
var2 = LL;
var3 = var1-var2;
plot1(var1,"Maxi");
plot2(var2+var3*0.500,"중심");
plot3(var2,"Mini");
if sDate == DD Then
{
Var4 = DayOpen;
Var5 = DayHigh;
Var6 = DayLow;
}
Plot4(Var4,"첫날시가",IFf(oo1 < DayOpen(0) ,MAGENTA,BLUE));
if HH1 > 0 and LL1 > 0 Then
{
Plot5(HH1,"전월물최고");
Plot6(LL1,"전월물최저");
}
}
2022-02-09
1121
글번호 156126
답변완료
문의드립니다
input : per1(23.6),per2(50.0),per3(76.4);
var : hh(0),ll(0),dd(0),tt(0);
var : tl1(0),tl2(0),tl3(0);
if bdate > bdate[1] then
{
hh = h;
ll = l;
dd = sdate[1];
tt = stime[1];
TL_Delete(tl1);
TL_Delete(tl2);
TL_Delete(tl3);
tl1 = TL_New(dd,tt,hh-(hh-ll)*(per1/100),sdate,stime,hh-(hh-ll)*(per1/100));
tl2 = TL_New(dd,tt,hh-(hh-ll)*(per2/100),sdate,stime,hh-(hh-ll)*(per2/100));
tl3 = TL_New(dd,tt,hh-(hh-ll)*(per3/100),sdate,stime,hh-(hh-ll)*(per3/100));
}
if h > hh and hh > 0 Then
{
hh = h;
TL_Delete(tl1);
TL_Delete(tl2);
TL_Delete(tl3);
tl1 = TL_New(dd,tt,hh-(hh-ll)*(per1/100),sdate,stime,hh-(hh-ll)*(per1/100));
tl2 = TL_New(dd,tt,hh-(hh-ll)*(per2/100),sdate,stime,hh-(hh-ll)*(per2/100));
tl3 = TL_New(dd,tt,hh-(hh-ll)*(per3/100),sdate,stime,hh-(hh-ll)*(per3/100));
}
if l < ll and ll > 0 Then
{
ll = l;
TL_Delete(tl1);
TL_Delete(tl2);
TL_Delete(tl3);
tl1 = TL_New(dd,tt,hh-(hh-ll)*(per1/100),sdate,stime,hh-(hh-ll)*(per1/100));
tl2 = TL_New(dd,tt,hh-(hh-ll)*(per2/100),sdate,stime,hh-(hh-ll)*(per2/100));
tl3 = TL_New(dd,tt,hh-(hh-ll)*(per3/100),sdate,stime,hh-(hh-ll)*(per3/100));
}
TL_SetColor(TL1,MAGENTA);
TL_SetSize(TL1,1);
TL_SetExtRight(TL1,true);
TL_SetColor(TL2,MAGENTA);
TL_SetSize(TL2,1);
TL_SetExtRight(TL2,true);
TL_SetColor(TL3,MAGENTA);
TL_SetSize(TL3,1);
TL_SetExtRight(TL3,true);
위수식에서 전일고가 전일저가 수평선을추가하고십습니다 부탁드립니다~감사드립니다
2022-02-09
1191
글번호 156125
답변완료
수식 질문드립니다.
손절1포 익절2포 로 잡고,
익절시 condi =1
손절시 condi =-1
지정하게끔 단순이평 전략으로 부탁드립니다.
진입시 value=c 하면 될듯한데
청산시 c를 어떻게 기록할지 모르겠네요
감사합니다.
2022-02-08
961
글번호 156123
답변완료
추가질문 드립니다
안녕하세요!
답변주신 내용에 대해 추가질문 드립니다
제가 드린 질문과 받은 답변은 아래와 같습니다
---------------------
질문)
input : HB(14750), LB(14720), N(2);
var : Hx(0), Lx(0);
Buy("b1",AtStop,HB,2);
Buy("b2",AtStop,HB+N,2);
Buy("b3",AtStop,HB+2*N,2);
Buy("b4",AtStop,HB+3*N,2);
Sell("s1",AtStop,LB,2);
Sell("s2",AtStop,LB-N,2);
Sell("s3",AtStop,LB-2*N,2);
Sell("s4",AtStop,LB-3*N,2);
if marketposition == 1 then
{
Hx = highest(H,barsinceentry);
if HB <= Hx && Hx < HB +N then exitlong("exitB", atstop, HB-5);
if HB +N <= Hx && Hx < HB +2*N then exitlong("exitB", atstop, HB-3);
if HB+2*N <= Hx && Hx < HB +3*N then exitlong("exitB", atstop, HB-1);
if HB +3*N <= Hx then exitlong("exitB", atstop, HB+1);
}
if marketposition == -1 then
{
Lx = lowest(L,barsinceentry);
if LB >= Lx && Lx > LB-N then exitlong("exitB", atstop, LB+5);
if LB-N >= Lx && Lx > LB-2*N then exitlong("exitB", atstop, LB+3);
if LB-2*N >= Lx && Lx > LB-3*N then exitlong("exitB", atstop, LB+1);
if LB-3*N >= Lx then exitlong("exitB", atstop, LB-1);
}
위와같이 만들어 시스템매매설정의 피라미딩 탭에서 '다른진입신호만 허용'을 선택했습니다
매수(매도) 한 방향으로 최대 4번까지만 진입해 피라미딩 되어야하는데
4번 이상 진입하는 경우가 종종 생기고
그렇게 됐을땐 청산조건에 걸려도 전부 청산되지가 않습니다
ex) 매수 6번 진입해 12계약이 있다면, 청산조건이 되도 8계약만 청산되고 4계약이 남음
답변)
다른진입신호만 허용은 진입별로 한번씩 진입이 가능한데
진입 후 청산되면 다시 발생할수 있습니다.
즉 A라는 진입이 청산되면 A라는 이름의 진입은 다시 발생할 수 있습니다.
하지만 올리신 내용은 부분청산이 아닌 전량청산이므로 4회이상 진입하지 않습니다.
청산 발생한 봉에서 진입조건도 만족해서 전량청산 후 진입이 발생한 경우입니다.
6번 진입해 12계약인 상태에서 8계약만 청산되고 4계약이 남은 상황이 아니고
4번 진입해서 전량(8계약)청산하고 같은 봉에서 이후에 2번더 진입한 것입니다.
작성하신 진입은 특정가격 이상이면 매수, 특정가격 이하이면 매도진입하는 내용으로
봉중간에 전량청산하고 해당봉에서 조건만 되면 다시 진입을 할 수 있습니다.
---------------------------
제가 질문에 문제가 되는 상황을 정확히 기술하지 못한것 같고
관련해 추가로 질문드리고 싶은 부분은
재진입 자체는 문제가 안되는데 문제가 되는 상황이
실제로 청산이 안된 시점에서 6번 진입하는 케이스가 생깁니다
차트상엔 b1, b2, b3, b4가 진입된걸로 나오는데
주문내역의 매수신호는 6번이 발생하는...
매수 12계약이 있는 상태에서 청산조건이 되면 12계약 전체청산이 아니라 8계약만 청산되고
매수 4계약이 남아있는 채로, 조건이 되면 매수, 매도가 들어가며 잔고가 꼬이게 되는 상황이 몇번을 돌려봐도 계속 생기는데
이 원인이 무엇때문인지 확인 부탁드리겠습니다
2022-02-08
1227
글번호 156117
답변완료
수식문의
안녕하세요, 선생님^^
국내kp200선물거래용수식문의(분봉, 틱봉):
1) 수동 매수 진입, 종가 가 CSar(종가파라볼릭) 값 붕괴 청산;
수동 매도 진입, 종가 가 CSar(종가파라볼릭) 값 돌파 청산;
2) 수동 매수 진입, 종가 가 ma(20) 선 붕괴 청산;
수동 매도 진입, 종가 가 ma(20) 선 돌파 청산;
3) 수동 매수 진입, 종가 가 마지막봉에서 2번째 전봉의 저가(L(2)) 붕괴시 청산;
수동 매도 진입, 종가 가 마지막봉에서 2번째 전봉의 고가(h(2)) 돌파시 청산;
4) 수동 매수 진입, 종가가 마지막봉의고점에서 변수 x 값 하락 (예h-1p 값붕괴)시 청산;
수동 매도 진입, 종가가 마지막봉의저점에서 변수 x 값 반등 (예L+1p 값돌파)시 청산;
이상 4종의 시스템 수식 부탁드립니다.
2022-02-08
1059
글번호 156116
답변완료
확인 좀 요청 드립니다.
* 항상 많은 도움에 고맙습니다.
* 전일 해주신 수식인데 이리저리 바꾸어봐도 선이 안 나타 남니다.
수평선이 여러개 나오도록 부탁 좀 드립니다.
로직 기준에 문제가 있나요?
기준 : 당일 시작봉 부터 시작 하여 1~100봉 되면 최고가에 수평선 긋고 최저가에 수평선
다시 101 ~ 200봉 까지 가격중에서 최고가 최저가에 수평선 두개 긋고...계속
##
input : n(100);
var : hh(0),ll(0),idx(0),tf(0);
var : TL1(0),TL2(0),d1(0),t1(0);
if Bdate != Bdate[1] Then
idx = 0;
Else
idx = idx+1;
TF = idx%n;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
hh = h;
ll = l;
d1 = sDate;
t1 = sTime;
TL_Delete(TL1);
TL1 = TL_new(d1,t1,hh,NextBarSdate,NextBarStime,hh);
TL_setExtRight(TL1,true);
TL_Delete(TL2);
TL2 = TL_new(d1,t1,ll,NextBarSdate,NextBarStime,ll);
TL_setExtRight(TL2,true);
}
if h > hh Then
{
hh = h;
TL_SetBegin(TL1,d1,t1,hh);
TL_SetEnd(TL1,NextBarSdate,NextBarStime,hh);
}
if l < ll Then
{
ll = l;
TL_SetBegin(TL2,d1,t1,ll);
TL_SetEnd(TL2,NextBarSdate,NextBarStime,ll);
}
* 매번 고맙습니다.
2022-02-08
1145
글번호 156114
답변완료
분할매수오류문의
안녕하세요.
간단한 분할매수 식을 일봉에서 구현하려는데
"b1" 신호 발생하고 다음봉에 발생해야할시 무슨일인지
"b2" 신호가 한봉 다음에발생합니다.
도움 부탁드립니다.
if ma(c,60) > ma(c,120) and c > o then
Buy("b1");
if MarketPosition == 1 Then
{
ExitLong("bx",atlimit, AvgEntryPrice * 1.10);
if MaxEntries == 1 Then
Buy("b2",atlimit,EntryPrice * 0.95);
if MaxEntries == 2 Then
Buy("b3",atlimit,EntryPrice * 0.90);
if MaxEntries == 3 Then
{
Buy("b4",atlimit,EntryPrice * 0.80);
}
2022-02-08
1208
글번호 156107