답변완료
검색식 부탁드립니다
emaValue = eavg(c,length);//EMA계산
correction = C+ (C-emaValue);//보정값
zlma = eavg(correction,length);//ZLMA계산
G=Valuewhen(1,(Crossup(ZLMA,emaValue) or Crossdown(ZLMA,emaValue)),zlma )
지표조건
length 14
G지표값이 10% 이상 하락하고 계속 유지 검색식 부탁드립니다
2025-10-22
105
글번호 227131
종목검색
답변완료
종목 검색식 요청
안녕하세요 ~RSI(5)가 70 이상일 때, 아래의 A 라인이 B 라인을 돌파 ( 또는 현재 가격이 A, B 2개의 라인을 동시에 돌파 ) 하는 종목의 검색식을 부탁 드립니다.
A 라인
(highest(high,midPeriod)+lowest(low,midPeriod)
+highest(high,shortPeriod)+lowest(low,shortPeriod)
+highest(high,longPeriod)+lowest(low,longPeriod))/6
B 라인 ( TEWMA 1 )
wma1 = wavg(C, len);
// TEMA 계산
ema1_1 = eavg(wma1, len);
ema1_2 = eavg(ema1_1, len);
ema1_3 = eavg(ema1_2, len);
TEWMA1 = 3 * ema1_1 - 3 * ema1_2 + ema1_3;
지표조건
len 50
감사합니다.
답변완료
질문 있습니다.
안녕하세요.어제 답변 주셔서 감사합니다!그나마 해결 되었는데 아직도 어려워 하는 부분이 있습니다. ㅠㅠ질문을 요약해서 올리니 바쁘시더라도 답변 잘 부탁드리겠습니다. 감사합니다!질문의 내용은 청산 후 대기 로직 추가 후 신호가 전혀 안 나옵니다!!! ㅠㅠ (변수 유지 관련)기존에 잘 작동하던 매매 시스템에 "청산 후 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 없는 버전) → 정상 작동 확인귀한 답변이 도움이 될 것 같습니다! 감사합니다!
답변완료
키움 공식을 예스랭귀지로 변환을 부탁드립니다.
다음은 키움에서 만든 진입조건 식입니다. 제가 아는 한도로 만들어 볼려고 해 보았으나 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
135
글번호 227121
시스템