커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6270
글번호 230811
답변완료
진입시간 제한
아래와 같은 수식을 이용해 진입 시간을 통제하는데요.
if stime >= 100000 and stime < 235900 then{
진입조건
}
10시부터 23시59분 까지는 문제가 없는데 새벽2시까지 설정하려면 어떻게 해야합니까?
if stime >= 100000 and stime < 020000 then{ --> 이렇게 하니까 인식을 못합니다.
2017-09-06
131
글번호 112543
답변완료
시장 시작시간관련
항셍(홍콩) 지수선물관련 지표가 당일 10:15로 적용이 안되고 전날 18;30(한국시간)에서 시작하는데 해결좀 부탁합니다(시간을 홍콩시간으로바꿔도동일)
Inputs: t1(101500);
HiHi = DayHigh;
LoLo = DayLow;
//if sdate == currentdate and stime>t1 Then
{
Plot5(HiHi);
Plot6(LoLo);
}
2017-09-06
140
글번호 112542
답변완료
시스템 오류검증
항상 감사드립니다.
질의_1.
아래의 시스템_1식은 신호발생후 기준선이나 선행스팬2를 터치할때 진입되도록 만든식인데
장시작후 처음에 다르게 나오고 있습니다.
또한 기준선이나 선행스팬2가 급격히 수직으로 움직일때 고가/저가 가 crossup/crossdown
되지 않고 수평으로 통과하다보니 신호가 발생하지 않습니다
수정부탁드립니다
질의_2.
시스템1과 시스템_2 는 동일한 시스템으로 만들엇는데 결과치는 다르게 나오고 잇습니다
두시스템의 차이점을 알고 싶습니다
1_시스템 1
/**************************************************************************/
Var : 기준선(0), 전환선(0), 선행스팬1(0), 선행스팬2(0),선행스팬3(0);
전환선 = (Highest(H, 9) + Lowest(L, 9)) / 2;
기준선 = (Highest(H, 26) + Lowest(L, 26)) / 2;
선행스팬1 = (전환선[25] + 기준선[25]) / 2 ;
선행스팬2 = (Highest(H, 52)[25] + Lowest(L, 52)[25]) / 2;
선행스팬3 = (highest(H,48)+lowest(L,48))/2;
/************************************************************************/
Input : Period1(200),Period2(100);
var : CCIv(0),CCIs(0);
CCIv = CCI(Period1);
CCIs = ema(CCIv,Period2);
/***************************************/
Input : short(30),long(65),sig(9);
Var : MACDv(0),MACDS(0);
MACDv = MACD(short, long);
MACDs = ema(MACDv,sig);
/*****************************************/
Input: DIP(46);
var : DP1(0),DM1(0),ZZ(0);
DP1 = ema(iff(H-H[1]>0 && H-H[1]>L[1]-L,H-H[1],0),DIP)/
ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),DIP)*100;
DM1 = ema(iff(L[1]-L>0 && H-H[1]<L[1]-L,L[1]-L,0),DIP)/
ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),DIP)*100;
ZZ=ema(accum(ema(ema(DP1-DM1, 2), 2)),20);
if ZZ > ZZ[1] Then
var6 = 1;
Else
var6 = 0; #BASELINE: 0.5 #
/*************************************************/
var: t(0),t1(0),t2(0),t3(0),t4(0),t5(0);
if crossup(전환선,선행스팬3) Then
T2 = 1 ;
if CrossDown(전환선,선행스팬3) Then
T2 = -1 ;
if T2==1 and CCIv>0 Then
T3 = 1 ;
if T2==-1 and CCIv<0 Then
T3 = -1 ;
/*************************************/
### 동일방향 재진입금지/전일 마지막신호와 무관하게 진입 ###
var : entrycnt(0);
if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then Entrycnt = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then Entrycnt = Entrycnt+1;
if (stime >= 090000 and stime < 150000) Then{
if T2 == 1 and C > 선행스팬2 and macdv>macds and 기준선>선행스팬2 Then
T4 = 1;
if T4 == 1 and (crossup(H,선행스팬2) or CrossDown(L,선행스팬2)) Then
T5 = 1;
if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and
t5==1 and var6==1 then
buy("B_1");
if T2 == -1 and C < 선행스팬2 and macdv<macds and 기준선<선행스팬2 Then
T4 = -1;
if T4 == -1 and (crossup(H,기준선) or CrossDown(L,기준선)) Then
T5 = -1;
if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != -1) or (MarketPosition == 1)) and
t5==-1 and var6==0 then
sell("S_1");
}
##########################
##### 청산 #####
##########################
if MarketPosition == -1 Then{
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*50 Then
ExitShort("sx2",AtStop,EntryPrice-(EntryPrice-Lowest(L,BarsSinceEntry))*0.75);
}
########################################
##### 손절20틱/매일 15:00 강제청산 #####
########################################
SetStopLoss(PriceScale*20,PointStop);
if stime == 150000 or (stime > 150000 and stime[1] < 150000) Then{
exitlong("당일매수청산");
ExitShort("당일매도청산");
}
/*#####################################################*/
2_시스템2
/*************************************************/
var: t(0),t1(0),t2(0),t3(0),t4(0);
if 전환선==선행스팬3 Then # 전환선이 선행스팬3과 같으면 0
T = 0 ;
if T==0 and CCIv>0 Then # t=0 인상태에서 cciv>0 이면 t1=1
T1 = 1 ;
if T==0 and CCIv<0 Then # t=0 인상태에서 cciv<0 이면 t1=-1
T1= -1 ;
/**************************************/
if crossup(전환선,선행스팬3) Then #전환선이 선행스팬3을 상향돌파하면 1
T = 1 ;
if CrossDown(전환선,선행스팬3) Then #전환선이 선행스팬3을 하향돌파하면 -1
T = -1 ;
if T==1 and CCIv>0 Then
T1 = 2 ;
if T==-1 and CCIv<0 Then
T1 = -2 ;
/*************************************/
### 동일방향 재진입금지/전일 마지막신호와 무관하게 진입 ###
var : entrycnt(0);
if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then Entrycnt = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then ### 동일방향 재진입금지 설정식 ###
Entrycnt = Entrycnt+1;
if (stime >= 090000 and stime < 150000) Then{
/***************************************************************************/
if T1 == 2 and C > 선행스팬2 and macdv>macds and 기준선>선행스팬2 Then
T = 2;
#t가 2인 상태에서 선행스팬2를 터치하면 3
if T == 2 and (crossup(H,선행스팬2) or CrossDown(L,선행스팬2)) Then
T = 3;
if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and #동일방향 재진입금지#
t==3 and var6==1 then
buy("B_1");
if T1 == -2 and C < 선행스팬2 and macdv<macds and 기준선<선행스팬2 Then
T = -2;
#t가 -2인 상태에서 선행스팬2를 터치하면 -3
if T == -2 and (crossup(H,기준선) or CrossDown(L,기준선)) Then
T = -3;
if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != -1) or (MarketPosition == 1)) and #동일방향 재진입금지#
t==-3 and var6==0 then
sell("S_1");
}
##########################
##### 청산 #####
##########################
if MarketPosition == -1 Then{
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*50 Then
ExitShort("sx2",AtStop,EntryPrice-(EntryPrice-Lowest(L,BarsSinceEntry))*0.75);
}
########################################
##### 손절40틱/매일 12:00 강제청산 #####
########################################
SetStopLoss(PriceScale*20,PointStop);
if stime == 150000 or (stime > 150000 and stime[1] < 150000) Then{
exitlong("당일매수청산");
ExitShort("당일매도청산");
}
2017-09-06
137
글번호 112537
답변완료
진입제한시간문의드립니다.
크루즈오일선물인데요
한국시간 06시에 장이 끝나고 07시에 장이 다시 열리는데요
한국시간 07~09시까지 한국장 열리긴전에 2시간동안 매매를 못하게
제한거는 식을 부탁합니다.
한국시간 07시면 Y/S실행차트에서 기본적으로 나오는
시장시간은 어떻게 되는건지도 궁금합니다.
증권사 hts는 한국시간 07시가 거래소22시로 체결표기 되는데
예스트레이더에서는 다른거 같기도하고...,
감사합니다.
2017-09-06
145
글번호 112536
carlos 님에 의해서 삭제되었습니다.
2017-09-05
14
글번호 112535
답변완료
수식요청(진입명)
* 많은 도움에 고맙습니다.
* 진입명을 "22매수" 라고 할 경우 4일 이평선*0.99 크로스 다운 매도 어떻게 하죠?
var1= ma(c,4) ;
if MarketPosition == 1 then {if countif(LatestEntryName(0) == "22매수", CrossDown(c,var1*0.99) then ExitLong("4일가매도"); }
이것이 아닌가요?
* 고맙습니다... ^.^
2017-09-05
141
글번호 112534
답변완료
수식 문의드립니다.
안녕하세요
하기 수식에서 청산을 하는 방식을 몇가지 보완을 하고 싶습니다.
검토 부탁드립니다.
1.
var1 = ADX(P);
var2= ma(C,60);
if var1 >= var1[1]+0.3 and DP > DM
Then
{ buy("b1"); }
if var1 >= var1[1]+0.3 and DP < DM
Then
{ sell("s1"); }
상기처럼 진입한 후, 청산을 하기와 같이 몇가지 조건중에
한가지라도 해당이 되면 청산이 되게 부탁드립니다.
* MACD ocillator 가 매수 진입 후 음으로 변경 되었을때 청산식 부탁드립니다.
- 매도 진입 후는 반대로 양으로 변경 되었을때 청산식 부탁드립니다.
* 매수 진입 후, 앞 양봉의 크기보다 큰 음봉이 발생하였을 떄 청산식 부탁드립니다.
매도 진입 후, 앞 음봉의 크기보다 큰 양봉이 발생하였을 때 청산식 부탁드립니다.
(상기 두가지 모두 꼬리는 계산하지 않고 오직 몸통의 크기만으로 판단합니다.)
* ADX 이 증가가 멈추었을 때, 청산식 부탁드립니다.
* 매수 진입 후 볼린져 밴드 상단 밴드와 5일 이평선 두가지 중 한가지라도
몸통 또는 꼬리가 걸쳐져 있다면, 청산 금지 부탁드립니다.
- 매도 진입 후 볼린져 밴드 하단 밴드와 5일 이평선 두가지 중 한가지라도
몸통 또는 꼬리가 걸쳐져 있다면, 청산 금지 부탁드립니다.
감사합니다.
2017-09-05
146
글번호 112533
답변완료
지표 수정 부탁드립니다.
안녕하세요?
엘리엇파동을 이용한 오실레이터를 사용중입니다.
아래의 수식중에서
plot1(OSC) 값이 0보다 높으면 빨강색 0보다 낮으면 파랑색으로 하고 싶습니다.
가능한가요?
INPUTS: LEN(80),TRIG(0.7);
VARS: WAVCOUNT(0), OSC(0);
OSC = ELLIOTTWAVEOSC;
WAVCOUNT = WAVE345ELLIOTT(LEN, TRIG);
plot1(OSC);
plot2(WAVCOUNT);
2017-09-05
249
글번호 112532
답변완료
문의드립니다.
와 단순한 책에 있는 되돌림 하나 만들어 보려고 해도 머리 엄청 굴려야 하네요. 수식천재 예스스탁님이 새삼 대단하게 보입니다.
수식 좀 부탁드립니다.
1.
예비신호
-종가가 20개(변수A)봉 고가 돌파
필수 필터
-고가대비 현 종가가 3%(변수B) 이상 떨어졌음
-이후 4개(변수C)봉 기간 동안 저가가 20개(변수A)봉 저가를 하향돌파하지 않음
선택 필터
-당일 종가가 당일 시가보다 높음
-당일 종가가 전일 종가보다 높음
-당일 종가가 2일 전 종가보다 높음
-당일 가격이 전일 종가보다 계속 높음
-당일 가격이 전주의 종가보다 계속 높음
-당일 가격이 전달의 종가보다 계속 높음
진입
-필수필터를 충족시킨 상태+선택필터 가운데 3개 이상을 충족시킨 상태에서 신호조건 1의 가격을 고가가 상향돌파시(재돌파) 진입
청산
-저가가 20개봉(변수A)저가를 하향돌파시
*참고로 선택필터는 이전에 만들어 주셨었습니다.
54375 지표 지표 문의드립니다.
2.
예비신호
-고가가 20(변수A)이평+ ATR20(변수B)*3(변수C)을 상향돌파
필수필터
-현 종가가 20이평+ ATR20*1.5(변수D) 아래에 있음
-이후 4개(변수E)봉 기간 동안 저가가 20이평을 하향 돌파하지 않음
선택필터
-당일 종가가 당일 시가보다 높음
-당일 종가가 전일 종가보다 높음
-당일 종가가 2일 전 종가보다 높음
-당일 가격이 전일 종가보다 계속 높음
-당일 가격이 전주의 종가보다 계속 높음
-당일 가격이 전달의 종가보다 계속 높음
진입
예비신호후 필수필터 충족시 진입
청산
저가가 20이평 하향돌파시 청산
3. 이전에 질문드렸던 내용인데요 이걸로 시스템 식 만드는 방법이 궁금합니다.
"문의하신 내용은
100개봉동안 양봉비율과 같습니다.
var1 = (countif(C>O,100)/100)*100;
plot1(var1);"
진입
va1이 30(변수)을 상향돌파하면 진입
청산
var1이 30을 하향돌파하면 청산
4.
진입
var1으로 시그널선 9(변수, RSI 시그널 선 같은 게 만들고 싶습니다.) 상향돌파시 진입
var1으로 시그널선 9 하향 돌파시 청산
5. 지표
40개봉(변수)가운데 2(변수)개봉 연속 양봉일 때 다음날 시가에 사서 종가에 팔았을 때 수익을 낼 확률
6. 시스템
진입
3과 동일
청산
3과 동일
7. 시스템
진입
4와 동일
청산
4와 동일
2017-09-06
169
글번호 112531