커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1516
글번호 230811
트레이더365 님에 의해서 삭제되었습니다.
2025-10-22
1
글번호 227199
답변완료
수식요청
수식변환 부탁드립니다.valuewhen(1, crossup(선행스팬1, 선행스팬2), max(h,h(1)))
valuewhen
선행스팬크로스
2025-10-22
116
글번호 227198
세력은내밥줄 님에 의해서 삭제되었습니다.
2025-10-22
20
글번호 227197
답변완료
아래의 트레이디이뷰 수식을 변환부탁드립니다.
/@version=6indicator("Dynamic Deviation Levels [BigBeluga]", overlay = true, max_labels_count = 500)
// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
int len = input.int(50)
float mult = input.float(3)
color col_up1 = input.color(#85C1FF, "", inline = "c")
color col_up2 = input.color(#4FA3F2, "", inline = "c")
color col_up3 = input.color(#3182DE, "", inline = "c")
color col_up4 = input.color(#164F96, "", inline = "c")
color col_dn1 = input.color(#FF8A64, "", inline = "cc")
color col_dn2 = input.color(#F26947, "", inline = "cc")
color col_dn3 = input.color(#DE5731, "", inline = "cc")
color col_dn4 = input.color(#A13A20, "", inline = "cc")
bool show_dev = input.bool(false, "Deviation Levels")
color color_na = #363a4500
color mid_line = color.new(chart.fg_color, 50)
// }
// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
atr = ta.atr(200)
mid = ta.hma(ta.median(hl2, len*2), 10)
stdv_lbl(condition, src, mid, txt, color, side = true)=>
cond = condition
bars = ta.barssince(cond)
if cond and barstate.isconfirmed and bars[1] > 20
label.new(bar_index-1, src, txt, style = side ? label.style_label_lower_right : label.style_label_upper_right, textcolor = color.black, color = color, tooltip = txt + " Stdev")
line.new(bar_index-1, mid[1], bar_index-1, hl2[1], color = chart.fg_color, style = line.style_dashed)
mid_1 = mid - atr * mult * 1
mid_2 = mid - atr * mult * 2
mid_3 = mid - atr * mult * 3
mid1 = mid + atr * mult * 1
mid2 = mid + atr * mult * 2
mid3 = mid + atr * mult * 3
mid1_cond = ta.crossover(low, mid1)
mid2_cond = ta.crossover(low, mid2)
mid3_cond = ta.crossover(low, mid3)
mid_1_cond = ta.crossunder(high, mid_1)
mid_2_cond = ta.crossunder(high, mid_2)
mid_3_cond = ta.crossunder(high, mid_3)
// }
// PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
colorUp = (close > mid3 ? col_up1 : close > mid2 ? col_up2 : close > mid1 ? col_up3 : close > mid ? col_up4 : na)
colorDn = (close < mid_3 ? col_dn1 : close < mid_2 ? col_dn2 : close < mid_1 ? col_dn3 : close < mid ? col_dn4 : na)
color_ = close > mid ? colorUp : colorDn
scoreUp = (close > mid3 ? 3 : close > mid2 ? 2 : close > mid1 ? 1 : close > mid ? 0 : na)
scoreDn = (close < mid_3 ? -3 : close < mid_2 ? -2 : close < mid_1 ? -1 : close < mid ? 0 : na)
score_ = close > mid ? scoreUp : scoreDn
color = color.new(chart.fg_color, show_dev ? 70 : 100)
plot(mid_1, color = color, linewidth = 2)
plot(mid_2, color = color, linewidth = 3)
plot(mid_3, color = color, linewidth = 4)
plot(mid, "", color = chart.fg_color, linewidth = 1)
plot(mid1, color = color, linewidth = 2)
plot(mid2, color = color, linewidth = 3)
plot(mid3, color = color, linewidth = 4)
stdv_lbl(mid1_cond, mid1, mid, "1", color_)
stdv_lbl(mid2_cond, mid2, mid, "2", color_)
stdv_lbl(mid3_cond, mid3, mid, "3", color_)
stdv_lbl(mid_1_cond, mid_1, mid, "-1", color_, false)
stdv_lbl(mid_2_cond, mid_2, mid, "-2", color_, false)
stdv_lbl(mid_3_cond, mid_3, mid, "-3", color_, false)
if barstate.islast
var dash = table.new(position.bottom_right, 60, 60)
for i = 1 to 20
table.cell(dash, i, 0)
table.cell(dash
, score_ == 3 ? 1 : score_ == 2 ? 5 : score_ == 1 ? 8 : score_ == -1 ? 13 : score_ == -2 ? 16 : score_ == -3 ? 20 : 10
, 0
, text = "▼"
, width = 0.5
, text_color = chart.fg_color
)
table.cell(dash, i, 1, width = 0.5
, text_color = color.black
, bgcolor = i <= 10
? color.from_gradient(i, 0, 20, col_up1, color.new(col_up4, 50))
: color.from_gradient(i, 0, 20, color.new(col_dn4, 50), col_dn1)
)
table.cell(dash, i, 2
, text =
i == 1 ? "3"
: i == 5 ? "2"
: i == 8 ? "1"
: i == 13 ? "-1"
: i == 16 ? "-2"
: i == 20 ? "-3"
: ""
, width = 0.5
, text_color = chart.fg_color
)
plotcandle(open, high, low, close, title='Color Candles', color = color_, wickcolor=color_, bordercolor = color_)
barcolor(color_)
// }
DynamicDeviationLevels
Hull
2025-10-22
216
글번호 227196
답변완료
질문 있습니다.
안녕하세요.아직도 코드이랑 씨름을 하고 있습니다.지금 어려운 그 문제가 있는데 일일 수익 표시 타이밍 문제입니다..해외선물 23시간 인데아침 8시 부터 20시까지 매매하면서 수익, 손실를 차트에 표시 하고새벽 5시에 전날 누적 수익을 표시하려고 하는데, 항상 0T만 표시됩니다.// 새벽 5시 표시if CurrentHour == 5 and CurrentHour != CurrentHour[1] Then {
Text_New(sDate, sTime, H + 2.0, "+" + NumToStr(TodayProfit, 0) + "T");
}
// 날짜 변경 시 초기화
if Bdate != Bdate[1] Then {
TodayProfit = 0;
}
🆕 추가로 이상한 점:
거래가 1회만 있는 날: 새벽 5시에 "+234T" 정상 표시됨
거래가 여러 번 있는 날 (수익+손실): 새벽 5시에 "0T" 표시됨
예를 들어:
케이스1: +234틱 1회만 → 05:00에 "+234T" ✅
케이스2: +234틱, -45틱 (순수익 +189틱) → 05:00에 "0T" 으로 순수익이 표시 되지 않습니다. ㅠ
질문이 있습니다.Bdate 변경과 CurrentHour == 5 중 어느 것이 먼저 실행되나요?Bdate는 정확히 언제 변경되나요? (자정? 새벽 5시? 거래 시작 시간?)새벽 5시에 전날 수익을 표시하려면 어떤 조건을 사용해야 하나요?추가로 이상한 점에서 거래 횟수에 따라 결과가 다른 이유가 있을까요? 1회만 거래하면 새벽 5시에 통계 보듯이 순수익 정상 표시 되고1회 이상 거래 하면 새벽 5시에 순수익 통계가 안 나옵니다.감사합니다!
NetProfit
Text_New
2025-10-22
158
글번호 227194
답변완료
수식을 요청 합니다.
YesLanguage 시스템의 실시간 차트 데이터를 외부(파이썬 시스템)로 전달하고자 합니다.이에 실시간으로 형성되는 10분 봉의 OHLCV 데이터와 LRL 지표의 계산된 값을, 파일 또는 데이터베이스에 기록하는 시스템식 요청드립니다.실시간 데이터 CSV 파일 기록 시스템식 요청대상 종목: MYMZ25 (해외선물)작동 주기 및 트리거:10분 봉 차트를 기준으로 합니다.매 10분 봉 종가 기준입니다.
추출 데이터 항목:
봉 완성 시간 (정확한 시간 정보, 예: YYYY-MM-DD HH:MM:SS 형식)
시가(Open)
고가(High)
저가(Low)
종가(Close)
거래량(Volume)
LRL 지표 값: LRL 지표의 최종 계산된 값
데이터 저장 방식 및 형식:
-지정된 CSV 파일 (.csv 확장자) 로 저장 합니다.
-파일 내 데이터는 새로운 데이터가 가장 아래 줄에 추가(Append)되는 방식으로 기록 합니다.
(기존 내용을 덮어쓰지 않고, 계속해서 누적 저장 합니다.)
-각 데이터 항목은 쉼표(,)로 구분 합니다.
- 파일 저장 경로 및 파일명 예시: C:\YesData\realtime_mymz25.csv
(해당 경로는 YesLanguage 시스템이 데이터를 기록하고, 파이썬 시스템이 데이터를 읽을 수 있는 공통의 로컬 경로로 조정 가능합니다.)
-파일 내 한 줄 데이터 형식 예시 (헤더 포함 시):
-DateTime,Open,High,Low,Close,Volume,LRL
2025-10-22 15:00:00,1000.0,1010.0,990.0,1005.0,1000,1002.5
2025-10-22 15:10:00,1005.0,1015.0,1000.0,1012.0,1200,1009.8
...
(헤더 라인 포함 여부는 예스스탁에서 구현 용이성을 고려하여 제안해주시면 감사하겠습니다.)
2. 위 CSV 파일 기록 방식과 더불어,
-YesLanguage 시스템 내에서 DB(데이터베이스)와의 데이터 송수신 및 연동이 가능한지요?
-가능 하다면 YesLanguage 시스템과 DB(데이터베이스) 연동 시스템식 추가 요청 드립니다.
-또한, 실시간 OHLCV 및 LRL 값을 DB에 기록하는 예스랭귀지 시스템식도 함께 요청드립니다.DB 종류 예시 : 가장 접근성이 좋은 SQLite DB 파일로 기록이 가능하다면 좋습니다.DB 저장 방식 : 새로운 데이터가 특정 테이블에 행으로 추가(Insert)되는 방식.저장 데이터 항목 : CSV 요청과 동일한 항목 (봉 완성 시간, 시가, 고가, 저가, 종가, 거래량, LRL 지표 값).DB 파일 경로 및 테이블명 예시 : C:\YesData\realtime_mymz25.db 파일 내의 ohlcv_lrl 테이블 (경로 및 테이블명은 조정 가능). ** YesLanguage 시스템에서 데이터를 추출하여 파이썬 시스템에 전달하고, 이를 강화 학습 모델의 추론 및 재훈련에 활용할 계획입니다. 구체적인 예스랭귀지 시스템식을 작성하여 제공해 주시면 프로젝트 진행에 큰 도움이 되겠습니다.** 아직 수식 작성에 미숙 합니다. 주석을 충분히 달아 주시면 감사 하겠습니다.감사합니다.
2025-10-22
516
글번호 227193
답변완료
미결제약정 지표
안녕하세요... 코스피200 선물 미결제약정 첨부한 화일 형태로 차트에 보여지게 할려면 어떻게 해야 할까요? 그리고 누적량을 나타내는 그래프 부분도 증가하면 빨강으로 내려가면 검정색으로 색깔을구분할 수 있으면 더욱 좋겠고요....감사합니다.
미결제약정
OI
2025-10-22
178
글번호 227192
답변완료
질문 있습니다.
어제 답변 너무 감사합니다!!!꼬였던 그 문제를 해결 해서 깔끔하게 되었습니다!! 감사합니다!! ㅠㅠ이제 다른 질문인데요.하루 목표 수익 달성 로직 관련 질문입니다. 그 뜻은 제가 하루 목표 수익을 달성하면 매매 중단하고 끝내는 로직입니다.손실, 수익 합쳐서 순수익 목표 달성하면 매매 중단하고 싶은데 순수익 목표를 달성하지 못하고 그냥 끝내서 좀 해매고 있습니다.MACD 매매 시스템에서 하루 목표 수익 기능을 구현 중인데, 예상과 다르게 작동해서 질문드립니다.ㅠㅠ
현재 상황
Input : DailyProfitTarget(30); // 목표 300틱
Input : UseDailyTarget(1);
var : TodayProfit(0);
var : TradeProfit(0);
// 익절 시
TradeProfit = (C - AvgEntryPrice) / 0.1;
TodayProfit = TodayProfit + TradeProfit;
if TodayProfit >= DailyProfitTarget Then {
TargetReached = 1;
}
문제는 아래와 같습니다.
DailyProfitTarget = 30 설정 (300틱 목표)
실제 누적 수익 252틱인데 매매종료 표시가 나오면서 매매 종료됨300틱 달성 전인데 왜 종료되는지 모르겠습니다.질문(C - AvgEntryPrice) / 0.1 계산 결과가 틱 단위인가요? (예: 마이크로 골드)DailyProfitTarget 입력값은 어떤 단위로 해야 하나요?TodayProfit 변수에 누적되는 값이 정확히 어떤 단위인가요?아니면 제가 모르는 것이 있을까요?감사합니다!
당일수익청산
NetProfit
2025-10-22
293
글번호 227191
답변완료
수식을 더해보니 오류가 나서 재차 질문 합니다
V(1)+3<V and Crossup(C,dayopen())이수식과A=predayhigh()-predaylow();B=dayopen()+A+1.5;B1=RSI(1);Crossup(C,B) and B1>60이두가지 수식을 하나의 수식으로 사용 하고자 합니다.답변주신 수식을 넣어보니 일부 오류로 나오네요.
2025-10-22
144
글번호 227181