예스스탁
예스스탁 답변
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 포지션을 청산합니다.
}