커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8006
글번호 230811
답변완료
체결강도 관련
안녕하세요 새해복많이 받으시길바랍니다.
종목검색 수식에서 체결강도를 집어넣고 싶은데,
분봉상으로,
(1) 1봉전 체결강도 대비 0봉전 체결강도가 증가값이 X(변수)이상이고,
(2) 0봉전 체결강도가 Y(변수) 이상이고,
(3) 0봉전 체결강도가 체결강도 N봉 평균을 돌파하는,,,
검색하고 싶은데, 수식부탁드립니다.
2019-12-30
473
글번호 134766
답변완료
수식 도와주실수 있나요? 하다가 막혀서요
최대한 수식을 이해하고 스스로 작성하려고 하는데 정말 모르겠습니다. 좀 도와주실수 있나요?
요지는 다음과 같습니다.
아래 특정 하나의 수식으로(물론 변수는 최적화) 분봉별로 변수값을 변형하여 4개의 수식을 각각 차트별로 운용하고 있습니다.
4개의 수식을 하나의 수식으로 통합수식을 구현하려고 합니다.
(바로 아래 질물 사항 참조 ) 해당 수식을 각각
1분봉 - data1
5분봉 - data2
10분봉 - data3
20분봉 - data4
왜냐하면 이유는 다음과 같습니다.
해당 수식은 역추세 매매로 급락시 체결 진입되는 수식인데 폭락 원웨이시 4개 수식이
전량 체결되는 경우가 있는데 그러면 리스크관리가 안되기 때문에 .....
4개의 수식이 전량 진입체결되는 경우 -- 위험관리가 안됨 -- 진입 제한 필요성
및
4개 전략을 반영하다보니 차트를 4개를 열어서 관리해야 함 --> 차트 1개로 간소화 필요
한종목에 4개전략을 활성화하고 종목을 3개하니 12개 전략을 활성화하다보니
컴퓨터가 과부하 걸림.... 락다운되는 현상 가끔씩 발생..위험성으로 개선 필요
전략
1. 4개의 전략 ( 동일종목 1분봉 5분봉 10분봉 20분봉 )을 하나의 수식으로 구현
2. 1개의 버전에 변수로 1회진입버전 및 2회진입버전이 있음 ( max 4버전 * 2 = 8계약 진입해버릴수 있음 )
3. 현재 자금상 2개 (버전진입 갯수를 변수로 지정) 의 버전만 진입가능하게 설계 구현
( max 2버전 * 2계약 = 최대 4계약진입 )
시행 방법
일단 전략차트 (그림과 같이 셋팅)
전략차트를 1분봉 참조차트를 5분봉 10분봉 20분봉으로 셋팅 함.
수식을 아래와 같이 수식 작성
--- -----------------------------------------------------------------------
#매수통합버전 ( 1분봉/ 5분봉/ 10분봉/20분봉 버전)
#1분봉 버전-- data1 차트에 적용
Input : RSIPeriod(14),RSI매수값(16),SimPeriod(14),심리도값(22);
Input : 초기화(7);
Input : CCI기간(20),CCI값(500);
Input : 하락틱수(50);
Input : 즉시익절1(30),즉시손절1(90);
Input : 분할매수횟수(2),분할매수틱수(50);
input : N(100); # N은 즉시손절1 발생시 N봉까지 진입 금지
var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0);
CCIv = CCI(CCI기간);
RSIV = RSI(RSIPeriod);
Simri = Simrido(SimPeriod);
# -------N봉까지 즉시손절1 발생시 진입금지 수식 --------------
if bdate != bdate[1] Then
Entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
Condition2 = MarketPosition == 0 and
(IsExitName("즉시손절1",1) == false or
(IsExitName("즉시손절1",1) == true and BarsSinceExit(1) > N));
# --------------------------------------------------------------------
Condition1 = RSIv < RSI매수값 and Simri < 심리도값;
# ------------초기화까지 ----------------
if bdate != bdate[1] Then
{
DD = DD+1;
if var2 > 0 and DD == var2+초기화 Then
BuySetup = false;
}
if BuySetup == false and Condition1 == true and Condition1[1] == false Then
{
var1 = C;
var2 = DD;
BuySetup = true
}
if Condition2 == true and MarketPosition == 0 and BuySetup == true Then
buy("매수",AtLimit,var1-PriceScale*하락틱수);
#추가진입
if MarketPosition == 1 and MaxEntries < 분할매수횟수 Then
buy("추가매수",atlimit,LatestEntryPrice(0)-PriceScale*분할매수틱수,1);
if MarketPosition == 1 then
{
BuySetup = false;
if CrossDown(CCIv,CCI값) Then
ExitLong("매수cci청산");
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
}
#***********************************************************************************
#5분봉 버전 -- data2 차트에 적용 ( 잘 몰라서 수정 못함 ( data2로 반영해야함 )
상동 - data2차트에 적용하도록 수정 필요...
#***********************************************************************************
#10분봉 버전 -- data3 차트에 적용 ( 잘 몰라서 수정 못함 ( data3로 반영해야함 )
상동 - data3차트에 적용하도록 수정 필요...
#***********************************************************************************
#20분봉 버전 -- data4 차트에 적용 ( 잘 몰라서 수정 못함 ( data4로 반영해야함 )
상동 - data4차트에 적용하도록 수정 필요...
***** 위식에서 기능추가로 4개 버전중 2개 버전만 진입될수 있도록 진입 제한 수식 ....
참고로 1분봉전략, 5분봉전략, 10분봉전략, 20분봉전략의 기본수식은 같으나 변수는 다 다름
PS 혹시 제가 경험치 부족으로 무식하게 위 식처럼 구현하면 될것 같아서 요청한 것이지만
효율적인 방법이 있으면 알려주시면 감사하겠습니다.
2019-12-30
701
글번호 134765
답변완료
과장님 수식 좀 도와주실수 있으신가요?- 따로 따로 답변해주시면 감사 data2함수관련
기본차트는 다른 봉수로 설정하고 참조차트(data2)에 아래식을 변형하게 하려 합니다.
기본차트 수식
Input : RSIPeriod(14),RSI매수값(35),SimPeriod(14),심리도값(37);
Input : N1(1),초기화(7);
Input : CCI기간(80),CCI값(200);
Input : 하락틱수(40);
Input : 즉시익절1(300),즉시손절1(75);
Input : 분할매수횟수(2),분할매수틱수(45);
input : N(5);
var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0);
CCIv = CCI(CCI기간);
RSIV = RSI(RSIPeriod);
Simri = Simrido(SimPeriod);
if bdate != bdate[1] Then
Entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
Condition2 = MarketPosition == 0 and
(IsExitName("즉시손절1",1) == false or
(IsExitName("즉시손절1",1) == true and BarsSinceExit(1) > N));
Condition1 = RSIv < RSI매수값 and Simri < 심리도값;
if bdate != bdate[1] Then
{
DD = DD+1;
if var2 > 0 and DD == var2+초기화 Then
BuySetup = false;
}
if BuySetup == false and Condition1 == true and Condition1[1] == false Then
{
var1 = C;
var2 = DD;
BuySetup = true;
}
if Condition2 == true and MarketPosition == 0 and BuySetup == true Then
buy("매수",AtLimit,var1-PriceScale*하락틱수);
#추가진입
if MarketPosition == 1 and MaxEntries < 분할매수횟수 Then
buy("추가매수",atlimit,LatestEntryPrice(0)-PriceScale*분할매수틱수,1);
if MarketPosition == 1 then
{
BuySetup = false;
if CrossDown(CCIv,CCI값) Then
ExitLong("매수cci청산");
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
}
===========================================================================
위 차트 수식을 data2 참조차트에 동일하게 구현하려고 합니다. 맞느지 한번 봐주세요
input 변수는 그대로
var 는 각 변수마다 (0) --> (0,data2)로 변경
지정수식은 A = B ---> A = data2(B)
그리고 잘 모르겠어요.. 다음 수식에는 data2를 어디다가 넣어야 하는지... ...ㅠㅠ
Input : RSIPeriod(14),RSI매수값(35),SimPeriod(14),심리도값(37);
Input : 초기화(7);
Input : CCI기간(80),CCI값(200);
Input : 하락틱수(40);
Input : 즉시익절1(300),즉시손절1(75);
Input : 분할매수횟수(2),분할매수틱수(45);
input : N(7);
var : CCIv(0,Data2),RSIv(0,Data2),Simri(0,Data2),BuySetup(false,Data2),DD(0,Data2),entry(0,Data2);
CCIv = data2(CCI(CCI기간));
RSIV = data2(RSI(RSIPeriod));
Simri = data2(Simrido(SimPeriod));
if data2( bdate != bdate[1] ) Then
Entry = 0;
if data2(MarketPosition != 0 and MarketPosition != MarketPosition[1]) Then
entry = entry+1;
Condition2 = data2(MarketPosition == 0 )and
data2((IsExitName("즉시손절1",1) == false)) or
data2( (IsExitName("즉시손절1",1) == true and BarsSinceExit(1) > N));
Condition1 = (RSIv < RSI매수값) and (Simri < 심리도값);
if data2(bdate != bdate[1]) Then
{
DD = DD+1;
if var2 > 0 and DD == var2+초기화 Then
BuySetup = false;
}
if BuySetup == false and Condition1 == true and Condition1[1] == false Then
{
var1 = C;
var2 = DD;
BuySetup = true;
}
if Condition2 == true and MarketPosition == 0 and BuySetup == true Then
buy("매수",AtLimit,var1-PriceScale*하락틱수);
#추가진입
if MarketPosition == 1 and MaxEntries < 분할매수횟수 Then
buy("추가매수",atlimit,LatestEntryPrice(0)-PriceScale*분할매수틱수,1);
if data2(MarketPosition == 1) then
{
BuySetup = false;
if CrossDown(CCIv,CCI값) Then
ExitLong("매수cci청산");
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
}
2019-12-30
440
글번호 134764
답변완료
키움수식 변형 부탁드립니다.
분봉기준입니다.
B = sum( if(C >= 기준값1, M, if(C<=기준값2, -M, 0)) );
//마지막은 문자가 아니라 숫자 영입니다.
D = valuewhen(1, date==날짜 and date(1)!=날짜, B(n1));
E=B-D
F = highestsince(1, date == 날짜 and date(1) != 날짜, E);
2019-12-30
547
글번호 134763
답변완료
함수요청
안녕하세요?
아래글번호 65424번 재질문입니다.
스크립트 검증 요청드립니다.
구체적인 사례를 들어 요청드립니다.
HSIF20을 5분봉으로 거래하고자 합니다.
우리시간 기준으로
1. 2019/12/20 금요일 18시 15분 T+1장이 시작되고 처음 시작된 가격은 28,037입니다.
2. 2019/12/21 토요일 04시경 T+1장이 마감되는 가격은 28,035입니다.
3. 28,037 > 28,035 : 양봉입니다.
4. 2019/12/23 월요일 T장 10시 15분에 시장가 매도를 하고 싶습니다. 기술적으로 어려우면 10시 20분봉이 완성되고 익봉 시가에 매도진입입니다.
5. 2019/12/23 월요일 T장 17시에 매도진입한 포지션 청산입니다.
6. 반대로 3번에서 음봉이 발생되었더라면 매수진입하여 17시 청산입니다.
---------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
식을 수정했습니다.
var : Tcond(false);
if (sdate != sdate[1] and stime >= 181500) or
(sdate == sdate[1] and stime >= 181500 and stime[1] < 181500) then
{
var1 = O;
}
if stime < 100000 then
var2 = c;
if (NextBarSdate != sdate and NextBarStime >= 101500) or
(NextBarSdate == sdate and NextBarStime >= 101500 and stime < 101500) then
{
if var2 > var1 and var1 > 0 Then
buy("b",AtMarket);
if var2 < var1 and var1 > 0 Then
sell("s",AtMarket);
}
SetStopEndofday(170000);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수 검증 요청
> 안녕하세요??
아래 글번호 65404번 스크립트 검증 요청드립니다.
진입만 1번 있고 청산이 발생되지 않습니다.
----------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : starttime(101500),endtime(020000);
var : Tcond(false);
if (sdate != sdate[1] and stime >= 181500) or
(sdate == sdate[1] and stime >= 181500 and stime[1] < 181500) then
{
var1 = O;
}
if stime < 100000 then
var2 = c;
if (NextBarSdate != sdate and NextBarStime >= 101500) or
(NextBarSdate == sdate and NextBarSdate >= 101500 and stime < 101500) then
{
if var2 > var1 and var1 > 0 Then
buy("b",AtMarket);
if var2 < var1 and var1 < 0 Then
sell("s",AtMarket);
}
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
함수 요청드립니다.
항셍지수 선물 5분봉으로 거래를 하고자 합니다.
10시 15분 T장 시초가에 진입을 하는데
T+1장이 양봉이면 매도, 음봉이면 매수
당일 17시 시간청산입니다.
2019-12-30
437
글번호 134760
답변완료
제일 많은 호가을 이은선
현재가에서 나와있는 20개호가중에 제일 많은 거를 이은선을 구하는 수식 부탁드립니다
2019-12-30
356
글번호 134759
답변완료
문의
최근 100일이내 거래대금 순위 200위 이상, 365일이내 하루 거래대금 100억 이상
발생한 날의 저점가격에서 +- 3% 이내 종목 검색식 부탁드립니다.
2019-12-30
402
글번호 134751
답변완료
수식 좀 부탁드립니다.
안녕하세요~ 항상 감사드립니다.
문의 좀 드리겠습니다.
종목검색식을
1. 4개년도 당기순이익이 + 인 코스피종목
2. 4개년도 당기순이익이 + 인 코스닥종목
가능한지 모르겠습니다.
감사합니다.
2019-12-30
348
글번호 134741
답변완료
수식문의드립니다.
A=(highest(high,shortPeriod)+lowest(low,shortPeriod))/2;
B=(highest(high,midPeriod)+lowest(low,midPeriod))/2;
M=(HighestSince(1,CrossUp(Trix(Period),0),C)+
LowestSince(1,CrossDown(Trix(Period),0),C))/2;
c>=M and
MACD(short,long)>=0 and
DIPlus(14)>=DIMinus(14) and
C>=SAR(0.015,0.15) and
CrossUp(c,BBandsUp(period1,2))
----------
shortPeriod 5
midPeriod 10
Period 8
short 10
long 15
period1 17
========
위의 수식을 종목검색 할수있게 부탁드립니다..^^
행복한 명절 되세요~~
2019-12-30
632
글번호 134738