답변완료
문의
예스로 부탁드립니다.
uodate가 금지어라고 해서 뛰어쓰기 했습니다
indicator("Kalman Trend Levels [BigBeluga]", overlay = true, max_labels_count = 500, max_boxes_count = 500)
// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
int short_len = input.int(50)
int long_len = input.int(150)
bool retest_sig = input.bool(false, "Retest Signals")
bool candle_color = input.bool(true, "Candle Color")
color upper_col = input.color(#13bd6e, "up", inline = "colors")
color lower_col = input.color(#af0d4b, "dn", inline = "colors")
// }
// CALCULATIONS――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
float atr = ta.atr(200) *0.5
var lower_box = box(na)
var upper_box = box(na)
// Kalman filter function
kalman_filter(src, length, R = 0.01, Q = 0.1) =>
// Initialize variables
var float estimate = na
var float error_est = 1.0
var float error_meas = R * (length)
var float kalman_gain = 0.0
var float prediction = na
// Initialize the estimate with the first value of the source
if na(estimate)
estimate := src[1]
// Prediction step
prediction := estimate
// Up date Kalman gain
kalman_gain := error_est / (error_est + error_meas)
// Up date estimate with measurement correction
estimate := prediction + kalman_gain * (src - prediction)
// Up date error estimates
error_est := (1 - kalman_gain) * error_est + Q / (length) // Adjust process noise based on length
estimate
float short_kalman = kalman_filter(close, short_len)
float long_kalman = kalman_filter(close, long_len)
bool trend_up = short_kalman > long_kalman
color trend_col = trend_up ? upper_col : lower_col
color trend_col1 = short_kalman > short_kalman[2] ? upper_col : lower_col
color candle_col = candle_color ? (trend_up and short_kalman > short_kalman[2] ? upper_col : not trend_up and short_kalman < short_kalman[2] ? lower_col : color.gray) : na
// }
// PLOT ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{
if trend_up and not trend_up[1]
label.new(bar_index, short_kalman, "🡹₩n" + str.tostring(math.round(close,1)), color = color(na), textcolor = upper_col, style = label.style_label_up, size = size.normal)
lower_box := box.new(bar_index, low+atr, bar_index, low, border_color = na, bgcolor = color.new(upper_col, 60))
if not ta.change(trend_up)
lower_box.set_right(bar_index)
if trend_up[1] and not trend_up
label.new(bar_index, short_kalman, str.tostring(math.round(close,1))+"₩n🢃", color = color(na), textcolor = lower_col, style = label.style_label_down, size = size.normal)
upper_box := box.new(bar_index, high, bar_index, high-atr, border_color = na, bgcolor = color.new(lower_col, 60))
if not ta.change(trend_up)
upper_box.set_right(bar_index)
if retest_sig
if high < upper_box.get_bottom() and high[1]>= upper_box.get_bottom() //or high < lower_box.get_bottom() and high[1]>= lower_box.get_bottom()
label.new(bar_index-1, high[1], "x", color = color(na), textcolor = lower_col, style = label.style_label_down, size = size.normal)
if low > lower_box.get_top() and low[1]<= lower_box.get_top()
label.new(bar_index-1, low[1], "+", color = color(na), textcolor = upper_col, style = label.style_label_up, size = size.normal)
p1 = plot(short_kalman, "Short Kalman", color = trend_col1)
p2 = plot(long_kalman, "Long Kalman", linewidth = 2, color = trend_col)
fill(p1, p2, short_kalman, long_kalman, na, color.new(trend_col, 80))
plotcandle(open, high, low, close, title='Title', color = candle_col, wickcolor=candle_col, bordercolor = candle_col)
// }
2025-02-24
475
글번호 188489
지표
답변완료
수정 부탁드립니다.
input : pd(22),bbl(20),mult(2.0),lb(50),ph(0.85),기간1(10),기간2(20);
var : wvf(0),sDev(0), midLine(0), upperBand(0), rangeHigh(0),overSold(0);
var : ap(0), esa(0), d(0), ci(0), wt1(0), wt2(0);
# williams vix fix
wvf = ((highest(close,pd) - low) / (highest(close,pd))) *100;
sDev = mult *std(wvf,bbl);
midLine = ma(wvf,bbl);
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph;
#wt
ap = (HIGH+LOW+CLOSE)/3;
esa = Ema(ap, 기간1);
d = Ema(abs(ap-esa), 기간1);
ci = (ap - esa) / (0.015*d);
wt1 = Ema(ci,기간2);
wt2 = ma(wt1,4);
if wt1[1]<=-53 && (wvf>= upperBand or wvf >= RangeHigh or wvf[1] >= upperBand or wvf[1] >= RangeHigh) &&
wvf[1]>wvf &&CrossUp(wt1,wt2)
Then
Find(1);
문법에러,잘못된토큰,Name,올수 있는것 이렇게 문구가 뜹니다
2025-02-24
408
글번호 188479
종목검색
답변완료
시그널메이커 수식 변환 부탁드립니다.
항상 수고가 많으십니다. 계속 귀찮게 해드려서 죄송합니다.
아래 수식은 시그널메이커 수식인데 예스랭기지로 변환 부탁드리겠습니다.
Params:
Profit_Target(160), // 익절 ( 단위 : 틱 )
Stop_Loss(80); // 손절 ( 단위 : 틱 )
Var:
Ma_150(0),
Ma_200(0),
TickSize(0),
LongEntryPrice(0),
ShortEntryPrice(0),
v11(0),
v22(0);
// 이평선 계산
Ma_150 = Ma(C, 150);
Ma_200 = Ma(C, 200);
TickSize = OneTick * PriceScale; // 호가 단위
// 돌파한 캔들의 시가와 종가의 갭 계산
If (CurrentBar > 1)
// 숏 진입 조건 Then Begin
// 롱 진입 조건
If CrossUp(C[1], Ma_150[1]) Then Begin
LongEntryPrice = O[1] + 160 * TickSize;
End;
If CrossDown(C[1], Ma_200[1]) Then Begin
ShortEntryPrice = O[1] - 160 * TickSize;
End;
// 롱 진입 체크
If LongEntryPrice <> 0 And C >= LongEntryPrice Then Begin
If CurrentContracts = 0 Then Buy("LONG", AtLimit, LongEntryPrice,1);
LongEntryPrice = 0;
End;
// 숏 진입 체크
If ShortEntryPrice <> 0 And C <= ShortEntryPrice Then Begin
If CurrentContracts = 0 Then Sell("SHORT", AtLimit, ShortEntryPrice,1);
ShortEntryPrice = 0;
End;
End;
// 익절과 손절 설정
If CurrentContracts <> 0 Then Begin
SetStopProfitTarget(Profit_Target * TickSize * CurrentContracts);
SetStopLoss(Stop_Loss * TickSize * CurrentContracts);
End Else Begin
SetStopProfitTarget(0);
SetStopLoss(0);
End;
2025-02-24
379
글번호 188477
시스템