커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5306
글번호 230811
답변완료
수식 부탁드립니다.
안녕하세요
항상 많은 도움에 감사드립니다.
손절 익절 초기 설정은 손절(25틱)/익절(25틱) 입니다.
(1) 진입후에 30분이 지나도 청산이 되지 않는 경우, 손절/익절을 각 각 10틱으로 변경하고,
그 이후에 30분이 지나도 청산이 되지 않으면 현재가에 청산한다.
(2) 진입후에 20봉이 경과해도 청산이 되지 않는 경우, 손절/익절을 각 각 10틱으로 변경하고,
그 이후에 또 20봉이 경과해도 청산이 되지 않으면 현재가에 청산한다.
위 수식을 예스랭귀지와 예스스팟 두가지로 설정이 가능하다면 각 각 부탁드리겠습니다.
감사합니다.
2019-06-18
312
글번호 129557
답변완료
지표식
분봉에서
최근60개봉에서 최고값, 최저값을 나타내는 식을 구합니다
감사합니다
2019-06-18
293
글번호 129556
답변완료
알려 주세요
이평이 고저선 2줄로 나오는 수식좀 알려 주세요
2019-06-18
306
글번호 129555
답변완료
부탁드립니다
언제나 감사를 드립니다
제가 아주 초보이면서 예스스탁 새내기 입니다
잘 부탁 드립니다
2019-06-19
290
글번호 129554
답변완료
검색식 부탁드립니다.
안녕하세요.
검색수식 좀 부탁드립니다.
수식에서는 반드시 input : ndate(20180908); 를 넣어서 특정 날짜 변수를 적용부탁드립니다.
현재봉부터 2봉전까지의 최저가를 aa라하고 3봉전부터 24봉전까지의 최저가를 bb라 하고 25봉전부터 47봉전까지의 최저가를 cc라하고 48봉전부터 95봉전까지의 최저가
를 dd라 하고 96봉전부터 143봉전까지의 최저가를 ee라 하고 144봉전부터 191봉전까지의 최저가를 ff라하고 192봉전부터 239봉전까지의 최저가를 gg라 한다면
bb<=aa 커야하고 최근 3봉동안의 평균 거래대금이 3억이상이면서
C[3]<cc and aa>cc 또는 C[3]>dd and aa<dd 또는 C[3]<ee and aa>ee 또는 C[3]>ff and aa<ff 또는 C[3]>gg and aa<gg 인 종목을 검색하는 수식 부탁드립니다.
이때 반드시 상장이후 봉이 239봉 이상 형성된 종목만 검색이 되고 그 이하 봉만 형성된 신규 종목은 검색이 안되는 현상이 없도록 신경써 주세요. (예전에 수식 작성때 그런
적이 있어서요) 예전에 59995 번과 비슷한 방식의 수식입니다.
예를 들어 상장된지 25봉이상이고 239봉이하인 종목도 위 수식이 만족하면 반드시 검색이 되어야 합니다.
잘 부탁드립니다.
2019-06-18
347
글번호 129553
답변완료
문의드립니다
Stochastics Slow 지표 지수로 수식 부탁드립니다
2019-06-18
300
글번호 129550
답변완료
안녕하세요
안녕하세요.
수고 많으십니다.
1) 아래수식 보완 부탁드립니다.
1 이동평균선이 중심선의 종가를 아래로 갈때는 중심선은 파랑색 선으로 표시하고.
1 이동평군선이 중심선의 종가를 위로 갈때는 중심선은 빨강색선 으로 표시 하고저 합니다
아래 수식을 적용해보았으나 잘 안되네요.
var1 = ma(C,1 );
var2 = ma(C,20);
Plot1(Sma1, "이동평균1");
Plot2(Sma2, "이동평균2");
plot3((HH+LL)/2,"중심값" ,iff(var1 > HH+LL, RED ,BLUE));
plot4(0,"하단값");
2) 위수식 강조식이 가능한가요.
1 이동평균선이 중심선의 종가를 아래로 갈때는 캔들의 색이 파랑색 캔들로 표시하고.
1 이동평군선이 중심선의 종가를 위로 갈때는 캔들의 색이 빨강색 캔들로 표시가 가능
하시면 부탁 드립니다.
감사 합니다 수고 하세요
2019-06-19
314
글번호 129549
답변완료
부탁합니다
주식캔들차트에서
시가대비 10%이상 또는 20%이상 오를때
단일가 거래로 스톱이되는데
캔들창에 9:00정시 시작가대비 10% 또는 20% 금액선이 수평으로 표기되면
매매하는데 도움이될거같읍니다.
부탁합니다
***당일 변동성완화장치조건이 캔들차트에 라인으로 표시되면 좋겠습니다***
*** 2분봉 캔들 차트에 적용하려합니다***
2019-06-18
319
글번호 129548
답변완료
재문의
청산 식만 보내면 알 수가 없군요 ..
주로 매수 추적, 매수 손익 분기 등등 이런것으로 청산 하려 하는데
대부분 스탑스트레일잉 또는 스파이크 청산2로만 나오네요
뭐가 잘 못 되었을 까요 ?
input:최소변화폭(5);
var:j(0),벽돌크기(0),벽돌개수(0),방향(0),상승(1),하락(-1),Sum(0),CSum(0);
array:고[10](0),저[10](0),렌코[500](0);
if index == 0 then
{
벽돌크기 = 최소변화폭;
고[0] = C;
저[0] = C;
렌코[0] = C;
}
#==========================================#
# 렌코 계산
#==========================================#
if 방향 == 0 then
{
if 저[0] - 벽돌크기 >= C then
{
벽돌개수 = int((저[0]-C)/벽돌크기);
저[0] = 저[0] - 벽돌크기 * 벽돌개수;
방향 = 하락;
for j = 499 downto 벽돌개수
{
렌코[j] = 렌코[j-벽돌개수];
}
for j = 벽돌개수 - 1 downto 0
{
렌코[j] = 렌코[j+1] - 벽돌크기;
}
}
else if 고[0] + 벽돌크기 <= C then
{
벽돌개수 = int((C-고[0])/벽돌크기);
고[0] = 고[0] + 벽돌크기 * 벽돌개수;
방향 = 상승;
for j = 499 downto 벽돌개수
{
렌코[j] = 렌코[j-벽돌개수];
}
for j = 벽돌개수 - 1 downto 0
{
렌코[j] = 렌코[j+1] + 벽돌크기;
}
}
}
else if 방향 == 하락 then
{
if 저[0] - 벽돌크기 >= C then
{
벽돌개수 = int((저[0]-C)/벽돌크기);
저[0] = 저[0] - 벽돌크기 * 벽돌개수;
for j = 499 downto 벽돌개수
{
렌코[j] = 렌코[j-벽돌개수];
}
for j = 벽돌개수 - 1 downto 0
{
렌코[j] = 렌코[j+1] - 벽돌크기;
}
}
if 저[0] + 2*벽돌크기 <= C then
{
for j = 8 downto 0
{
고[j+1] = 고[j];
}
방향 = 상승;
벽돌개수 = int((C-저[0])/벽돌크기);
고[0] = 저[0] + 벽돌크기 * 벽돌개수;
for j = 499 downto (벽돌개수-1)
{
렌코[j] = 렌코[j-(벽돌개수-1)];
}
렌코[벽돌개수-2] = 렌코[벽돌개수-1] + 2*벽돌크기;
if 벽돌개수 > 2 then
{
for j = 벽돌개수 - 3 downto 0
{
렌코[j] = 렌코[j+1] + 벽돌크기;
}
}
}
}
else if 방향 == 상승 then
{
if 고[0] + 벽돌크기 <= C then
{
벽돌개수 = int((C-고[0])/벽돌크기);
고[0] = 고[0] + 벽돌크기 * 벽돌개수;
for j = 499 downto 벽돌개수
{
렌코[j] = 렌코[j-벽돌개수];
}
for j = 벽돌개수 - 1 downto 0
{
렌코[j] = 렌코[j+1] + 벽돌크기;
}
}
if 고[0] - 3*벽돌크기 >= C then
{
for j = 8 downto 0
{
저[j+1] = 저[j];
}
방향 = 하락;
벽돌개수 = int((고[0]-C)/벽돌크기);
저[0] = 고[0] - 벽돌크기 * 벽돌개수;
for j = 499 downto (벽돌개수-1)
{
렌코[j] = 렌코[j-(벽돌개수-1)];
}
렌코[벽돌개수-2] = 렌코[벽돌개수-1] - 2*벽돌크기;
if 벽돌개수 > 2 then
{
for j = 벽돌개수 - 3 downto 0
{
렌코[j] = 렌코[j+1] - 벽돌크기;
}
}
}
}
if 방향==상승 and 방향[1]==하락 then
Buy();
if 방향==하락 and 방향[1]==상승 then
Sell();
Input : BuyATRP(46),SellATRP(6),BuyATRS1(2.5),BuyATRS2(4.0),BuyATRS3(4.0),SellATRS1(3.5),SellATRS2(6.0),SellATRS3(6.0);
Input : BuyStoploss(12), SellStoploss(6), BuyTrailing(5), BuyFloor(20), SellTrailing(5),SellFloor(8.5);
Input:break(1.9),level(0.3),big(8),sbreak(1.9),slevel(0.3),sbig(8);
var:진입후최고가(0),진입후최저가(0);
If MarketPosition == 1 Then
{
진입후최고가 = Highest(H,BarsSinceEntry + 1);
ExitLong("매수추적",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS1);
ExitLong("매수변동성",AtStop,C - ATR(BuyATRP) * BuyATRS2);
If 진입후최고가 >= Entryprice + ATR(BuyATRP) * break Then {
ExitLong("매수손익분기",AtStop,Entryprice + ATR(BuyATRP) * level);
ExitLong("매수추적1",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS3);
}
If 진입후최고가 >= Entryprice + ATR(BuyATRP) * big Then
{
ExitLong("매수초과수익",AtStop,Lowest(L,3));
}
SetStopLoss(BuyStoploss, PointStop);
SetStopTrailing(BuyTrailing,BuyFloor,PointStop);
}
If MarketPosition == -1 Then {
진입후최저가 = Lowest(L,BarsSinceEntry + 1);
ExitShort("매도추적",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS1);
ExitShort("매도변동성",AtStop,C + ATR(SellATRP) * SellATRS2);
If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbreak Then {
ExitShort("매도손익분기",AtStop,Entryprice - ATR(SellATRP) * slevel);
ExitShort("매도추적1",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS3);
}
If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbig Then {
ExitShort("매도초과수익",AtStop,Highest(H,3));
}
SetStopLoss(SellStoploss, PointStop);
SetStopTrailing(SellTrailing,SellFloor,PointStop);
}
If MarketPosition == 0 Then { // 無포일 때 손절 설정을 clear 해야 만 오류가 안 생김
SetStopLoss(0, PointStop);
SetStopTrailing(0, 0, PointStop);
}
If MarketPosition == 1 Then
ExitLong("스파이크청산-1", AtLimit, C + ATR(20) * 7); // 상승돌파 시 매수청산
If MarketPosition == -1 Then
Exitshort("스파이크청산+1", AtLimit, C - ATR(20) * 7); // 상승돌파 시 매도청산
Var:SpikeHigh(0), spikelow(0);
If MarketPosition == 0 Then { // 무포지션일때
SpikeHigh = 10; // 초기화
Spikelow = 10; // 초기화
Condition1 = false;
}
If MarketPosition == 1 Then { // 매수포지션일 때
If !Condition1 and // 스파이크 미발생
H > C[1] + ATR(20) * 7 Then { // 전봉 종가보다 7 * ATR 이상 상승
SpikeHigh = H; // 스파이크 고점 설정
Condition1 = true; // 스파이크 발생
}
If Condition1 Then { // 스파이크 발생 후
If SpikeHigh < H then SpikeHigh = H; // 신규 고점 나오면 갱신
ExitLong("스파이크청산-2", AtStop, SpikeHigh - ATR(20) * 2);
//추적청산처럼 꼭지 찍고 내려올 때
}
}
If MarketPosition == -1 Then { // 매수포지션일 때
If !Condition1 and // 스파이크 미발생
L < C[1] + ATR(20) * 7 Then { // 전봉 종가보다 7 * ATR 이상 상승
SpikeHigh = L; // 스파이크 고점 설정
Condition1 = true; // 스파이크 발생
}
If Condition1 Then { // 스파이크 발생 후
If Spikelow > H then SpikeHigh = L; // 신규 고점 나오면 갱신
Exitshort("스파이크low청산-2", AtStop, Spikelow + ATR(20) * 2);
}
}
2019-06-18
308
글번호 129547