커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4617
글번호 230811
답변완료
시스템식 다시 문의드립니다.
안녕하세요
알려주신 내용 잘 검증해 보고 있습니다.
감사합니다!!!
1. 차트는 3월 초반 성광밴드의 15분 봉입니다.
적용은 분봉에 일봉을 적용할 수 있는 시스템식을 사용했습니다.
수정을 부탁할 것이 있습니다.
ㄱ.
20일 이하에서는 신규매수가 나가지 않아야 하는데 주문이 나가고 있습니다.
안나게 수정 부탁드립니다.
ㄴ. 3일에 보면 20일 데드후 골드가 나왔습니다.
그러면 폭을 다시 리셋하고 다음 부터 매매가 이루어지는 식을 부탁드립니다.
print로 저장된 3월 3일의 폭을 보면 갑자기 170에서 730으로 커져버렸습니다.
2. 제이콘텐트리 5월 17일 입니다.
피라미드 다른 진입신호 허용으로 설정한 상태입니다.
신고가가 낮아지면서 신고가가 변했으니
다른 신호로 판단해 두번째 매수가 나온것 같습니다.
신고가를 20일 신고가 갱신으로 고정했으면 합니다.
그리고, 신고가 갱신을 전의 신고가 보다 2%이상 갱신되어야
신고가로 인정하는 식을 추가할 수 있는지 궁금합니다.
새신고가 2% 초과 -> 다른 조건과 맞물려서 금지 신호 없으면 매매준비
새신고가 2% 미만 -> 새신고가가 2% 초과할때까지 매매금지
3. 시스템 식에 추가 문의드립니다.
신고가와 1차매수의 폭이 2.5%가 넘어야 매수가 되게 수정이 가능할지요??
계산은 (신고가 - 1차매수가격)/1차매수가격 * 100 입니다.
작다면 2.5%보다 커질때까지 다음 신고가를 기다리고
크다면 기존 매수금지 조건하고 비교해서 어긋나지 않으면 매수 진행이 되면 됩니다
또 이부분을 차트에 표시할 수 있게 지표나 강조로 가능한지도 부탁드립니다.
감사합니다!!!
아래는 적용한 식입니다.
-----------------------------------------------------------------------------
input : P(20),시작날짜(20160108),매수1차(1000000),매수2차(1500000),매수3차(2000000);
var : T(0),HH(0),Price1(0),Price2(0),Price3(0),diff(0),sum(0),mav(0),cnt(0);
sum = 0;
for cnt = 0 to P-1{
sum = sum+DayClose(cnt);
}
mav = sum/P;
if sdate >= 시작날짜 then{
#이평 데드되었다가 골드되면 최고폭저장변수는 0으로 초기화
if crossup(C,mav) Then{
T = 1;
HH = 0;
}
if CrossDown(C,mav) Then{
T = -1;
Condition1 = false;
}
#20이평 위에서만 신고가 갱신시 최대폭을 구함
if T == 1 and H == Highest(H,20) Then{
#최근 폭
diff = HH;
Condition1 = true;
#이평위에서 최대폭과 매수가격
if H-L > HH Then{
HH = H-L;
}
Price1 = H-HH*1;
Price2 = H-HH*2;
Price3 = H-HH*3;
}
if MarketPosition == 1 Then
Condition1 = false;
#가격이 하락해 1차매수가격 이하이면 매수
if MarketPosition == 0 and Price1 > 0 and L >= Price1 Then
buy("b1",atlimit,Price1,Floor(매수1차/C));
#가격이 하락해 2차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 1 and Price2 > 0 Then
buy("b2",atlimit,Price2,Floor(매수2차/C));
#가격이 하락해 3차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 2 and Price3 > 0 Then
buy("b3",atlimit,Price3,Floor(매수3차/C));
if MarketPosition == 1 Then{
#진입이후로 한번도 20선 아래로 내려가지 않은경우
#진입이후 최저가에서 폭만큼 상승하면 청산
if countif(C<mav,BarsSinceEntry) == 0 Then
ExitLong("bx1",atlimit,lowest(L,BarsSinceEntry)+diff);
#진입이후로 20선 아래로 한번이상 내려간 경우
#진입이후 최저가에서 폭의 절반만큼 상승하면 청산
if countif(C<mav,BarsSinceEntry) == 0 Then
ExitLong("bx2",atlimit,lowest(L,BarsSinceEntry)+diff*0.5);
#일괄매도 = 현재 20일 신고가 이후 최저가 + 최대폭(75%)
ExitLong("일괄매도",atlimit,lowest(L,BarsSinceEntry)+diff*0.75);
}
}
print("data.csv",",신고가,%.f,폭,%.2f,1차매수가,%.f",H,HH,H-HH*1);
2016-05-19
132
글번호 98246
답변완료
비가격데이터 당일제한 문의
비가격 데이터로 당일의 시고저종 등을 뽑아 수식에 쓰려고 합니다.
타주기 참조의 비가격 데이터 포함해서요.
예를 들면 당일동안만의 미결제약정만 가지고 사용할 수 있게요.
그러려면 전체에 적용되는 당일 제한 수식이 필요한듯 해서 도움을 구합니다.^^
아니면 비가격데이터를 변수로 바꿔서 쓸수 잇는 개별적인 당일제한수식도 괜찮습니다.
감사합니다.
2016-05-19
109
글번호 98245
답변완료
스톡캐스틱12-5-5의 매도,매수 예비신호 본신호 수식문의
일전에 문의한 내용으로
현재 핵심내용은
1.스톡캐스틱 첫신호=예비신호 나오게 하여주시고
2.5일선이평위에 올라타면=매수본신호
3.5일선이평아래에 내려타면=매도본신호
가 나오도록 하여주세요
시스템식이겠지요?----움직이면서 나오는 신호라서~???
============================================================
스톡캐스틱 매도,매수 예비신호 본신호 수식문의
챠트에 표시되게 하는 것이니까==>지표식인가요?
키움증권 해외선물 항생지수 170틱 챠트에서
스톡캐스틱 매도신호와
스톡캐스틱 매수신호 수식에서
----------------------------------
첫신호를===예비신호후---->3번째캔들을 본신호가 나오게 할려고합니다
첫번째캔들;예비신호
3번째캔들:본신호 나오게하는 수식을 주시면 더더욱 좋겠습니다
010-4929-1591 황홍기입니다
======================================================
신호표시 및 주문시점----yesstock 교재23페이지에서
If c>o then
Buy("매수",On Close);--->스톡캐스틱 매수신호
신호표시:조건을 만족한 봉에 예비신호표시[빈박스캔들표시]
주문시점:예비신호표시 다음3번째캔들바의 시가데이터 수신시 본신호표시[꽉찬캔들박스표시]
----------------------------------------------------
신호표시 및 주문시점
if C<o then
sell("매도",AtStop,c);---->스톡캐스틱 매도신호
신호표시:조건을 만족한 봉에 예비신호표시[빈박스캔들표시]
주문시점:예비신호표시 다음3번째캔들바의 시가데이터 수신시 본신호표시[꽉찬캔들박스표시
2016-05-19
212
글번호 98244
답변완료
문의 드립니다
분봉에서 20개전봉이 현재봉(종가가)보다 위에있으면 20전봉위에 화살표를
아래에있으면 20전봉 아래에 화살표가 나오게 부탁합니다
2016-05-19
121
글번호 98241
답변완료
수고 하십니다
더위가 기승을 부리고 있답니다.. 건강챙기세요
(1) 다름이 아니라 볼린져 5하단 밴드가 20하단 밴들를 하향 돌파 시 종목을 찾고 십습니다.
종목이 계속 유지되면 종목도 계속 검색되게 해주세요
(2) 5일선이 볼린져 10상단밴드를 계속돌파하고.20밴드 상단위에 주가가 있는 종목.5하단 밴드가 20하단 밴드를 돌파한종목이요 이조건이 계속 유지되면 계속 검색되게 해주세요
늘 감사합니다....
2016-05-20
137
글번호 98237
답변완료
타주기 시스템식 검증
항상 감사드립니다
타주기 시스템식에서 아래조건을 가동할때 식을 검토해주시기 바랍니다..
1_ 동일방향 재진입금지/전일 마지막신호와 무관하게 진입
2_ 2회연속손실시 시스템 신호발생 금지
3_시초가 갭발생시(20틱이상) 첫번재신호 발생금지
이조건에서
1_ 매수매도 ==> 시스템에 따름
2_ 타주기 청산식추가
3_ 최대익절 청산식 추가
요청1) 청산식이 추가되니 시스템 신호가 발생하지 않습니다. 수정부탁드립니다
요청2)_ 2회연속손실시 시스템 신호발생 금지부분의 해설부탁드립니다
3회연속손실시 시스템 신호발생금지로 변경 가능하게....
감사합니다
#########################
##### 당일익절 설정 #####
#########################
input : 당일수익틱수(100),당일손실틱수(45);
var : NP(0),PreNP(0),dayPL(0),DollerToTick(0),당일수익(0),당일손실(0);
NP = NetProfit;
당일수익 = PriceScale*당일수익틱수;
당일손실 = PriceScale*당일손실틱수;
if stime == 170000 or (stime > 170000 and stime[1] < 170000) then
PreNP = NP[1];
##################################################
##### 당일 17:00 장시작 / 익일 14:30 장종료 #####
##################################################
### 동일방향 재진입금지/전일 마지막신호와 무관하게 진입 ###
### 2회연속손실시 시스템 신호발생 금지 ###
### 시초가 갭발생시(20틱이상) 첫번재신호 발생금지 ###
var : entrycnt(0),cond(false),T(0),count(0),gap(false),Xcond(false);
#장시작
if stime == 170000 or (stime > 170000 and stime[1] < 170000) Then{ # 현지시간_뉴욕 17:00 장시작 #
Entrycnt = 0;
cond = false;
Xcond = false;
#매수매도 방향을 알기위한 변수 초기값은 0
T = 0;
#조건만족횟수 카운트 초기화 0
count = 0;
#시가가 전봉종가(전일종가)보다 20틱이상 크거나 20틱이상 낮으면
#gap은 true 아니면 false
if O >= C[1]+PriceScale*20 or O <= C[1]-PriceScale*20 Then
gap = true;
Else
gap = false;
}
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
Entrycnt = Entrycnt+1;
if TotalTrades > TotalTrades[1] and (IsExitName("BP",1) or IsExitName("BL",1) or IsExitName("SP",1) or IsExitName("SL",1)) Then
Xcond = true;
cond = false;
if entrycnt >= 2 Then{
if MarketPosition == 0 and PositionProfit(1) < 0 and PositionProfit(2) < 0 Then
cond = true;
if MarketPosition != 0 and PositionProfit(0) < 0 and PositionProfit(1) < 0 Then
cond = true;
}
if (stime > 170000 or stime < 143000) and (DayPL < 당일수익틱수*PriceScale and dayPL > -당일손실틱수*PriceScale and Xcond == false ) Then{
# 현지시간_뉴욕 17:00 장시작~익일 14:30 장종료 #
##############################
##### 1_ 매매식 #####
##############################
if T <= 0 and #T가 0이고 매수조건이 만족하면
((entrycnt == 0) or
(entrycnt >= 1 and ((MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)))) and #동일방향 재진입금지#
V10 == 1 and data1(c)>선행1 and var12==1 and var13==1 and upAroon1 > DnAroon1 and upAroon1>70 and
V70 == 1 and vv12==1 and upAroon2 > DnAroon2 and dnAroon2<50 Then {
T = 1; #T는 1(매수조건만족했음을 나타냄)
count = count+1; #count는 1증가, 장시작이후 조건만족 횟수를 카운트
#gap이 false이거나 gap이 true이면 count가 2이상일때 진입
if gap == false or (gap == true and count >= 2) Then
{
if cond == false then
buy("B_200_20");
Else
ExitShort();
}
}
if T >= 0 and
((entrycnt == 0) or
(entrycnt >= 1 and ((MarketPosition == 0 and MarketPosition(1) != -1) or (MarketPosition == 1)))) and #동일방향 재진입금지#
V10 == -1 and data1(c)<선행1 and var12==-1 and var13==-1 and upAroon1 < DnAroon1 and dnAroon1>70 and
V70 == -1 and vv12==-1 and upAroon2 < DnAroon2 and upAroon2<50 Then {
T = -1;
count = count+1;
#gap이 false이거나 gap이 true이면 count가 2이상일때 진입
if gap == false or (gap == true and count >= 2) Then
{
if cond == false Then
sell("S_200_20");
Else
ExitLong();
}
}
}
###############################
##### 청산 시스템_1 #####
###############################
if MarketPosition == 1 and V70 == -1 and vv12==-1 and upAroon2 < DnAroon2 and upAroon2<50 then
exitlong("eB_타주기");
if MarketPosition == -1 and V70 == 1 and vv12==1 and upAroon2 > DnAroon2 and dnAroon2<50 Then
ExitShort("eS_타주기");
##########################################
##### 당일수익,당일손실 조건청산 #####
##########################################
if MarketPosition == 1 Then{
ExitLong("BP",atlimit,EntryPrice+당일수익-dayPL);
ExitLong("BL",AtStop,EntryPrice-당일손실-dayPL);
}
if MarketPosition == -1 Then{
ExitShort("SP",atlimit,EntryPrice-당일수익+dayPL);
ExitShort("SL",AtStop,EntryPrice+당일손실+dayPL);
}
##########################################
##### 최대이익도달후 조건청산 #####
##########################################
if MarketPosition == 1 Then{
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*30 Then
exitlong("bx30",AtStop,EntryPrice+PriceScale*27);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*50 Then
exitlong("bx50",AtStop,EntryPrice+PriceScale*47);
}
2016-05-19
99
글번호 98235
답변완료
문의드립니다
1. 가장 최근 상한가의 봉(15%~30%사이)과 그 바로전의 상한가봉(15%~30% 사이)은 바로위에 큰 화살표가 뜨게 하고싶습니다.
2. 가장 최근 상한가의 봉(15%~30%)의 시가와 종가 에 선을 긋고싶고, 그 바로전의 상한가 봉(15%~30%)도 시가와 종가에 선을 긋고 싶습니다.
3. 상한가가 나왔던 종목이라면, 상한가가 그럼 총 선이 4개(최근상한가 시가종가, 그전 상한가 시가종가)인데 이 선들의 1% 근접한 종목들의 검색식을 알고싶습니다.
항상 신경써주셔서 감사드립니다.
2016-05-20
102
글번호 98234
답변완료
시스템식 문의 드립니다
안녕하세요 시스템식 문의 드려요
음봉 마감 거래량 합계(A)
양봉 마감 거래량 합계(B)
A>B 이면 매수
A<B 이면 매도
신호발생봉의 양봉저가 하향돌파시 매수청산
신호발생봉의 시가 하향돌파시 매수청산
신호발생봉의 음봉고가 상향돌파시 매도청산
신호발생봉의 시가 상향돌파시 매도청산
더운날씨 시원스런 답변 늘 감사드립니다 ^^*
2016-05-19
120
글번호 98232
답변완료
수식부탁드립니다
1번질문)
10초차트입니다.
data1 = 삼성전자
data2 = 삼성전기
data3 = 삼성생명
data4 = 삼성sdi
이렇게 전략실행차트에 표시했을 때
1분마다 가장 상승율이 큰 종목을 text함수를 이용하여 표시하기
1분마다 가장 하락율이 큰 종목을 text함수를 이용하여 표시하기
1분마다 거래량이 가장 큰 종목을 PlaySound 로 알림소리내기 (이건 예스 알람 기본으로 해주세요)
2번질문)
30분봉차트에서
매일 첫 봉의 시고저종,거래량,업볼,다운볼을 print문으로 출력하고 싶습니다
항상 감사합니다 (_ _)
2016-05-19
145
글번호 98231