커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5530
글번호 230811
답변완료
안녕하세요
안녕하세요.
수고 많으십니다.
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
322
글번호 129549
답변완료
부탁합니다
주식캔들차트에서
시가대비 10%이상 또는 20%이상 오를때
단일가 거래로 스톱이되는데
캔들창에 9:00정시 시작가대비 10% 또는 20% 금액선이 수평으로 표기되면
매매하는데 도움이될거같읍니다.
부탁합니다
***당일 변동성완화장치조건이 캔들차트에 라인으로 표시되면 좋겠습니다***
*** 2분봉 캔들 차트에 적용하려합니다***
2019-06-18
326
글번호 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
315
글번호 129547
답변완료
문의드립니다.
특정 선물지수에 수평선을 긋습니다.
(특정 선물지수는 변수 처리해서 자유롭게 입력 할 수 있게 해주세요)
5이평이 그 수평선을 하향 돌파 했다가 다시 상향 돌파 하면 매수
5이평이 그 수평선을 상향 돌파 했다가 다시 하향 돌파 하면 매도
감사합니다
2019-06-18
302
글번호 129543
답변완료
부탁합니다
브이아이 라인을
캔들지표에 자동으로 10% 20% 를표기할수있는지요
식좀부탁합니다
2019-06-18
280
글번호 129538
답변완료
타 분봉 지표식 참조
일전에 타 분봉의 ADX지표를 구현하기 힘드시다고 하셨는데,
즉 15분봉으로 매매하면서 90분봉의 ADX지표를 수식에 넣으려고하는 것은 힘들다고
하셨느데, 그러면 챠트에서 보조챠트를 밑에 띄울수가 있던데,
이렇게 보조챠트를 밑에 띄우면 15분봉 시스템식에서 90분봉의 ADX지표를 수식에 넣을 수는
없는지 확인 부탁드립니다. 가능하다면
보조챠트에 있는 ADX지표식을 부탁드립니다
2019-06-18
319
글번호 129530
답변완료
수식 문의드립니다.
안녕하세요?
궁금한 수식이 있어 문의드립니다.
1. 해외선물 1분 차트에서 직전 주봉의 피봇값을 계산하여 선으로 표시하는 수식을 부탁드립니다.
2. 해외선물 1분 차트에서 1시간, 4시간봉의 고가, 저가 값(현재 화면상의 캔들수 참조)을 불러와서 선으로 표시하는 수식을 부탁드립니다.
즐거운 하루 되시기 바랄께요.
감사합니다.
2019-06-18
285
글번호 129529
답변완료
지표문의
1.차트표시 종류에보면
candlevolume차트 라구 있던데
지표로 좀 만들수 없나요
유사해두 됩니다
2.그럼 수고하세요
2019-06-18
295
글번호 129523
답변완료
문의드립니다
안녕하세요, 항상 감사드립니다.
1
식 문의드린부분에서 적용이 안되는 부분 문의드리고자합니다.
아래식에서 지정일, 지정일시 잡는부분에 오류가있는지 잘되지않아
아래와 같이 지정할수있게 부탁드립니다.
저점
일자 20190601 시분 090500 (5분봉상 1번째 봉의 저점)
고점
일자 20190602 시분 091000 (5분봉상 2번째 봉의 고점)
이후 지정한 고점을 넘어서는 고점 발생시 아래와 같이 갱신
(완성봉 종가가 아닌 고점입니다)
수정부탁드립니다.
2.추가 문의드립니다.
위와 동일하게 조정대 비율이 적용되고
고점을 만든뒤 5%하락한 지점의 가격에 다은뒤
재차 고점을 돌파할때 진입
고점을 만든뒤 10하락한 지점에 가격이 다으면 진입하지않음
(ex 고점1000원 -> 하락5% 950원에 닫고->1005원 진입,
하락10% 900원에 닫고 1005원이 될시 진입하지 않음)
100개
진입한뒤 5%상승 전량청산
진입한뒤 6%하락 전량손절
감사합니다!
------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
피라미딩은 다른진입신호만 허용으로 설정하고 적용하시면 됩니다.
input : ndate(20190601),ntime1(90000),ntime2(100000);
input : 진입비율1(65.2),수량1(100),청산비율1(40.0);
input : 진입비율2(70.0),수량2(50),청산비율2(45.0);
input : 진입비율3(80.0),수량3(30),청산비율3(60.0);
input : 손절비율(90);
var : HH(0),LL(0),Tcond(false);
#지정일 지정일시1
if sdate == ndate Then
{
if (sdate != sdate[1] and stime >= ntime1) or
(sdate == sdate[1] and stime >= ntime1 and stime[1] < ntime1) Then
{
#저가(고정)
LL = L;
}
if (sdate != sdate[1] and stime >= ntime2) or
(sdate == sdate[1] and stime >= ntime2 and stime[1] < ntime2) Then
{
#고가(변화)
LL = h; //그날의 최고가이면 초기값을 dayhigh로 변경
Tcond = true;
}
}
if tcond == true then
{
#고가 갱신
if H > HH Then
HH = H;
#첫진입(65.2%위에서 아래로 터치하면 즉시 매수)
if TotalTrades == 0 and MarketPosition == 0 and L > HH-(HH-LL)*(진입비율1/100) Then
buy("b1",atlimit,HH-(HH-LL)*(진입비율1/100),수량1);
#매수 후
if MarketPosition == 1 then
{
#두번째진입(70.0% 위에서 아래로 터치하면 즉시 추가매수)
if MaxEntries == 1 and L > HH-(HH-LL)*(진입비율2/100) Then
buy("b2",atlimit,HH-(HH-LL)*(진입비율2/100),수량2);
#세번째진입(80.0% 위에서 아래로 터치하면 즉시 추가매수)
if MaxEntries == 2 and L > HH-(HH-LL)*(진입비율3/100) Then
buy("b3",atlimit,HH-(HH-LL)*(진입비율3/100),수량3);
#첫 진입후 40%를 상회하면 즉시 전량청산
if MaxEntries == 1 Then
ExitLong("bx1",Atlimit,HH-(HH-LL)*(청산비율1/100));
#두번 진입후 45%를 상회하면 즉시 전량청산
if MaxEntries == 2 Then
ExitLong("bx2",Atlimit,HH-(HH-LL)*(청산비율2/100));
#세번 진입후 60%를 상회하면 즉시 전량청산
if MaxEntries == 3 Then
ExitLong("bx3",Atlimit,HH-(HH-LL)*(청산비율3/100));
#손절비율 이하로 하락시 즉시 전량청산
ExitLong("bx",AtStop,HH-(HH-LL)*(손절비율/100));
}
}
즐거운 하루되세요
2019-06-18
275
글번호 129522