예스스탁
예스스탁 답변
2020-03-20 15:18:48
안녕하세요
예스스탁입니다.
특정일/특정시간 이후부터만 지표 및 신호가 발생하게 수정해 드립니다.
오실레이터라고만 하시면 변경해 드릴수가 없습니다.
일반적으로 오실레이터가 2개값의 차이로 0선이 기준인데 차이를 계산할 기준이 없습니다.
1. 지표
input :len(10),st_mult(1),st_period(100);;
input : ndate(20200320),ntime(90000);
var : source(0),hilow(0),openclose(0),vol(0),spreadvol(0),VPT(0),window_len(0);
var : v_len(0),price_spread(0),vv(0),smooth(0),v_spread(0),shadow(0),out(0);
var : vpt2(0),up_lev(0),dn_lev(0),up_trend(0),down_trend(0),trend(0),st_line(0);
var : Tcond(false);
if sdate >= ndate and stime >= ntime Then
Tcond = true;
source = close;
hilow = ((high - low)*100);
openclose = ((close - open)*100);
vol = (volume / hilow);
spreadvol = (openclose * vol);
VPT = spreadvol + Accum(spreadvol);
window_len = 28;
v_len = 14;
price_spread = std(high-low, window_len);
vv = spreadvol + Accum(spreadvol);
smooth = ma(vv, v_len);
v_spread = std(vv - smooth, window_len);
shadow = (vv - smooth) / v_spread * price_spread;
out = iff(shadow > 0, high + shadow, low + shadow);
vpt2 =ema(out,len);
up_lev = vpt2 - (st_mult * atr(st_period));
dn_lev = vpt2 + (st_mult * atr(st_period));
if CurrentBar >= 1 then
{
up_trend = 0.0;
up_trend = iff(close[1] > up_trend[1], max(up_lev, up_trend[1]),up_lev);
down_trend = 0.0;
down_trend = iff(close[1] < down_trend[1], min(dn_lev, down_trend[1]), dn_lev);
trend = 0;
trend = iff(close > down_trend[1], 1 ,iff(close < up_trend[1], -1 , trend[1]));
st_line = iff(trend ==1 , up_trend , down_trend);
// Plotting
if tcond == true Then
plot1(st_line[1],"SuperTrend",iff(trend == 1,green,red));
}
2. 시스템
input :len(10),st_mult(1),st_period(100);
input : ndate(20200320),ntime(90000);
var : source(0),hilow(0),openclose(0),vol(0),spreadvol(0),VPT(0),window_len(0);
var : v_len(0),price_spread(0),vv(0),smooth(0),v_spread(0),shadow(0),out(0);
var : vpt2(0),up_lev(0),dn_lev(0),up_trend(0),down_trend(0),trend(0),st_line(0);
var : Tcond(false);
if sdate >= ndate and stime >= ntime Then
Tcond = true;
source = close;
hilow = ((high - low)*100);
openclose = ((close - open)*100);
vol = (volume / hilow);
spreadvol = (openclose * vol);
VPT = spreadvol + Accum(spreadvol);
window_len = 28;
v_len = 14;
price_spread = std(high-low, window_len);
vv = spreadvol + Accum(spreadvol);
smooth = ma(vv, v_len);
v_spread = std(vv - smooth, window_len);
shadow = (vv - smooth) / v_spread * price_spread;
out = iff(shadow > 0, high + shadow, low + shadow);
vpt2 =ema(out,len);
up_lev = vpt2 - (st_mult * atr(st_period));
dn_lev = vpt2 + (st_mult * atr(st_period));
if CurrentBar >= 1 then
{
up_trend = 0.0;
up_trend = iff(close[1] > up_trend[1], max(up_lev, up_trend[1]),up_lev);
down_trend = 0.0;
down_trend = iff(close[1] < down_trend[1], min(dn_lev, down_trend[1]), dn_lev);
trend = 0;
trend = iff(close > down_trend[1], 1 ,iff(close < up_trend[1], -1 , trend[1]));
st_line = iff(trend ==1 , up_trend , down_trend);
if tcond == true then
{
if crossup(C,st_line) Then
buy("b");
if CrossDown(C,st_line) Then
sell("s");
}
}
즐거운 하루되세요
> 수색대대 님이 쓴 글입니다.
> 제목 : 번호 66516 에관련 질문입니다
> 지표및 시스템수식에서 시작일자및시작시간 적용 부탁드리며
지표가 오실레이터로 표시되게 해주시고
수식에대한 설명을해주시면 감사하겠습니다