커뮤니티
문의드립니다
input : length(20),BB_mult(2.0);
var : BB_basis(0),dev(0),BB_upper(0),BB_lower(0);
BB_basis = ma(close, length);
dev = BB_mult * std(close, length);
BB_upper = BB_basis + dev;
BB_lower = BB_basis - dev;
input : KC_mult_high(1.0);
input : KC_mult_mid(1.5);
input : KC_mult_low(2.0);
var : KC_basis(0),devKC(0);
var : KC_upper_high(0),KC_lower_high(0);
var : KC_upper_mid(0),KC_lower_mid(0);
var : KC_upper_low(0),KC_lower_low(0);
var : NoSqz(False),LowSqz(False),MidSqz(False),HighSqz(False);
var : mom(0),iff_1(0),iff_2(0),mom_color(0),sq_color(0);
KC_basis = ma(close, length);
devKC = ma(TrueRange, length);
KC_upper_high = KC_basis + devKC * KC_mult_high;
KC_lower_high = KC_basis - devKC * KC_mult_high;
KC_upper_mid = KC_basis + devKC * KC_mult_mid;
KC_lower_mid = KC_basis - devKC * KC_mult_mid;
KC_upper_low = KC_basis + devKC * KC_mult_low;
KC_lower_low = KC_basis - devKC * KC_mult_low;
//SQUEEZE CONDITIONS
NoSqz = BB_lower < KC_lower_low or BB_upper > KC_upper_low; //NO SQUEEZE: GREEN
LowSqz = BB_lower >= KC_lower_low or BB_upper <= KC_upper_low; //LOW COMPRESSION: BLACK
MidSqz = BB_lower >= KC_lower_mid or BB_upper <= KC_upper_mid ;//MID COMPRESSION: RED
HighSqz = BB_lower >= KC_lower_high or BB_upper <= KC_upper_high; //HIGH COMPRESSION: ORANGE
//MOMENTUM OSCILLATOR
mom = LRL(close - avg(avg(highest(high, length), lowest(low, length)),ma(close, length)), length);
//MOMENTUM HISTOGRAM COLOR
iff_1 = iff(mom > iff(isnan(mom[1])==true,0,mom[1]) , lime , green);
iff_2 = iff(mom < iff(isnan(mom[1])==true,0,mom[1]) , red , maroon);
mom_color = iff(mom > 0 , iff_1 , iff_2);
//SQUEEZE DOTS COLOR
sq_color = iff(HighSqz , red ,IFf(MidSqz , Cyan ,IFf(LowSqz , black , Yellow)));
var : S1(0);
if mom_color == lime and (sq_color == Cyan or sq_color == Red) Then
S1 = 1;
if mom_color == Red and (sq_color == Cyan or sq_color == Red) Then
S1 = -1;
input : atrMult(45);
input : atrlen(12);
input : rsmlen(3);
input : tplen(14);
var : i(0),sum(0),source(0);
var : alpha(0),atrValue1(0),upperLevel(0),lowerLevel(0);
var : previousLowerLevel(0),previousUpperLevel(0);
var : trendDirection(Nan),superTrendValue(Nan);
var : previousTrend(0);
if CurrentBar > 1 Then
{
sum = 0;
for i = 0 to rsmlen-1
{
sum = sum + c[i]*c[i];
}
source = sqrt(sum/rsmlen);
alpha = 1 / atrlen ;
atrValue1 = IFf(IsNan(atrValue1[1]) == true, ma(TrueRange,atrlen) , alpha * TrueRange + (1 - alpha) * IFf(isnan(atrValue1[1])==true,0,atrValue1[1]));
upperLevel = source + atrMult * atrValue1;
lowerLevel = source - atrMult * atrValue1;
previousLowerLevel = iff(isnan(lowerLevel[1])==true,0,lowerLevel[1]);
previousUpperLevel = iff(isnan(upperLevel[1])==true,0,upperLevel[1]);
// Ensure continuity of lower and upper bands
lowerLevel = iff(lowerLevel > previousLowerLevel or source[1] < previousLowerLevel , lowerLevel , previousLowerLevel);
upperLevel = iff(upperLevel < previousUpperLevel or source[1] > previousUpperLevel , upperLevel , previousUpperLevel);
// Determine direction and SuperTrend
previousTrend = superTrendValue[1];
// Initialize direction
if IsNan(atrValue1[1]) == true Then
trendDirection = 1;
else if previousTrend == previousUpperLevel Then
trendDirection = iff(source > upperLevel , -1 , 1);
else
trendDirection = iff(source < lowerLevel , 1 , -1);
// Set SuperTrend value based on direction
superTrendValue = iff(trendDirection == -1 , lowerLevel , upperLevel);
}
var : dist(0),chg(0),lvlCol(0);
var : tp1(0),tp2(0),tp3(0),tp4(0),tp5(0),tp6(0),tp7(0);
var : printedtp1(0),printedtp2(0),printedtp3(0),printedtp4(0),printedtp5(0),printedtp6(0),printedtp7(0);
dist = abs(close-superTrendValue);
lvlCol = iff(trendDirection > 0 , red , green);
var : key1(0);
var : key2(0);
var : key3(0);
var : key4(0);
var : key5(0);
var : key6(0);
var : key7(0);
if CrossUp(trendDirection, 0) or CrossDown(trendDirection, 0) Then
{
//TL_Delete(keys);
printedtp1 = 0;
printedtp2 = 0;
printedtp3 = 0;
printedtp4 = 0;
printedtp5 = 0;
printedtp6 = 0;
printedtp7 = 0;
chg = abs(superTrendValue-superTrendValue[1]);
tp1 = superTrendValue[1] + IFF(trendDirection > 0 , -chg , chg);
tp2 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 2 , chg * 2);
tp3 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 3 , chg * 3);
tp4 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 4 , chg * 4);
tp5 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 5 , chg * 5);
tp6 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 6 , chg * 6);
tp7 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 7 , chg * 7);
key1 = TL_new(sdate[1],stime[1],tp1, sDate,sTime, tp1);
TL_SetColor(Key1,lvlCol);
TL_SetSize(Key1,2);
printedtp1 = 1;
}
Else
TL_SetEnd(key1,sDate,sTime,TP1);
var : u(0),d(0),alp(0),ur(0),dr(0),rs(0),R(0),tp(False);
u = max(dist - dist[1], 0);
d = max(dist[1] - dist, 0);
alp = 1/tplen;
ur = IFf(IsNan(ur[1]) == true, ma(u,tplen) , alp * u + (1 - alp) * IFf(isnan(ur[1])==true,0,ur[1]));
dr = IFf(IsNan(dr[1]) == true, ma(d,tplen) , alp * d + (1 - alp) * IFf(isnan(dr[1])==true,0,dr[1]));
rs = ur / dr;
R = 100 - 100 / (1 + rs);
tp = CrossDown(R, 60);
var : extreme(0);
var : extreme_tp1_dist(0);
var : extreme_tp2_dist(0);
var : extreme_tp3_dist(0);
var : extreme_tp4_dist(0);
var : extreme_tp5_dist(0);
var : extreme_tp6_dist(0);
var : extreme_tp7_dist(0);
extreme = iff(trendDirection > 0 , low , high);
extreme_tp1_dist = abs(extreme - tp1);
extreme_tp2_dist = abs(extreme - tp2);
extreme_tp3_dist = abs(extreme - tp3);
extreme_tp4_dist = abs(extreme - tp4);
extreme_tp5_dist = abs(extreme - tp5);
extreme_tp6_dist = abs(extreme - tp6);
extreme_tp7_dist = abs(extreme - tp7);
var : tx(0),S2(0);
if tp and trendDirection > 0 Then
{
tx = Text_New(sDate,sTime,L,"X");
Text_SetStyle(tx,2,0);
Text_SetColor(tx,Red);
Text_SetSize(tx,20);
Text_SetBold(tx,1);
S2 = 1;
}
if tp and trendDirection < 0 Then
{
tx = Text_New(sDate,sTime,H,"X");
Text_SetStyle(tx,2,1);
Text_SetColor(tx,Green);
Text_SetSize(tx,20);
Text_SetBold(tx,1);
S2 = -1;
}
if printedtp2 == 0 and extreme_tp2_dist < extreme_tp1_dist Then
{
key2 = TL_new(sdate[1],stime[1],tp2, sDate,sTime, tp2);
TL_SetColor(Key2,lvlCol);
TL_SetSize(Key2,2);
printedtp2 = 1;
}
Else
{
if printedtp2 == 1 Then
TL_SetEnd(key2,sDate,sTime,TP2);
}
if printedtp3 == 0 and extreme_tp3_dist < extreme_tp2_dist Then
{
key3 = TL_new(sdate[1],stime[1],tp3, sDate,sTime, tp3);
TL_SetColor(Key3,lvlCol);
TL_SetSize(Key3,2);
printedtp3 = 1;
}
Else
{
if printedtp3 == 1 Then
TL_SetEnd(key3,sDate,sTime,TP3);
}
if printedtp4 == 0 and extreme_tp4_dist < extreme_tp3_dist Then
{
key4 = TL_new(sdate[1],stime[1],tp4, sDate,sTime, tp4);
TL_SetColor(Key4,lvlCol);
TL_SetSize(Key4,2);
printedtp4 = 1;
}
Else
{
if printedtp4 == 1 Then
TL_SetEnd(key4,sDate,sTime,TP4);
}
if printedtp5 == 0 and extreme_tp5_dist < extreme_tp4_dist Then
{
key5 = TL_new(sdate[1],stime[1],tp5, sDate,sTime, tp5);
TL_SetColor(Key5,lvlCol);
TL_SetSize(Key5,2);
printedtp5 = 1;
}
Else
{
if printedtp5 == 1 Then
TL_SetEnd(key5,sDate,sTime,TP5);
}
if printedtp6 == 0 and extreme_tp6_dist < extreme_tp5_dist Then
{
key6 = TL_new(sdate[1],stime[1],tp6, sDate,sTime, tp6);
TL_SetColor(Key6,lvlCol);
TL_SetSize(Key6,2);
printedtp6 = 1;
}
Else
{
if printedtp6 == 1 Then
TL_SetEnd(key6,sDate,sTime,TP6);
}
if printedtp7 == 0 and extreme_tp7_dist < extreme_tp6_dist Then
{
key7 = TL_new(sdate[1],stime[1],tp7, sDate,sTime, tp7);
TL_SetColor(Key7,lvlCol);
TL_SetSize(Key7,2);
printedtp7 = 1;
}
Else
{
if printedtp7 == 1 Then
TL_SetEnd(key7,sDate,sTime,TP7);
}
if MarketPosition <= 0 and S1+S2 == 2 Then
Buy();
if MarketPosition == 1 and S1+S2 < 2 Then
ExitLong();
if MarketPosition >= 0 and S1+S2 == -2 Then
Sell();
if MarketPosition == -1 and S1+S2 > -2 Then
ExitShort();
수고 많으십니다
저번에 만들어 주신 수식인데
익절과 손절을 추가로 부탁드립니다
익철 50틱 손절 50틱
진입하여 익절이던 손절이 나면
곧바로 재진입 않고 다음 신호 나오면 진입하게 부탁드립니다
항상 감사드립니다
답변 1
예스스탁 예스스탁 답변
2025-12-30 10:43:00