커뮤니티

수식 수정을 부탁드립니다

프로필 이미지
장보고153
2025-07-31 03:35:16
166
글번호 192882
답변완료
UT Bot + LinReg Candles 지표를 시스템용으로 작성한 것인데 67줄에 에러 메세지가 뜹니다 한번 살펴 봐 주시면 감사하겠습니다. 늘 친절히 답해 주셔서 너무나 감사드립니다. 늘 건강하세요. // === 입력 변수 선언 === Input: a_buy(2.0), // 매수 민감도 (ATR 배수) c_buy(1), // 매수 ATR 기간 signal_length(7), // 신호 평활화 (이 수식에서는 사용되지 않음) sma_signal(true), // 단순이동평균 사용 여부 (이 수식에서는 사용되지 않음) lin_reg(true), // 선형회귀 사용 여부 (이 수식에서는 사용되지 않음) linreg_length(11); // 선형회귀 길이 (이 수식에서는 사용되지 않음) // === 변수 선언 === Vars: src_buy(0), atr_buy(0), nLoss_buy(0), trail_buy(0), // 이 변수는 YesLanguage에서 자동으로 이전 바 값을 기억해요! ema_buy(0), above_buy(false), buy_signal_raw(false), buy_signal(false); // === UT Bot 매수 계산 === src_buy = C; // 종가 사용 atr_buy = ATR(c_buy); // ATR 계산 nLoss_buy = a_buy * atr_buy; // 손실 기준값 // 트레일링 스톱 계산 (매수용) // IsNaN(trail_buy[1])은 첫 번째 바에서 true가 돼요. if IsNaN(trail_buy[1]) then // 첫 번째 봉에서는 trail_buy를 초기화해요. { trail_buy = src_buy - nLoss_buy; } else // 두 번째 봉부터는 이전 봉의 trail_buy 값(trail_buy[1])을 사용해서 계산해요. { if src_buy > trail_buy[1] and src_buy[1] > trail_buy[1] then { trail_buy = IFF(trail_buy[1] > src_buy - nLoss_buy, trail_buy[1], src_buy - nLoss_buy); } else if src_buy < trail_buy[1] and src_buy[1] < trail_buy[1] then { trail_buy = IFF(trail_buy[1] < src_buy + nLoss_buy, trail_buy[1], src_buy + nLoss_buy); } else // 그 외의 경우 (방향 전환 시) { trail_buy = IFF(src_buy > trail_buy[1], src_buy - nLoss_buy, src_buy + nLoss_buy); } } // EMA(src_buy, 1)은 종가(C)와 같으므로 C로 간단히 표시해요. ema_buy = C; above_buy = CrossUp(ema_buy, trail_buy); // 종가가 트레일링 스톱을 상향 돌파했는지 확인 // 원시 매수 신호: 종가가 trail_buy 위에 있고, 상향 돌파 조건이 만족할 때 buy_signal_raw = (src_buy > trail_buy) AND above_buy; buy_signal = buy_signal_raw; // 확정 매수 신호 // === 조건검색 및 시스템 매매 로직 === // 매수 신호가 발생하면 매수 진입! If buy_signal == TRUE Then { Buy("UTBot_Buy"); // 진입 전략 이름을 "UTBot_Buy"로 지정 } // 매도 조건 (매수 신호가 더 이상 유효하지 않을 때 청산) // 가장 기본적이고 오류가 적은 형태로 ExitLong을 사용합니다. If buy_signal == FALSE Then { ExitLong; // 현재 열린 모든 Long 포지션을 청산합니다. }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-07-31 11:10:59

안녕하세요 예스스탁입니다. // === 입력 변수 선언 === Input: a_buy(2.0), // 매수 민감도 (ATR 배수) c_buy(1), // 매수 ATR 기간 signal_length(7), // 신호 평활화 (이 수식에서는 사용되지 않음) sma_signal(true), // 단순이동평균 사용 여부 (이 수식에서는 사용되지 않음) lin_reg(true), // 선형회귀 사용 여부 (이 수식에서는 사용되지 않음) linreg_length(11); // 선형회귀 길이 (이 수식에서는 사용되지 않음) // === 변수 선언 === Vars: src_buy(0), atr_buy(0), nLoss_buy(0), trail_buy(0), // 이 변수는 YesLanguage에서 자동으로 이전 바 값을 기억해요! ema_buy(0), above_buy(false), buy_signal_raw(false), buy_signal(false); // === UT Bot 매수 계산 === src_buy = C; // 종가 사용 atr_buy = ATR(c_buy); // ATR 계산 nLoss_buy = a_buy * atr_buy; // 손실 기준값 // 트레일링 스톱 계산 (매수용) // IsNaN(trail_buy[1])은 첫 번째 바에서 true가 돼요. if IsNaN(trail_buy[1]) then // 첫 번째 봉에서는 trail_buy를 초기화해요. { trail_buy = src_buy - nLoss_buy; } else // 두 번째 봉부터는 이전 봉의 trail_buy 값(trail_buy[1])을 사용해서 계산해요. { if src_buy > trail_buy[1] and src_buy[1] > trail_buy[1] then { trail_buy = IFF(trail_buy[1] > src_buy - nLoss_buy, trail_buy[1], src_buy - nLoss_buy); } else if src_buy < trail_buy[1] and src_buy[1] < trail_buy[1] then { trail_buy = IFF(trail_buy[1] < src_buy + nLoss_buy, trail_buy[1], src_buy + nLoss_buy); } else // 그 외의 경우 (방향 전환 시) { trail_buy = IFF(src_buy > trail_buy[1], src_buy - nLoss_buy, src_buy + nLoss_buy); } } // EMA(src_buy, 1)은 종가(C)와 같으므로 C로 간단히 표시해요. ema_buy = C; above_buy = CrossUp(ema_buy, trail_buy); // 종가가 트레일링 스톱을 상향 돌파했는지 확인 // 원시 매수 신호: 종가가 trail_buy 위에 있고, 상향 돌파 조건이 만족할 때 buy_signal_raw = (src_buy > trail_buy) AND above_buy; buy_signal = buy_signal_raw; // 확정 매수 신호 // === 조건검색 및 시스템 매매 로직 === // 매수 신호가 발생하면 매수 진입! If buy_signal == TRUE Then { Buy("UTBot_Buy"); // 진입 전략 이름을 "UTBot_Buy"로 지정 } // 매도 조건 (매수 신호가 더 이상 유효하지 않을 때 청산) // 가장 기본적이고 오류가 적은 형태로 ExitLong을 사용합니다. If buy_signal == FALSE Then { ExitLong(); // 현재 열린 모든 Long 포지션을 청산합니다. } 즐거운 하루되세요 > 장보고153 님이 쓴 글입니다. > 제목 : 수식 수정을 부탁드립니다 > UT Bot + LinReg Candles 지표를 시스템용으로 작성한 것인데 67줄에 에러 메세지가 뜹니다 한번 살펴 봐 주시면 감사하겠습니다. 늘 친절히 답해 주셔서 너무나 감사드립니다. 늘 건강하세요. // === 입력 변수 선언 === Input: a_buy(2.0), // 매수 민감도 (ATR 배수) c_buy(1), // 매수 ATR 기간 signal_length(7), // 신호 평활화 (이 수식에서는 사용되지 않음) sma_signal(true), // 단순이동평균 사용 여부 (이 수식에서는 사용되지 않음) lin_reg(true), // 선형회귀 사용 여부 (이 수식에서는 사용되지 않음) linreg_length(11); // 선형회귀 길이 (이 수식에서는 사용되지 않음) // === 변수 선언 === Vars: src_buy(0), atr_buy(0), nLoss_buy(0), trail_buy(0), // 이 변수는 YesLanguage에서 자동으로 이전 바 값을 기억해요! ema_buy(0), above_buy(false), buy_signal_raw(false), buy_signal(false); // === UT Bot 매수 계산 === src_buy = C; // 종가 사용 atr_buy = ATR(c_buy); // ATR 계산 nLoss_buy = a_buy * atr_buy; // 손실 기준값 // 트레일링 스톱 계산 (매수용) // IsNaN(trail_buy[1])은 첫 번째 바에서 true가 돼요. if IsNaN(trail_buy[1]) then // 첫 번째 봉에서는 trail_buy를 초기화해요. { trail_buy = src_buy - nLoss_buy; } else // 두 번째 봉부터는 이전 봉의 trail_buy 값(trail_buy[1])을 사용해서 계산해요. { if src_buy > trail_buy[1] and src_buy[1] > trail_buy[1] then { trail_buy = IFF(trail_buy[1] > src_buy - nLoss_buy, trail_buy[1], src_buy - nLoss_buy); } else if src_buy < trail_buy[1] and src_buy[1] < trail_buy[1] then { trail_buy = IFF(trail_buy[1] < src_buy + nLoss_buy, trail_buy[1], src_buy + nLoss_buy); } else // 그 외의 경우 (방향 전환 시) { trail_buy = IFF(src_buy > trail_buy[1], src_buy - nLoss_buy, src_buy + nLoss_buy); } } // EMA(src_buy, 1)은 종가(C)와 같으므로 C로 간단히 표시해요. ema_buy = C; above_buy = CrossUp(ema_buy, trail_buy); // 종가가 트레일링 스톱을 상향 돌파했는지 확인 // 원시 매수 신호: 종가가 trail_buy 위에 있고, 상향 돌파 조건이 만족할 때 buy_signal_raw = (src_buy > trail_buy) AND above_buy; buy_signal = buy_signal_raw; // 확정 매수 신호 // === 조건검색 및 시스템 매매 로직 === // 매수 신호가 발생하면 매수 진입! If buy_signal == TRUE Then { Buy("UTBot_Buy"); // 진입 전략 이름을 "UTBot_Buy"로 지정 } // 매도 조건 (매수 신호가 더 이상 유효하지 않을 때 청산) // 가장 기본적이고 오류가 적은 형태로 ExitLong을 사용합니다. If buy_signal == FALSE Then { ExitLong; // 현재 열린 모든 Long 포지션을 청산합니다. }