커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3582
글번호 230811
답변완료
식을 예스랭귀지로 변환 부탁드립니다.
아래식을 예스랭귀지로 변환 부탁드립니다.
// 입력값 설정
input Period = 18; // 이동평균 주기
input MultiD = 0.5; // 초기 표준편차 배수
input RSILength = 14; // RSI 주기
input MACDFast = 12; // MACD 빠른 선
input MACDSlow = 26; // MACD 느린 선
input MACDSignal = 9; // MACD 신호선
// 변수 선언
var MAv = 0; // 이동평균선
var BBup = 0; var BBdn = 0; // 볼밴 0.5σ
var BBup1 = 0; var BBdn1 = 0; // 볼밴 1σ
var BBup1_5 = 0; var BBdn1_5 = 0; // 볼밴 1.5σ
var BBup2 = 0; var BBdn2 = 0; // 볼밴 2σ
var BBup2_5 = 0; var BBdn2_5 = 0; // 볼밴 2.5σ
var BBup3 = 0; var BBdn3 = 0; // 볼밴 3σ
var BBWidth = 0; // 볼밴 폭 (스퀴즈 감지용)
var MACDLine = 0; var SignalLine = 0; var MACDHist = 0; // MACD 변수
var RSIVal = 0; // RSI 값
var OBVVal = 0; // OBV 값
var VolumeSpike = 0; // 거래량 급증 여부
// 계산
MAv = sma(close, Period); // 단순 이동평균선 (SMA)
// 볼린저밴드 계산 (다양한 표준편차)
BBup = MAv + (stdev(close, Period) * MultiD);
BBdn = MAv - (stdev(close, Period) * MultiD);
BBup1 = MAv + (stdev(close, Period) * 1);
BBdn1 = MAv - (stdev(close, Period) * 1);
BBup1_5 = MAv + (stdev(close, Period) * 1.5);
BBdn1_5 = MAv - (stdev(close, Period) * 1.5);
BBup2 = MAv + (stdev(close, Period) * 2);
BBdn2 = MAv - (stdev(close, Period) * 2);
BBup2_5 = MAv + (stdev(close, Period) * 2.5);
BBdn2_5 = MAv - (stdev(close, Period) * 2.5);
BBup3 = MAv + (stdev(close, Period) * 3);
BBdn3 = MAv - (stdev(close, Period) * 3);
// 볼밴 폭 계산 (스퀴즈 감지)
BBWidth = BBup2 - BBdn2;
// MACD 계산
MACDLine = ema(close, MACDFast) - ema(close, MACDSlow);
SignalLine = ema(MACDLine, MACDSignal);
MACDHist = MACDLine - SignalLine;
// RSI 계산
RSIVal = rsi(close, RSILength);
// OBV 계산
OBVVal = obv;
// 거래량 급증 체크 (이전 5개 캔들 평균 대비 2배 이상)
VolumeSpike = volume > (sma(volume, 5) * 2);
// 매매 신호 조건
var LongEntry = 0; // 롱 진입 신호
var PartialExit = 0; // 일부 청산 신호
var FullExit = 0; // 전량 매도 신호
// 롱 진입 조건: 볼밴 스퀴즈 후 상한선 돌파 + 거래량 급증 + MACD 골든 크로스
LongEntry = (BBWidth < BBWidth[1] and close > BBup2 and VolumeSpike and MACDLine crosses above SignalLine);
// 일부 청산 조건: RSI 70 초과
PartialExit = (RSIVal > 70);
// 전량 매도 조건: OBV 하락 다이버전스 (가격은 상승인데 OBV는 하락)
FullExit = (close > close[1] and OBVVal < OBVVal[1]);
// 시각화
plot(MAv, "이평", color.blue);
plot(BBup, "0.5", color.gray);
plot(BBdn, "0.5", color.gray);
plot(BBup1, "1", color.gray);
plot(BBdn1, "1", color.gray);
plot(BBup1_5, "1.5", color.orange);
plot(BBdn1_5, "1.5", color.orange);
plot(BBup2, "2", color.red);
plot(BBdn2, "2", color.red);
plot(BBup2_5, "2.5", color.purple);
plot(BBdn2_5, "2.5", color.purple);
plot(BBup3, "3", color.black);
plot(BBdn3, "3", color.black);
// 매매 신호 시각화
plotshape(LongEntry, "롱 진입", shape.triangleup, location.belowbar, color.green, size.small);
plotshape(PartialExit, "일부 청산", shape.triangledown, location.abovebar, color.yellow, size.small);
plotshape(FullExit, "전량 매도", shape.triangledown, location.abovebar, color.red, size.small);
// 추가 지표 플롯 (선택적)
plot(MACDLine, "MACD", color.blue);
plot(SignalLine, "Signal", color.red);
plot(RSIVal, "RSI", color.purple);
plot(OBVVal, "OBV", color.teal);
2025-03-15
534
글번호 189211
답변완료
문의 드립니다.
length = input(100, minval=1)
src = input(hlc3, title="Source")
mult = input(3.0, minval=0.001, maxval=50)
basis = vwma(src, length)
dev = mult * stdev(src, length)
upper_1= basis + (0.236*dev)
upper_2= basis + (0.382*dev)
upper_3= basis + (0.5*dev)
upper_4= basis + (0.618*dev)
upper_5= basis + (0.764*dev)
upper_6= basis + (1*dev)
lower_1= basis - (0.236*dev)
lower_2= basis - (0.382*dev)
lower_3= basis - (0.5*dev)
lower_4= basis - (0.618*dev)
lower_5= basis - (0.764*dev)
lower_6= basis - (1*dev)
plot(basis, color=fuchsia, linewidth=2)
p1 = plot(upper_1, color=white, linewidth=1, title="0.236")
p2 = plot(upper_2, color=white, linewidth=1, title="0.382")
p3 = plot(upper_3, color=white, linewidth=1, title="0.5")
p4 = plot(upper_4, color=white, linewidth=1, title="0.618")
p5 = plot(upper_5, color=white, linewidth=1, title="0.764")
p6 = plot(upper_6, color=red, linewidth=2, title="1")
p13 = plot(lower_1, color=white, linewidth=1, title="0.236")
p14 = plot(lower_2, color=white, linewidth=1, title="0.382")
p15 = plot(lower_3, color=white, linewidth=1, title="0.5")
p16 = plot(lower_4, color=white, linewidth=1, title="0.618")
p17 = plot(lower_5, color=white, linewidth=1, title="0.764")
p18 = plot(lower_6, color=green, linewidth=2, title="1")
트레이딩뷰 수식인데 예스로 좀 바꿔주세요.
2025-03-15
399
글번호 189210
답변완료
문의
1) 청산수식 부탁드립니다.
리버스 거래이고
진입은 3번 입니다.
리버스거래(매수진입명 "a", 매도진입명 "b") 2회와 리버스 거래 2회가 끝난 후
고저점돌파시 1회 입니다.
매수진입이 먼저 발생했을 때
진입명이 "a"
SetStopLoss(2.50,PointStop);
진입명이 "b"
SetStopLoss(2.50,PointStop);
나머지 // 고저점 돌파시
SetStopLoss(2.50,PointStop);
매도진입이 먼저 발생했을 때
진입명이 "a"
SetStopLoss(2.50,PointStop);
진입명이 "b"
SetStopLoss(2.50,PointStop);
나머지 // 고저점 돌파시
SetStopLoss(2.50,PointStop);
항상 고맙습니다.
2025-03-15
325
글번호 189209
답변완료
돌파 조건 검색식 부탁 합니다
A=Lowest(L, 기간);
지표조건
기간 120
1. 돌파 조건 검색식 부탁 드립니다
A= Disparity(Period2);
ValueWhen(1, crossup(A, 기준2) OR crossdown(A, 기준2) ,가격)
지표조건
period2 60
가준값 101
가격(H+L)/2
2. 지표값이 n일동안 하락하지 않았고 N일이 지난후 하락해고 하락한 지표값을 돌파한 종목
검색식 부탁 드립니다 N일예(90일 동안)
avg((highest(high,기간)),기간)
기간 240
3, n일돌안 돌파 적이 없다 돌파한 종목 검색식 부탁 드립니다
2025-03-17
416
글번호 189208
요타 님에 의해서 삭제되었습니다.
2025-03-17
33
글번호 189207
답변완료
종목 검색 부탁드립니다.
A= EnvelopeUp(30,1);
B=ma(C,3);
CrossUp(B,A);
종목 검색식 부탁드립니다
2025-03-14
407
글번호 189206
답변완료
수식 부탁드립니다.
안녕하세요.
1.당일청산 연결선물 시스템 수식에서
일봉의 (전일윗꼬리 + 전일아래꼬리) < 전일몸통 수식 부탁드립니다.
2. 연결선물 당일청산 아래 피라미딩 시스템에서
Input : i증감(0.5),누적진입횟수(3),진입수량(1),
if MarketPosition == 1 and
TimeToMinutes(stime) >= TimeToMinutes(EntryTime) and
MaxEntries < 누적진입횟수 Then
Buy("TM-PBB",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and
TimeToMinutes(stime) >= TimeToMinutes(EntryTime) and
MaxEntries < 누적진입횟수 Then
sell("TM-PSS",AtStop,LatestEntryPrice(0)-i증감,진입수량);
진입명을 다르게 지정 진입하고 첫번째 진입명만 진입한 진입가에서 1.5P 수익 발생시
청산하고 다릉 진입은 기존의 청산으로 청산하는 수식 변경 요청 드립니다.
감사합니다.
2025-03-17
376
글번호 189205
도전74 님에 의해서 삭제되었습니다.
2025-03-14
21
글번호 189204
답변완료
시스템 문의 드립니다
미국 지수 선물로 아래와 같이 자동매매 프로그램을 만들고자 합니다. 시스템 수식을 부탁드립니다.
자동매매 프로그램 수식 설명:
①차트 표시 주기는 3분 단위로 하며, 첫 진입은 장 개시 첫 3분 경과 후인 22:33분(미국 서머타임 기준 한국 시간)에 나스닥100선물과 S&P500선물 등락률 차(=나스닥100선물% - S&P500선물%, "나에차"라고 한다)가 '+기준'이상이면 당해 3분봉 종가로 매수로, '-기준'이하이면 당해 3분봉 종가로 매도로.(여기서 '외부변수'="나에차", '첫 진입 시간', '손절금액')
②반대 진입은 "나에차"가 기존과 반대 방향으로 '±기준'이상으로 두번 지속되면 한다.
③일중 반대 신호가 두번 나오면 청산만 하고 반대 진입을 더 이상 하지 않는다. 결국 일일 최대 진입 회수는 2회로 한다.
④일중 반대 신호가 두번 나오지 않으면 현물 지수가 마감되는 시간(서머타임 기준 한국 시간 새벽 05시)에 청산하고 거래를 끝낸다.
자동매매 프로그램 로직으로 다시 설명하면,
1. 기본 변수 설정
- `기준`: 매매 신호를 결정하는 기준값.
- `나에차`: 나스닥 100선물과 S&P 500선물의 등락률 차.
- `진입횟수`: 일중 최대 진입 횟수 (최대 2회).
- `진입시간`: 첫 진입 시간 (22:33, 서머타임 기준).
- `청산시간`: 마감 시간 (05:00, 서머타임 기준).
- '손절금액': 일중 계좌 손실 금액
2. 차트 표시 주기 설정
- 차트 주기를 3분으로 설정합니다.
3. 첫 진입 조건
if 현재시간 >= 진입시간 then
나에차 = 나스닥100선물% - S&P500선물%
if 나에차 >= 기준 then
매수(현재 3분봉 종가)
진입횟수 += 1
else if 나에차 <= -기준 then
매도(현재 3분봉 종가)
진입횟수 += 1
```
4. 반대 진입 조건
- 반대 방향 신호가 두 번 지속되는지 체크합니다.
if 나에차의 변화가 기존 방향과 반대이고 |나에차| >= 기준 then
반대신호카운트 += 1
if 반대신호카운트 >= 2 then
if 현재 포지션이 매수이면
매도(현재 3분봉 종가)
else if 현재 포지션이 매도이면
매수(현재 3분봉 종가)
반대신호카운트 = 0
진입횟수 += 1
```
5. 청산 조건
- 일중 반대 신호가 두 번 나왔는지 체크 후, 두 번 나오면 청산만 합니다.
if 반대신호카운트 >= 2 then
청산(현재 포지션)
진입횟수 = 0
```
6. 마감 시간 청산
- 마감 시간에 청산합니다.
if 현재시간 >= 청산시간 then
청산(현재 포지션)
```
답변에 미리 감사드립니다.
행복한 주말 보내세요.
2025-03-14
574
글번호 189203