답변완료
로직 문의
안녕하세요 몇가지 질문이 있습니다
질문 #1
제가 봤을때는 동일한 논리인 아래 두 코드가 백테스트에는 다른 결과를 보여주는데요
제가 잘못 이해하고 있는게 있을까요? 감사합니다
코드 #1
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
Condition1 = CrossUp(C,hh[1]) and MarketPosition == 0;
Condition2 = CrossDown(C,ll[1]) and MarketPosition == 0;
If Condition1 == True and CrossUp(C,hh[1]) then Buy("B1",AtMarket,DEf,1);
If Condition2 == True and CrossDown(C,ll[1]) then Sell("B2",AtMarket,DEf,1);
코드 #2
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
If CrossUp(C,hh[1]) then Buy("B1",AtMarket,DEf,1);
If CrossDown(C,ll[1]) then Sell("B2",AtMarket,DEf,1);
질문 #2
아래 코드의 논리를 제가 이렇게 이해하고 있는데, 맞는지 검증 부탁드립니다
현재봉에서 직전 XX봉 고가/저가 돌파가 나오면 매수/매도
포지션이 있을때 entryprice가 진입봉의 저가/고가를 벗어나면 청산
var : hh(0),ll(0);
input:X1(5); // 1~10, 직전 XX봉 횟수
ll = lowest(L,X1);
hh = highest(H,X1);
Condition1 = CrossUp(C,hh[1]) and MarketPosition == 0;
Condition2 = CrossDown(C,ll[1]) and MarketPosition == 0;
If Condition1 == True then Buy("B1",AtMarket,DEf,1);
If Condition2 == True then Sell("B2",AtMarket,DEf,1);
// 손절: 진입신호 봉의 저가 손절
input:FF(8); // 1~10, 진입 후 XX봉 경과
If MarketPosition == 1 and EntryPrice < L[BarsSinceEntry] Then ExitLong("C1");
If MarketPosition == -1 and EntryPrice > H[BarsSinceEntry] Then ExitShort("C2");
2025-05-14
222
글번호 190804
시스템
답변완료
지표 변환 부탁드립니다.
//@version=6
indicator("Trend Classifier [ChartPrime]", overlay = true, max_labels_count = 500)
// --------------------------------------------------------------------------------------------------------------------}
// 📌 𝙐𝙎𝙀𝙍 𝙄𝙉𝙋𝙐𝙏𝙎
// --------------------------------------------------------------------------------------------------------------------{
int length = input.int(10, "Length")
bool show_bands = input.bool(true, "Trend Bands")
color col_up = input.color(#008fa5, "", inline = "col")
color col_dn = input.color(#e14c60, "", inline = "col")
color col_range = input.color(#edae49, "", inline = "col")
// --------------------------------------------------------------------------------------------------------------------}
// 📌 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍 𝘾𝘼𝙇𝘾𝙐𝙇𝘼𝙏𝙄𝙊𝙉𝙎
// --------------------------------------------------------------------------------------------------------------------{
smema(src, length)=>
ta.sma(ta.ema(src, length), length)
col_distance(src, col)=>
distance = math.abs(close - src)
col_size = distance / ta.percentile_linear_interpolation(distance, 400, 100)
show_bands ? color.from_gradient(col_size, 0, 0.5, color(na), col) : color(na)
float smema = smema(close, length)
float distance1 = close - smema
float distance2 = smema - close
float step = smema(high-low, 100)
float smema_up3 = smema + step * 3
float smema_up2 = smema + step * 2
float smema_up1 = smema + step
float smema_dn3 = smema - step * 3
float smema_dn2 = smema - step * 2
float smema_dn1 = smema - step
bool trend = smema > smema[1]
bool above3 = close > smema_up3
bool above2 = close > smema_up2
bool above1 = close > smema_up1
bool below1 = close < smema_dn1
bool below2 = close < smema_dn2
bool below3 = close < smema_dn3
int bull_strength = (above1 ? 1 : 0) + (above2 ? 1 : 0) + (above3 ? 1 : 0)
int bear_strength = (below1 ? 1 : 0) + (below2 ? 1 : 0) + (below3 ? 1 : 0)
label_signal =
trend and bull_strength >= 1 ? 1 :
not trend and bear_strength >= 1 ? -1 : 0
// --------------------------------------------------------------------------------------------------------------------}
// 📌 𝙑𝙄𝙎𝙐𝘼𝙇𝙄𝙕𝘼𝙏𝙄𝙊𝙉
// --------------------------------------------------------------------------------------------------------------------{
table mytbl = table.new(position.top_right, 10, 50)
if barstate.islast
table.cell(mytbl, 0, 0, "Bull Strength", text_color = chart.fg_color)
table.cell(mytbl, 0, 1, "Bear Strength", text_color = chart.fg_color)
for i = 0 to 3
table.cell(mytbl, 1+i, 0, "")
if bull_strength >= 0
for i = 0 to bull_strength
table.cell(mytbl, i+1, 0, i == bull_strength ? str.tostring(bull_strength) : "", bgcolor = color.new(col_up, 80 - i * 30), text_color = chart.fg_color)
if bear_strength >= 0
for i = 0 to bear_strength
table.cell(mytbl, i+1, 1, i == bear_strength ? str.tostring(bear_strength) : "", bgcolor = color.new(col_dn, 80 - i * 30), text_color = chart.fg_color)
color color_class = label_signal > 0 ? col_up : label_signal < 0 ? col_dn : col_range
// Labels
barcolor(color_class)
plotcandle(open, high, low, close, title='Candles Color', color = color_class, wickcolor=color_class, bordercolor = color_class, force_overlay = true)
plotshape(trend != trend[1] ? smema[1] : na, location=location.absolute, color=chart.fg_color, style=shape.diamond, title="Trend Signal", force_overlay = true, offset = -1, size = size.tiny)
if label_signal == 1
label.new(bar_index, low, "▲₩n" + str.tostring(bull_strength), style = label.style_label_up, color = color(na), size = size.tiny, textcolor = color_class)
if label_signal == -1
label.new(bar_index, high, str.tostring(bear_strength) + "₩n▼", style = label.style_label_down, color = color(na), size = size.tiny, textcolor = color_class)
color col_mid = smema > smema[1] ? col_up : col_dn
color col_up1 = col_distance(smema_up1, close > smema_up1 and trend ? col_up : close < smema_up1 and not trend ? col_dn : color(na))
color col_up2 = col_distance(smema_up2, close > smema_up2 and trend ? col_up : close < smema_up2 and not trend ? col_dn : color(na))
color col_up3 = col_distance(smema_up3, close > smema_up3 and trend ? col_up : close < smema_up3 and not trend ? col_dn : color(na))
color col_dn1 = col_distance(smema_dn1, close < smema_dn1 and not trend ? col_dn : close > smema_dn1 and trend ? col_up : color(na))
color col_dn2 = col_distance(smema_dn2, close < smema_dn2 and not trend ? col_dn : close > smema_dn2 and trend ? col_up : color(na))
color col_dn3 = col_distance(smema_dn3, close < smema_dn3 and not trend ? col_dn : close > smema_dn3 and trend ? col_up : color(na))
plot(smema_up3, color = col_up3, editable = false)
plot(smema_up2, color = col_up2, editable = false)
plot(smema_up1, color = col_up1, editable = false)
plot(smema, "Trend Line",color = col_mid, editable = true, linewidth = 2)
plot(smema_dn1, color = col_dn1, editable = false)
plot(smema_dn2, color = col_dn2, editable = false)
plot(smema_dn3, color = col_dn3, editable = false)
// --------------------------------------------------------------------------------------------------------------------}
2025-05-14
339
글번호 190801
지표