커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1516
글번호 230811
답변완료
스윙하이 수평선 표시
먼저, 항상 많은 도움 감사드립니다.스윙하이 발생시 스윙하이 수치를 수평선으로 우측끝까지 나타나게 할 수 없나요? 즉, 발생하면 앞의 스윙하이 수평선을 사라지고 현 스윙하이만 수평선으로 보고 보고 싶습니다. 수치표시도 오른쪽 연장선위에 나타나면 좋겠습니다.감사합니다.
TL_New
Text_New
2025-10-22
162
글번호 227129
답변완료
HA신규종목
상장 200일 이내 종목의하이킨아시 차트에서,RSI(20)값이1)1봉전 ~5봉전은 59.9이하, 금일에 60 돌파하거나OR2)1봉전은 29.9이하 후 금일에 30돌파하는 종목을 검색코자 합니다.검색수식을 요청드립니다.
헤이킨아쉬
헤이킨아쉬RSI
2025-10-21
167
글번호 227127
답변완료
질문 있습니다.
안녕하세요.어제 답변 주셔서 감사합니다!그나마 해결 되었는데 아직도 어려워 하는 부분이 있습니다. ㅠㅠ질문을 요약해서 올리니 바쁘시더라도 답변 잘 부탁드리겠습니다. 감사합니다!질문의 내용은 청산 후 대기 로직 추가 후 신호가 전혀 안 나옵니다!!! ㅠㅠ (변수 유지 관련)기존에 잘 작동하던 매매 시스템에 "청산 후 30분 동안 진입 금지" 기능을 추가했더니 신호가 전혀 안 나오는 문제가 발생했습니다.원인을 찾고자 여러 가지 궁금한 점들을 질문드립니다.ㅜㅜ현재 상황기존 코드: MACD 0선 돌파 시 매수/매도 신호 → 정상 작동 되었음수정 코드: 청산 후 StopdownMinutes(30분) 동안 진입 금지 추가 → 신호 안 나옵니다.
핵심 코드 구조
// 변수 선언
var : InStopdown(0); // 휴식 중 (1=휴식, 0=거래가능)
var : LastExitTime(0); // 마지막 청산 시간
var : IsGoldenCross(0); // 골드크로스 상태
// 현재 시간
CurrentTime = TimeToMinutes(sTime);
// 이전 상태 유지
InStopdown = InStopdown[1];
LastExitTime = LastExitTime[1];
IsGoldenCross = IsGoldenCross[1];
// 청산 후 휴식 체크
if InStopdown == 1 Then {
ElapsedTime = CurrentTime - LastExitTime;
if ElapsedTime >= StopdownMinutes Then {
InStopdown = 0; // 휴식 종료
}
}// MACD 크로스 감지
if CrossUp(MACDValue, 0) Then {
IsGoldenCross = 1;
}// 청산 로직
if MarketPosition == 1 and C >= AvgEntryPrice + ProfitTicks Then {
ExitLong("WinL");
if StopdownMinutes > 0 Then {
LastExitTime = CurrentTime;
InStopdown = 1; // 휴식 시작
}
}// 진입 신호 감지
if MarketPosition == 0 and IsGoldenCross == 1 and InStopdown == 0 Then {
BuySignal = 1;
Text_New(sDate, sTime, L - 1.5, "매수신호");
}if MarketPosition == 0 and IsGoldenCross == 1 and InStopdown == 1 Then {
Text_New(sDate, sTime, L - 1.5, "매수무효(휴식중)");}질문 목록입니다.var 변수의 값 유지 방법이 무엇인가요?var : InStopdown(0);
InStopdown = InStopdown[1];
질문:1-1: var로 선언한 변수가 [1]로 이전 봉의 값을 참조할 수 있나요? 매 봉마다 초기화되나요?
질문:1-2: 첫 실행 시 (차트 로딩 첫 봉) InStopdown[1]이 존재하지 않으면 어떻게 되나요? 자동으로 0이 되나요? 오류가 나나요?
2. TimeToMinutes 함수 관련
easylanguageCurrentTime = TimeToMinutes(sTime);
ElapsedTime = CurrentTime - LastExitTime;
질문:2-1: sTime이 093000 (9시 30분)일 때 TimeToMinutes는 정확히 무엇을 반환하나요? 570 (9×60+30)인가요?
질문:2-2: TimeToMinutes가 자정(00:00)을 넘어가면 0부터 다시 시작하나요? 그렇다면 시간 차이 계산이 음수가 나오는데 어떻게 처리해야 하나요?
3. MarketPosition 상태 변경 타이밍
if MarketPosition == 1 and C >= AvgEntryPrice + ProfitTicks Then {
ExitLong("WinL");
InStopdown = 1;
}// 바로 다음 줄에서
if MarketPosition == 0 and InStopdown == 0 Then {
BuySignal = 1;
}
질문3: ExitLong() 실행 후 MarketPosition이 즉시 0으로 바뀌나요? 아니면 다음 봉부터 바뀌나요?
4. CrossUp/CrossDown과 상태 변수 유지 충돌
easylanguageIsGoldenCross = IsGoldenCross[1];
if CrossUp(MACDValue, 0) Then {
IsGoldenCross = 1;
}
질문4: 상태 변수를 [1]로 유지하면서 CrossUp 함수와 함께 쓸 때 문제가 없나요? CrossUp이 매 봉마다 체크하는데, 상태 유지 로직과 충돌하지 않나요?
5. 코드 실행 순서의 중요성
현재 코드 순서:
변수 유지 (InStopdown = InStopdown[1])
청산 후 휴식 체크
MACD 크로스 감지
청산 로직
진입 신호 감지질문5: 이 순서가 맞나요? 청산 로직을 신호 감지보다 먼저 배치해야 하나요?변수 디버깅 방법Text_New(sDate, sTime, H, "Stop:" + NumToStr(InStopdown, 0));
Text_New(sDate, sTime, H, "Time:" + NumToStr(CurrentTime, 0));질문6: 매 봉마다 변수 값을 차트에 표시해서 디버깅할 수 있나요? 더 좋은 디버깅 방법이 있나요?조건문 실행 및 변수 변경 반영// 같은 봉에서ExitLong("WinL");
InStopdown = 1;
// 이후
if InStopdown == 0 Then {
BuySignal = 1;}질문7: 같은 봉 내에서 변수 변경이 즉시 반영되나요? 아니면 다음 봉부터 적용되나요?StopdownMinutes 조건 체크if StopdownMinutes > 0 Then {
LastExitTime = CurrentTime;
InStopdown = 1;}질문8: StopdownMinutes를 30으로 설정했는데, Input 값이 제대로 전달되고 있는지 확인하는 방법이 있나요?전체 로직 검증// 진입 조건if MarketPosition == 0 and IsGoldenCross == 1 and InStopdown == 0 Then {
BuySignal = 1;
}// 다음 봉에서
if BuySignal[1] == 1 Then {
Buy("MACD_Buy", AtMarket, Def, ContractSize);
}
질문9: 신호 감지와 실제 진입을 분리하는 이 구조가 맞나요? BuySignal[1]이 제대로 참조되나요?
시도해본 것들
1. StopdownMinutes = 0 설정 → 여전히 신호 안 나옴
2. 기존 코드(StopdownMinutes 없는 버전) → 정상 작동 확인귀한 답변이 도움이 될 것 같습니다! 감사합니다!
2025-10-21
280
글번호 227126
답변완료
수식문의
안녕하세요1분봉 선물에서 매수 진입후 수익으로 익절 이후 재매수의 조건으로장시작부터 익절까지의 시간내 최고점을 돌파하는 수식을 추가하고 싶습니다 고점을 특정하는 수식을 부탁드립니다 감사합니다
청산시점당일최고가
2025-10-21
131
글번호 227125
답변완료
예전 게시판이 훨씬 나아요
보기도 너무 불편하고.. 이상해요
2025-10-21
212
글번호 227124
답변완료
문의 드립니다
var : tx(0);
Text_Delete(tx);
tx = Text_New(NextBarSdate,NextBarStime,NextBarOpen,NumToStr(NextBarOpen,2));
Text_SetStyle(tx,0,0);
--------------------------
소수점 이하 안나오게 하려면 어떻게 해야하나요?
NumToStr
text출력소숫점자리지정
2025-10-21
166
글번호 227123
작은소망1 님에 의해서 삭제되었습니다.
2025-10-21
56
글번호 227122
답변완료
키움 공식을 예스랭귀지로 변환을 부탁드립니다.
다음은 키움에서 만든 진입조건 식입니다. 제가 아는 한도로 만들어 볼려고 해 보았으나 valuewhem 함수와 BarSince 함수에서 막혀 버렸습니다. 그래서 부탁을 드려 봅니다.
김사부 = Highest(H(1), 기간) < H;
주식전쟁 = Valuewhen(1, 김사부, H);
폭 = 주식전쟁 *(비율/100);
Bs = BarsSince(김사부);
K = if(김사부, 주식전쟁, 주식전쟁+폭*Bs);
비율선 = if(K<K(1),K,0);
crossup(C,비율선) and Bs > 봉수
참고로 valuewhen 함수는
사용법 : ValueWhen(nth, condition, data)
설 명 : condition이 nth번째 만족된 시점의 data값 이며,
BarsSince 함수는
사용법 : BarsSince(condition)
설 명 : condition이 만족된 이후 지나간 봉 갯수입니다.
valuewhen
BarsSince
2025-10-21
243
글번호 227121
답변완료
수식 변환 문의합니다
A=paedayhigh()-predaylow();B=dayopen()+A*1.5:B1=RSI(1):Crossup (C,B) and B1>60키움에서쓰는 화살표 수식 입니다. 예스트레이더에서 적용 할려고 합니다. 변환 부탁드립니다. 그리고 키움에서는 A+B 수식을 두가지 더할때 andsk &&를 쓰는데 예스트레이더도 같은지 궁금 합니다.
2025-10-21
168
글번호 227120