커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1523
글번호 230811
답변완료
수식작성
제가 지인 추천으로 가입해서 첨해보는거라 잘 몰라요
근데 예스트레이더에서 지표 만드는건 하는것까지는 배웠거든요
스탑로스를 2103에서 매수가격에서 몇프로 거는거 말고
수익이 0.03%이상일 때 최고가에서 0.03% 떨어지면 청산되기 이렇게 될까요?
0.12%라면 0.09%되면 자동청산되는거요 이것도 예스 랭기쥐에서 만들어요?
기본으로 0.05% 손실날 때 자동청산되는것도 수식으로 넣어주세요
그리고 지금 2103에서 매수 할때마다 스탑로스 걸어주는데
매번 하기가 번거로워서요
시스템 트레이딩이나. EZ전략생성기 이런거 쓰면 손쉽게 제가 말씀드린 최고가에서 떨어지면 청산하는거 셋팅 가능한지요?
수식 써야하면 수식 좀 알려주세요
근데 제가 초보라 지표는 수식 넣어서 추가하는건 알겠는데
스탑로스 수식 주시면 적용하는 걸 모르겠는데 참고 영상링크같은게 있으면 부탁드릴게요
2025-09-16
274
글번호 194043
답변완료
수식수정
늘 감사합니다.
수식은 유용하게 잘 쓰고 있습니다.
아래 수식에
선의 굵기를 추가해 주세요
var : count(0,data1),cnt(0);
Array : CC[500](0),CTL[500](0);
if data1(Bdate != Bdate[1]) Then
{
var51 = data1(O);
count = 0;
}
if data1(V>=거래량) Then
{
count = count+1;
CC[count] = data1(C);
CTL[count] = TL_New_Self(data1(sDate),data1(sTime),CC[count],data1(NextBarSdate),data1(NextBarStime),CC[count]);
TL_SetColor(CTL[count],Black); //색상
}
if count >= 1 Then
{
For cnt = 1 to count
{
TL_SetEnd(CTL[cnt],NextBarSdate,NextBarStime,CC[cnt]);
}
}
감사합니다.
2025-09-16
189
글번호 194038
답변완료
지표 변환 부탁드립니다.
//@version=5
indicator(title="On Balance Volume Scaled", shorttitle="OBV-Scaled", format=format.volume, timeframe="", timeframe_gaps=true)
length=input.int(100,minval=10,title="Length of Scaling", group="Settings",tooltip = "The number of candles measured for the highest price, lowest price and average price in the indicator.")
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
runtime.error("No volume is provided by the data vendor.")
src = close
obv = ta.cum(math.sign(ta.change(src)) * volume)
highest_in_length = ta.highest(obv,length)
highest_in_length_avg= ta.ema(highest_in_length,length)
lowest_in_length = ta.lowest(obv,length)
lowest_in_length_avg= ta.ema(lowest_in_length,length)
avg_range= highest_in_length_avg - lowest_in_length_avg
middle_line =avg_range/2
normalized_obv= if obv>=middle_line
-1*((0.5-((math.abs(math.abs(obv)-math.abs(lowest_in_length_avg)))/(math.abs(avg_range))))*100)
else
1*((-0.5-((math.abs(obv)-math.abs(math.abs(lowest_in_length_avg)))/(math.abs(avg_range))))*100)
band1 = hline(50, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(0, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(-50, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background")
plot(normalized_obv, color=#2962FF, title="OnBalanceVolume")
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")
smoothingLine = ma(normalized_obv, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none)
2025-09-16
305
글번호 194037
답변완료
문의 드립니다.
안녕하세요
항상 친절한 답변 감사합니다.
손절매에 대한 서식 작성을 부탁드립니다.
*일봉기준
손절매:
-매수 진입 시: 최근 3일간의 봉(전일까지 3개의 봉) 기준으로 저점(봉의 몸통만) 돌파시 매수 청산
-매도 진입 시: 최근 3일간의 봉(전일까지 3개의 봉) 기준으로 고점(봉의 몸통만) 돌파시 매도 청산
**최근 3일간의 봉은 input으로 넣어주시기 바랍니다.(최적화)
감사합니다.
2025-09-16
158
글번호 194036
답변완료
안녕하세요 질문 있습니다.
질문) OnClose 손절 시 슬리피지 문제 및 정확한 손절 방법 문의
안녕하세요
해외선물 시스템 매매에서 손절 로직 관련 문의드립니다.
현재 OnClose 방식으로 손절을 구현했는데, 설정한 손절가보다 훨씬 큰 손실로 청산되는 문제가 발생하고 있습니다. ㅠ
현재 코드:
easylanguageInput : StopTicks(1.5); // 1.5포인트 손절 설정
if MarketPosition == 1 Then {
if C <= AvgEntryPrice - StopTicks then
{
ExitLong("Stop_L");
}
}
문제점:
1.5포인트 손절 설정했으나 실제로는 2.0~3.0포인트에서 청산
변동성 큰 구간에서 슬리피지가 심함
갭 발생 시 손실이 예상보다 커짐
질문사항:
SetStopLoss 함수를 사용하면 정확한 손절이 가능한지요?
easylanguage SetStopLoss(StopTicks*PriceScale, PointStop);
진입과 동시에 손절 주문을 설정하는 방법이 있나요? 바로 손절 해줘야 하는데 종가 확인 후 손절하다 보니 1.5 포인트 보다 훨씬 초과 되면서 손절을 하더라고요. ㅠ
OnClose 대신 실시간으로 손절가 터치 시 즉시 청산하는 방법은 없나요?
easylanguage if MarketPosition == 1 and L <= AvgEntryPrice - StopTicks then
ExitLong("Stop_L", AtMarket);
해외선물에서 정확한 손절을 위한 권장 방법이 있다면 알려주심 감사하겠습니다.
슬리피지를 최소화하면서 설정한 손절가에 최대한 가깝게 청산할 수 있는 방법 부탁드립니다.
------------------------------
질문) 제목: 60분 주기별 강제청산 및 시간 만료 청산 방법 문의
해외선물 시스템 매매에서 60분 주기 관리 및 강제청산 로직 관련 문의드립니다.
시스템 구조:
매시 정각에 60분 주기 시작 (예: 8:00, 9:00, 10:00...)
첫 5분간 고가/저가 수집하여 상하단선 설정
5분 후부터 상하단선 돌파 시 진입
해당 60분 주기 종료 시 강제청산 필요
현재 시도한 코드:
easylanguagevar : hour60StartTime(0), minutesFromStart(0);
if TimeToMinutes(stime) % 60 == 0 Then {
hour60StartTime = TimeToMinutes(stime);
// 레인지 초기화
}
minutesFromStart = TimeToMinutes(stime) - hour60StartTime;
// 60분 만료 강제청산 시도
if MarketPosition != 0 and minutesFromStart >= 59 Then {
if MarketPosition == 1 then
ExitLong("Time_L");
else
ExitShort("Time_S");
}
문제점:
60분 주기 종료 시점에 정확한 강제청산이 안됨
다음 주기로 포지션이 넘어가는 경우 발생
시간 계산이 정확하지 않음
질문사항:
매시 정각 기준으로 60분 후 정확한 강제청산 방법이 있나요?
TimeToMinutes 함수를 사용한 시간 계산이 올바른 방법인가요?
60분 주기 관리를 위한 더 정확한 시간 체크 로직은 뭐죠?
해외선물에서 특정 시간 경과 후 강제청산하는 권장 방법이 있나요?
예를 들어 8:00에 시작한 주기는 8:59에, 9:00에 시작한 주기는 9:59에 반드시 청산되어야 합니다.
올바른 60분 주기 관리 및 강제청산 방법 부탁드립니다.
----------------------------------
질문) 혼합 청산 방법 궁금합니다.
손절은 SetStopLoss로 즉시 처리하고
익절은 OnClose로 종가 확인 후 처리하는 방식이 가능한지?
진입과 손절 주문의 타이밍:
easylanguage Buy("BreakUp", OnClose, Def, 1);
SetStopLoss(StopTicks*PriceScale, PointStop);
이렇게 진입 주문과 손절 주문을 동시에 설정할 때 실행 순서는 뭐죠?
CurrentBar 변수의 정확성:
해외선물에서 CurrentBar를 이용한 재진입 방지가 안정적인가요?
24시간 거래에서 봉 번호가 정확히 증가하는지요?
시간 함수 관련:
TimeToMinutes(stime) % 60 == 0 조건이 해외선물에서 정확히 작동할까요?
서머타임 적용 시에도 문제없는지요?
---------------------
질문) 변수 초기화 및 메모리 관리 문의
easylanguage// 60분 주기 초기화 시
if TimeToMinutes(stime) % 60 == 0 Then {
EntryCount = 0;
FirstEntryResult = 0;
LastExitBar = 0;
// 기타 변수들 초기화
}
질문사항:
매시 정각마다 변수를 초기화할 때, 이전 주기의 포지션 정보가 올바르게 유지되는지요?
AvgEntryPrice, MarketPosition 같은 내장 변수들은 자동으로 관리되는지요?
변수 초기화와 포지션 청산의 순서가 중요한지요?
장시간 운영 시 메모리 누수나 변수 오류 방지를 위한 권장사항이 있는지요?
답변 잘 부탁합니다.
감사합니다.
2025-09-16
255
글번호 194035
답변완료
종목검색식 부탁드립니다
1. 지수 10 이평이 , 단순 60 이평을 골든크로스할때 종목검색식 부탁드려요.
2. 지수 10 이평이, 단순 60 이평을 골든크로스할때,
단. 0봉전 ~ 10봉전 까지의 모든종목 검색식 부탁드립니다.
3. 지수 10 이평이, 단순 60 이평 을 골든크로스 한후, 단순60이평 위에
있을때 모든종목 검색식 부탁드려요.
4. 주봉에서,
주봉의 60 "단순 이평이" 상승추세로 바뀔때 종목검색식 부탁드려요
5. 주봉에서,
주봉의 60 "지수 이평이" 상승추세 로 바뀔때 종목검색식 부탁드립니다.
6. 아래 수식을 참고하여(하단),
일봉기준차트에 주봉 10일 이평선을(단순) 긋고,
일봉차트에서 주봉 10일 이평선이(단순) , 아래 (수식1)의 이평선을 돌파하고,
위에 있을때 모든 종목 검색식 부탁드려요
---아래---
(수식1) 이평
smoothADD = ma_length + if(smoothingBool, ma_lengthSmoothing, 0);
MS = if(ma_type == 1, ma(C, smoothADD),
if(ma_type == 2, eavg(C, smoothADD),
if(ma_type == 3, ma(C, smoothADD,가중), eavg(C, smoothADD))));
MS
(수식2) 상승
if(MS(1)<MS,MS,0)
(수식3) 하락
if(MS(1)>=MS,MS,0)
- 지표조건설정
ma_length : 80
ma_lengthSmoothing : 20
smoothingBool : 0
ma_type : 2
2025-09-16
233
글번호 194034
답변완료
검색식 문의 드립니다.
안녕 하세여~
문의 하나만 드립니다.
일목균형표 후행스팬이 볼린져 밴드 하단선를 골든 크로스 하는 검색식를
알고 싶어 문의 드립니다.
수고 하세여~~
감사 합니다!!!
2025-09-16
198
글번호 194033
답변완료
수식 문의2
[진입]
1)당일 첫봉이 양봉이면 매수진입하고 음봉이면 매도진입(1분봉기준임)
진입횟수는 100회차까지 진입
2)현재가가 전회차 진입봉대비 5틱 수익이면 계속 불타기 진입
(이렇게 5틱 수익 날때마다 N회차 계속 진입해서 최종100회차까지 진입)
3)트레일일스탑 청산후 당일 목표수익이 1% 안되었을경우 다시 진입하되
현재가가 당일 시가보다 작으면 매도 진입후 진입과 청산 반복루팅 매매
현재가가 당일 시가보다 크면 매수 진입후 진입과 청산 반복루팅 매매
[청산]
1)목표수익청산1 : 진입금액대비 2%면 목표수익청산
2)목표수익청산2 : 잔고대비 1% 수익이면 목표수익청산
3)트레일링스탑청산 : 0.5%부터 트레일링스탑 가동후 고점대비 30% 밀리면 트레일링스탑청산
4)트레일링스탑청산이 반복되서 당일목표수익 1%달성시 매매 종료
5)손절매1 : 진입금액대비 -10%면 손실청산
6)손절매2 : 잔고대비 -10% 손실청산
7)당일7시 시작해서 익일06일 일괄청산
2025-09-16
191
글번호 194032
답변완료
수식 문의
수고하십니다.^^
수식좀 부탁드립니다.
[진입]
1)당일 첫봉이 양봉이면 매도진입하고 음봉이면 매수진입(1분봉기준임)
진입횟수는 100회차까지 진입
2)현재가가 전회차 진입봉대비 5틱 손실이면 진입
(이렇게 5틱 밀릴때마다 N회차 계속 진입해서 최종100회차까지 진입)
3)트레일일스탑 청산후 당일 목표수익이 1% 안되었을경우 다시 진입하되
현재가가 당일 시가보다 작으면 매수진입후 진입과 청산 반복루팅 매매
현재가가 당일 시가보다 크면 매도진입후 진입과 청산 반복루팅 매매
[청산]
1)목표수익청산1 : 진입금액대비 2%면 목표수익청산
2)목표수익청산2 : 잔고대비 1% 수익이면 목표수익청산
3)트레일링스탑청산 : 0.5%부터 트레일링스탑 가동후 고점대비 30% 밀리면 트레일링스탑청산
4)트레일링스탑청산이 반복되서 당일목표수익 1%달성시 매매 종료
5)손절매1 : 진입금액대비 -10%면 손실청산
6)손절매2 : 잔고대비 -5% 손실청산
7)당일7시 시작해서 익일06일 일괄청산
2025-09-16
188
글번호 194031