안녕하세요
예스스탁입니다.
어떤 조건에서 진입/청산하고자 하시는지 알수 없습니다.
해당지표가 dir값이 변경이 될때
차트에 글자 및 점이 모두 후행적으로 과거봉에 텍스트 함수로 표시됩니다.
신호는 과거봉에 표시를 할 수 없습니다.
dir값이 0위로 올라가면 매수,
dir값이 0 아래로 내려가면 매도하게 작성해 드립니다.
input : prd(50);
input : baseAPT(20);
input : useAdapt(false);
input : volBias(10.0);
input : highS(lime);
input : lowS(red);
input : S(lime);
input : R(red);
input : xx(2);
var : b(0);
var : ph(Nan),pl(Nan),phl(0),plL(0),prev(Nan),dir(0);
var : atrLen(50);
var : aha(0),atr(0),apa(0),atrAvg(0),ratio(0);
var : aptRaw(0),aptClamped(0),aptSeries(0);
var : hlc3(0),p(0),vol(0);
b = index;
ph = iff(nthhighestbar(1,high, prd) == 0 , high , ph);
pl = iff(nthlowestbar(1,low, prd) == 0 , low , pl);
phL = iff(nthhighestbar(1,high, prd) == 0 , b , phL);
plL = iff(nthlowestbar(1,low, prd) == 0 , b , plL);
dir = iff(phL > plL , 1 , -1);
aha = 1 / atrLen ;
atr = IFf(IsNan(atr[1]) == true, ma(TrueRange,atrLen) , aha * TrueRange + (1 - aha) * IFf(isnan(atr[1])==true,0,atr[1]));
apa = 1/atrLen;
atrAvg = IFf(IsNan(atrAvg[1]) == true , ma(atr, atrLen) , apa * atr + (1 - apa) * iff(IsNan(atrAvg[1]) == true,0,atrAvg[1]));
ratio = iff(atrAvg > 0 , atr / atrAvg , 1.0);
aptRaw = iff(useAdapt , baseAPT / pow(ratio, volBias) , baseAPT);
aptClamped = max(5.0, min(300.0, aptRaw));
aptSeries = round(aptClamped,0);
hlc3 = (h+l+c)/3;
if Index == 0 Then
{
P = hlc3 * volume;
vol = volume;
}
var : x(0),y(0),loc(0),col(0),txt(""),barsback(0),vap(0),i(0);
var : apt_i(0),alpha(0),pxv(0),v_i(0),vappe(0),decay(0),apt_0(0),v0(0);
var : aa(0),tx(0),txx(0);
if dir != dir[1] Then
{
x = iff(dir > 0 , plL , phL);
y = iff(dir > 0 , pl , ph);
loc = iff(dir > 0 , 0,1);
col = iff(dir > 0 , highS , lowS);
if dir > 0 and pl < prev Then
{
txt = "LL";
Buy();
}
Else
{
if dir > 0 and pl > prev Then
txt = "HL";
Else
{
if dir < 0 and ph < prev Then
txt = "LH";
Else
{
if dir < 0 and ph > prev Then
{
txt = "HH";
Sell();
}
Else
txt = "";
}
}
}
tx = Text_New(sDate[Index-x],sTime[Index-x],y,txt);
Text_SetStyle(tx,2,loc);
Text_SetColor(tx,col);
prev = iff(dir > 0 , ph[1] , pl[1]);
barsback = b - x;
p = y * volume[barsback];
vol = volume[barsback];
vap = p / vol;
for i = barsback downto 0
{
apt_i = aptSeries[i];
decay = exp(-log(2.0) /max(1.0, apt_i));
alpha =1.0 - decay;
pxv = hlc3[i] * volume[i];
v_i = volume[i];
p = (1.0 - alpha) * p + alpha * pxv;
vol = (1.0 - alpha) * vol + alpha * v_i;
vappe = iff(vol > 0 , p / vol , Nan);
#txx = Text_New(sDate[i],sTime[i],vappe,"·");
Text_SetStyle(txx,2,2);
Text_SetSize(txx,18);
Text_SetColor(txx,iff(dir > 0 , R , S));
}
}
else
{
apt_0 = aptSeries;
decay = exp(-log(2.0) /max(1.0, apt_0));
alpha =1.0 - decay;
pxv = hlc3 * volume;
v0 = volume;
p = (1.0 - alpha) * p + alpha * pxv;
vol = (1.0 - alpha) * vol + alpha * v0;
vap = iff(vol > 0 , p / vol , Nan);
#txx = Text_New(sDate,sTime,vap,"·");
Text_SetStyle(txx,2,2);
Text_SetSize(txx,18);
Text_SetColor(txx,iff(dir > 0 , R , S));
}
if dir != dir[1] and dir == 1 Then
Buy();
if dir != dir[1] and dir == -1 Then
Sell();
즐거운 하루되세요