커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3221
글번호 230811
답변완료
검색
항상감사합니다
첨삭식 부탁드립니다
---
#최고가봉 이후에 전봉저가보다 작고 고가는 최고가 이하이면 ( )
if index > Hi and L < L[1] and H <= HH Then
{
Condition2 = false;
plot2(H,"검색",white);
}
--1)- #최고가봉 이후에 전봉저가보다 작고 고가는 최고가 이하이면 ( )
이부분에서
이조건이 고정이라 정하고
이 다음캔들이 이조건을 만족할때 매도로 정할수 있나요?
이 식에서 어려움을 겪는 부분은
변곡이전에 표시가나와서 의문이 생깁니다
예)
2분봉은 조건식을 만족하는데
10분봉은 미리 앞서서 표시가 나오거나
앞캔들의 고가저가 봉에 묻혔을떄(고가도 안높고 저가도 안낮고)
이럴땐 예외식을 넣어야 하는 지
2)매수와 매도 식은 각 챠트에 나온다 하셨는데
1분봉챠트를 2개만들어 각각매수 매도를 적용해야 하나요?
3)발생을 알기위한 변수는
어떤의미인가요?
--------------------------------------------------------
------------------------------------------------------------------------
-----------------------------------------------------------
var : S(0),HH(0),Hi(0);
#저가 상승구간이면 1
if L > L[1] Then
S = 1;
#저가 하락구간이면 -1
if L < L[1] Then
S = -1;
#저가 상승반전발생
if S == 1 and S[1] != 1 Then
{
#최고가 초기값 저장
HH = H;
#최고가봉 봉번호
Hi = index;
#발생을 알기위한 변수
Condition2 = true;
}
#상승반전 이후
if Condition2 == true then
{
#최고가 갱신
if H > HH Then
{
HH = H;
Hi = index;
}
#최고가봉 이후에 전봉저가보다 작고 고가는 최고가 이하이면 ( )
if index > Hi and L < L[1] and H <= HH Then
{
Condition2 = false;
plot2(H,"검색",white);
}
}
-------------------------------------------------------------------
var : T(0),LL(0),Li(0);
#고가 상승구간이면 1
if H > H[1] Then
T = 1;
#고가 하락구간이면 -1
if H < H[1] Then
T = -1;
#고가 하락반전발생
if T == -1 and T[1] != -1 Then
{
#최저가 초기값 저장
LL = L;
#최저가봉 봉번호
Li = index;
#발생을 알기위한 변수
Condition1 = true;
}
#하락반전 이후
if Condition1 == true then
{
#최저가 갱신
if L < LL Then
{
LL = L;
Li = index;
}
#최저가봉 이후에 전봉고가보다 크고 저가는 최저가 이상이면 ( )
if index > Li and H > H[1] and L >= LL Then
{
Condition1 = false;
plot1(L,"검색",CYAN);
}
}
2020-08-18
934
글번호 141566
답변완료
과거 검색 식 문의 드립니다.
수고하십니다.
사용법을 찾아보니, 봉 기준으로 검색이 가능한 것 같더군요.
과거 특정 일을 검색하는 것은 아닌 것 같고,
분, 일, 주, 봉을 기준으로 기준 이전까지 검색을 해 주는 것 같습니다.
그럼 기간이 다른데 상관 없나요?
예를 들어 백 봉 기준이라고 하면,
분 백봉과 월 백봉은 엄청난 기간 차이가 날텐데요.
여튼 죄송하지만.
주봉 기준으로 간단한 수식 하나만 작성 부탁 드립니다.
주봉 기준으로 최대 검색 기준까지
5주 이동 평균이 20일 이동 평균을 골든크로스 하는 것을 어찌 검색을 할까요?
골든크로스 수식은 알겠는데,
과거를 검색하는 것을 잘 모르겠어서요.
그럼 부탁 좀 드리겠습니다.
2020-08-18
927
글번호 141565
답변완료
재질문입니다.ㅍ.ㅍ
여러번 질문드려서 이제죄송하기까지한데여
자꾸 값이 이상하게 나와서요
68799번글에 대한 답변을 받고
대입시켜봤습니다.
오류?같은데 아무튼 사진과 설명 다시 드려보겠습니다
3번에 대한 답변을 듣고 똑같이 복사하여 대입해봤습니다
var : A1Price(0),A1high(0);
var : A2Price(0),A2high(0);
if MarketPosition == 1 Then
{
#A1진입 발생
#보유수량이 증가하고 최근 발생한 진입명이 A1이면
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A1" Then
{
#진입가 저장
A1Price = LatestEntryPrice(0);
#진입이후 최고가의 초기값으로 현재봉 고가저장
A1high = H;
}
#새로운 고가가 발생하면 변수의 값을 새로운 고가를 변경
if A1high > 0 and H > A1high Then
A1high = H;
#12% 수익이면 청산
ExitLong("C1",AtLimit,A1Price*1.12,"A1");
#2% 이상 수익이후에 7% 하락하면 청산
if A1high >= A1Price*1.02 Then
ExitLong("C2",AtStop,A1high*0.93,"A1");
#7% 손실시 청산
ExitLong("C3",AtStop,A1Price*0.93,"A1");
#A2진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A2" Then
{
A2Price = LatestEntryPrice(0);
A2high = H;
}
if A2high > 0 and H > A2high Then
A2high = H;
ExitLong("D1",AtLimit,A2Price*1.12,"A2");
if A2high >= A2Price*1.02 Then
ExitLong("D2",AtStop,A2high*0.93,"A2");
ExitLong("D3",AtStop,A2Price*0.93,"A2");
}
Else
{
A1Price = 0;
A1high = 0;
A2Price = 0;
A2high = 0;
}
이 식을 대입해 봤는데요
파일과 같이 매도 신호가 잡힙니다.
왜이러죠
진입신호 A2대비 청산 될만한게 아무것도 없는데요
참고로 "D1"표시된 봉은 저가고가폭이 7프로가 채 안됩니다
2020-08-20
928
글번호 141564
답변완료
수식 문의드립니다.
매수조건
20이평 상승, 캔들 5이평 3틱이상 아래,캔들 시작가+1틱 매수
청산 50틱,손절30틱
손절시 손절가보다 아래에서 1회 매수
전고점 갱신하고 매수조건 일치 매수, 전고점 미갱신시 매수 않함
청산 후 조건일치시 반복해서 매수
포지션있을경우 추가진입 하지않음
매도조건
20이평 하락, 캔들 5이평 3틱이상 위, 캔들 시작가-1틱 매도
청산 50틱,손절 30틱
손절시 손절가 위 1회 진입
청산 후 조건일치시 반복해서 매수
전저점 갱신하고 매도조건 일치 매도 전고점 미갱신 진입않함
포지션 있을 경우 추가 진입 않함
매수계좌, 매도계좌 각각 사용
2020-08-18
809
글번호 141563
답변완료
수식 전환 부탁드립니다.
더운 날씨에 고생 많으십니다. 다음 수식을 예스랭귀지에 맞도록 전환 부탁드립니다.
study("ATR Trailing Stoploss",overlay=true)
Atr=input(defval=5,title="Atr Period",minval=1,maxval=500)
Hhv=input(defval=10,title="HHV Period",minval=1,maxval=500)
Mult=input(defval=2.5,title="Multiplier",minval=0.1)
Barcolor=input(true,title="Barcolor")
TS=highest(high-Mult*atr(Atr),Hhv),barssince(close>highest(high-Mult*atr(Atr),Hhv) and close>close)
Color=iff(close>TS,color.green,iff(close<TS,color.red,color.black))
barcolor(Barcolor? Color:na)
plot(TS,color=Color,linewidth=3,title="ATR Trailing Stoploss")
Buy=crossover(close,TS)
Sell=crossunder(close,TS)
plotshape(Buy,color=color.green,text="Buy",location=location.belowbar,style=shape.labelup,textcolor=color.white,transp=10)
plotshape(Sell,color=color.red,text="Sell",style=shape.labeldown,textcolor=color.white,transp=10)
alertcondition(Buy, "Buy Signal", "Buy ATR Trailing Stoploss")
alertcondition(Sell, "Sell Signal", "Sell ATR Trailing Stoploss")
2020-08-18
812
글번호 141562
답변완료
문의 드립니다.
안녕하세요
항상 빠른 답변 감사 드립니다.
1. 지표식
주가가 음봉이고,
볼린저밴드(20.2) 하단선 1%에 위치하고,
거래량 10일 이평선 위에 있을때
상승삼각형 표시를 캔들 아래에 표시하고자 합니다.
2, 종목검색식
위 지표식을 기반으로
당일 분봉에서 검색시점에
분봉상 장시작후 볼린져밴드(20,2) 상단선이 볼린져밴드(60.2)상단선을 돌파한 종목중에
위 지표식에 표시된 상승삼각형 발생한 종목을 거래량 오름차순으로 검색 하고자 합니다.
3, 시스템식
위 지표식과 검색식을 기반으로
분봉상 상승삼각형 신호가 발생하면
매수 한다.
번외로
4. 검색식
분봉상에서 장시작후 검색시점에
위 지표식에 표시된 상승삼각형 신호 발생 숫자를 더하여
합을 내어 오름차순 검색하고
합계가 동일 숫자가 검색되면 거래량 오름차순으로 표시하고자 합니다.
오름차순이 두개가 안되면 합의 숫자 오름차순을 요청 드립니다.
그럼 좋은 하루 되세요^^
2020-08-18
937
글번호 141561
답변완료
지표문의
1. 더운데 고생 많으시죠
2.질문
선물지수가 현재 320.65 인데요
만든 지표에 320.65에서 백단위 300(100단위이상절삭)은 빼고 10단위아래만 가감하구 싶어요
예컨데 20.65(10단위) 만요
3.예를들면
input: p2(10단위아래);
var1 = ema(C,p2)-ema(C,p2);
plot1((var1);
2020-08-18
792
글번호 141560
답변완료
문제점 수정 부탁드립니다.
안녕하세요?
아래의 수식이 현재 익절이 제대로 안나가고있습니다.
손절은 잘되는데 익절폭이 예를들어 1포라고해놓으면 1.2포 1.4포 이런식으로
범위가 다르게 나가고있습니다.
부디 검토부탁드립니다.
감사합니다.
Input : 단기(5), 장기(20), profit_pt(0.5), loss_pt(0.5), 장종료청산(151000);
Variable : ent_position(0);
if MarketPosition == 0 Then{
var1 = 0;
ent_position = 0;
}
//If ma(C,단기)>ma(C,장기) and ( C>O and L==O ) or ( C[1]<O[1] and H[1]==O[1] and C>O ) Then {
If ma(C,단기)>ma(C,장기) and ( C>O and L==O ) and ent_position == 0 Then {
Buy("매수",AtMarket);
Var1 = NextBarOpen;
ent_position = 1;
}
//If ma(C,단기)<ma(C,장기) and ( C<O and H==O ) or ( C[1]>O[1] and L[1]==O[1] and C<O ) Then {
If ma(C,단기)<ma(C,장기) and ( C<O and H==O ) and ent_position == 0 Then {
Sell("매도",AtMarket);
Var1 = NextBarOpen;
ent_position = -1;
}
if PositionProfit >= profit_pt and ent_position<>0 Then{
if ent_position == 1 and C<O Then {
ExitLong("매수청산");
}
if ent_position == -1 and C>O Then {
ExitLong("매도청산");
}
}
SetStopLoss(loss_pt,PointStop);
SetStopEndofday(장종료청산);
2020-08-18
877
글번호 141559
답변완료
매수 청산 각 조건별 구분 수식 부탁드림니다.
국내주식
data1 : 30분봉
data2 : 일봉
매수는 하루에 3회 ( 10시 12시 2시) 매수 진입 하는 수식이구요
RSI기준 50 이상일 때 10만원어치 매수진입
RSI기준 40 이하일 때 50만원어치 매수진입
RSI기준 30 이하일 때 200만원어치 매수진입
청산은 5% 수익시 각각 청산하는 수식이 아래 식입니다.
--> 변경 요청건
각각 매수 조건별로 청산 수식을 다르게 반영하고 싶습니다.
1. RSI기준 50 이상 10만원어치 매수
--> 기존과 같음 진입건수별로 5% 수익시 매수청산
2. RSI기준 40 이하 50만원어치 매수
3. RSI기준 30 이하 200만원어치 매수
2번과 3번은 data2(일봉) MFI(15) > 85 또는 심리도(15) > 90 일때 일괄 청산
하는 수식을 추가할수 있게 부탁드림니다.
기존 적용 수식
========================================================================
input : 일봉RSI기간(30);
input : 일봉RSI값1(50),일봉RSI값2(40),일봉RSI값3(30);
input : 손절봉수(5000);
input : 진입최대개수(1000);
input : 일차진입금액(10);
input : 이차진입금액(50);
input : 삼차진입금액(200);
input : 청산률(5);
var : RSI2(0,Data2);
RSI2 = Data2(RSI(일봉RSI기간));
if MarketPosition == 0 or (MarketPosition == 1 and MaxEntries < 진입최대개수) Then
{
if data1(sTime == 100000 or sTime == 120000 or sTime == 140000) Then
{
if Data2(RSI2 > 일봉RSI값1) Then
{
Buy("불타기매매1",OnClose,DEf,Floor(일차진입금액*10000/c));
}
if Data2(RSI2 < 일봉RSI값2 and RSI2 > 일봉RSI값3 ) Then
{
Buy("하락과도매매1",OnClose,DEf,Floor(이차진입금액*10000/c));
}
if Data2(RSI2 < 일봉RSI값3) Then
{
Buy("폭락과도매매1",OnClose,DEf,Floor(삼차진입금액*10000/c));
}
}
}
if MarketPosition == 1 and BarsSinceEntry == 손절봉수 Then
ExitLong();
SetStopProfittarget(청산률,PercentStop);
2020-08-18
1009
글번호 141558