커뮤니티
문의드립니다.
지난번에 주신 아래의 수식을 5분봉차트에서 '1시간봉의 아래의 지표'가 표현되게 하고자 합니다. 5분봉에서 30분의 아래지표를 또는 5분붕에서 2시간봉차트의 아래지표를 적용할 수 있게 하는 등 시간프레임을 변경할 수 있게 수식을 수정부탁드립니다.
도와주셔서 항상 감사드립니다. 수고하세요!!!
input : BB_len(2),BB_mult(2);
input : BB상단굵기(1),BB중단굵기(1),BB하단굵기(1);
var : src_bb(0),basis(0),dev(0),upperBB(0),lowerBB(0);
var : sellBB(False),Buybb(False);
sellBB = high >= upperBB;
buyBB = low <= lowerBB;
input : Period1(4),mult1(0.2),st1굵기(1);
input : Period2(6),mult2(1.2),st2굵기(1);
input : Period3(7),mult3(1.4),st3굵기(1);
var : alpha1(0),a1(0),s1(0),u1(0),d1(0),up1(0),dn1(0),tr1(1);
var : alpha2(0),a2(0),s2(0),u2(0),d2(0),up2(0),dn2(0),tr2(1);
var : alpha3(0),a3(0),s3(0),u3(0),d3(0),up3(0),dn3(0),tr3(1);
var : st1(0),st2(0),st3(0);
src_bb = open;
basis = ma(src_bb, bb_len);
dev = std(src_bb, bb_len);
upperBB = basis + bb_mult * dev;
lowerBB = basis - bb_mult * dev;
plot1(upperBB, "BB Upper", red,Def,BB상단굵기);
plot2(basis, "BB Basis", orange,Def,BB중단굵기);
plot3(lowerBB, "BB Lower", blue,Def,BB하단굵기);
alpha1 = 1 / period1;
a1 = IFf(IsNan(a1[1]) == true, ma(TrueRange,period1) , alpha1 * TrueRange + (1 - alpha1) * IFf(isnan(a1[1])==true,0,a1[1]));
s1 = (h+l)/2;
u1 = s1 - mult1 * a1;
d1 = s1 + mult1 * a1;
Up1 = iff(close[1] > iff(IsNan(Up1[1])==true,0,Up1[1]) , max(u1, iff(IsNan(Up1[1])==true,0,Up1[1])) , u1);
Dn1 = iff(close[1] < iff(IsNan(Dn1[1])==true,0,Dn1[1]) , min(d1, iff(IsNan(Dn1[1])==true,0,Dn1[1])) , d1);
tr1 = iff(close > iff(IsNan(Dn1[1])==true,0,Dn1[1]) , 1 ,IFf(close < iff(IsNan(Up1[1])==true,0,Up1[1]) , -1 , tr1));
alpha2 = 1 / period2;
a2 = IFf(IsNan(a2[1]) == true, ma(TrueRange,period2) , alpha2 * TrueRange + (1 - alpha2) * IFf(isnan(a2[1])==true,0,a2[1]));
s2 = (h+l)/2;
u2 = s2 - mult2 * a2;
d2 = s2 + mult2 * a2;
Up2 = iff(close[1] > iff(IsNan(Up2[1])==true,0,Up2[1]) , max(u2, iff(IsNan(Up2[1])==true,0,Up2[1])) , u2);
Dn2 = iff(close[1] < iff(IsNan(Dn2[1])==true,0,Dn2[1]) , min(d2, iff(IsNan(Dn2[1])==true,0,Dn2[1])) , d2);
tr2 = iff(close > iff(IsNan(Dn2[1])==true,0,Dn2[1]) , 1 ,IFf(close < iff(IsNan(Up2[1])==true,0,Up2[1]) , -1 , tr2));
alpha3 = 1 / period3;
a3 = IFf(IsNan(a3[1]) == true, ma(TrueRange,period3) , alpha3 * TrueRange + (1 - alpha3) * IFf(isnan(a3[1])==true,0,a3[1]));
s3 = (h+l)/2;
u3 = s3 - mult3 * a3;
d3 = s3 + mult3 * a3;
Up3 = iff(close[1] > iff(IsNan(Up3[1])==true,0,Up3[1]) , max(u3, iff(IsNan(Up3[1])==true,0,Up3[1])) , u3);
Dn3 = iff(close[1] < iff(IsNan(Dn3[1])==true,0,Dn3[1]) , min(d3, iff(IsNan(Dn3[1])==true,0,Dn3[1])) , d3);
tr3 = iff(close > iff(IsNan(Dn3[1])==true,0,Dn3[1]) , 1 ,IFf(close < iff(IsNan(Up3[1])==true,0,Up3[1]) , -1 , tr3));
st1 = iff(tr1 == 1 , up1 , dn1 );
st2 = iff(tr2 == 1 , up2 , dn2 );
st3 = iff(tr3 == 1 , up3 , dn3);
plot4(st1, "ST1", iff(tr1 == 1 , green , red),Def,st1굵기);
plot5(st2, "ST2", iff(tr2 == 1 , green , red),Def,st2굵기);
plot6(st3, "ST3", iff(tr3 == 1 , green , red),Def,st3굵기);
var : allAbove(False),allBelow(False);
var : regime(0),prevRegime(0);
var : bullStart(False),bearStart(False);
var : buySignal(False),SellSignal(False);
var : tx1(0),tx2(0);
allAbove = close > st1 and close > st2 and close > st3;
allBelow = close < st1 and close < st2 and close < st3;
prevRegime = regime;
if allAbove Then
regime = 1;
if allBelow Then
regime = -1;
bullStart = regime == 1 and prevRegime != 1 ;
bearStart = regime == -1 and prevRegime != -1;
if bullStart Then
{
tx1 = text_new(sDate,sTime,L,"Bull");
Text_SetStyle(tx1,2,0);
Text_SetColor(tx1,Green);
}
if bearStart Then
{
tx1 = text_new(sDate,sTime,H,"Bear");
Text_SetStyle(tx1,2,1);
Text_SetColor(tx1,Red);
}
buySignal = (regime == 1) and buyBB ;
sellSignal = (regime == -1) and sellBB;
if buySignal Then
{
tx2 = text_new(sDate,sTime,L,"▲");
Text_SetStyle(tx2,2,0);
Text_SetColor(tx2,Green);
}
if sellSignal Then
{
tx2 = text_new(sDate,sTime,H,"▼");
Text_SetStyle(tx2,2,1);
Text_SetColor(tx2,Red);
}
답변 1
예스스탁 예스스탁 답변
2025-12-22 11:20:32