예스스탁
예스스탁 답변
2022-12-21 17:12:06
안녕하세요
예스스탁입니다.
1
input : ntime(30),factor(5), AtrPeriod(20);
var : S1(0,Data1),D1(0,Data1),TM(0,Data1),TF(0,Data1),HH(0,Data1),LL(0,Data1),C1(0,Data1);
var : src(0,Data1), AtrV(0,Data1),ATRv1(0,Data1),upperBand(0,Data1),lowerBand(0,Data1), prevLowerBand(0,Data1), prevUpperBand(0,Data1);
var : prevSuperTrend(0,Data1), superTrend(0,Data1), direction(0,Data1),alpha(0,Data1),source(0,Data1);
if data1(Bdate != Bdate[1]) Then
{
S1 = data1(TimeToMinutes(stime));
D1 = data1(sdate);
}
if D1 > 0 then
{
if data1(sdate) == D1 Then
TM = data1(TimeToMinutes(stime))-S1;
Else
TM = data1(TimeToMinutes(stime))+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
HH = Data1(H);
LL = data1(L);
C1 = data1(C[1]);
ATRV1 = ATRV[1];
prevSuperTrend = superTrend[1];
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];
}
if data1(H) > HH Then
HH = data1(H);
if Data1(L) < LL Then
LL = data1(L);
src = (HH+LL)/2;
if C1 > 0 Then
{
alpha = 1 / AtrPeriod ;
source = max(HH - LL, abs(HH - C1), abs(LL - C1));
ATrV = alpha * source + (1 - alpha) * ATrV1;
upperBand = src + factor * AtrV;
lowerBand = src - factor * AtrV;
if lowerBand > prevLowerBand or C1 < prevLowerBand Then
lowerBand = lowerBand;
Else
lowerBand = prevLowerBand;
if upperBand < prevUpperBand or C1 > prevUpperBand Then
upperBand = upperBand;
Else
upperBand = prevUpperBand;
if prevSuperTrend == prevUpperBand Then
{
if data1(C) > upperBand Then
direction = -1;
Else
direction = 1;
}
Else
{
if data1(C) < lowerBand Then
direction = 1;
Else
direction = -1;
}
if direction == -1 Then
superTrend = lowerBand;
Else
superTrend = upperBand;
Plot1(data1(C),"종가");
}
}
input : d2ntime(30),d2factor(5), d2AtrPeriod(20);
var : d2S1(0,Data2),d2D1(0,Data2),d2TM(0,Data2),d2TF(0,Data2),d2HH(0,Data2),d2LL(0,Data2),d2C1(0,Data2);
var : d2src(0,Data2), d2AtrV(0,Data2),d2ATRv1(0,Data2),d2upperBand(0,Data2),d2lowerBand(0,Data2), d2prevLowerBand(0,Data2), d2prevUpperBand(0,Data2);
var : d2prevSuperTrend(0,Data2), d2superTrend(0,Data2), d2direction(0,Data2),d2alpha(0,Data2),d2source(0,Data2);
if data2(Bdate != Bdate[1]) Then
{
d2S1 = data2(TimeToMinutes(stime));
d2D1 = data2(sdate);
}
if d2D1 > 0 then
{
if data2(sdate) == d2D1 Then
d2TM = data2(TimeToMinutes(stime))-d2S1;
Else
d2TM = data2(TimeToMinutes(stime))+1440-d2S1;
d2TF = d2TM%d2ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and d2ntime > 1 and d2TF < d2TF[1]) or
(Bdate == Bdate[1] and d2ntime > 1 and d2TM >= d2TM[1]+d2ntime) or
(Bdate == Bdate[1] and d2ntime == 1 and d2TM > d2TM[1]) Then
{
d2HH = data2(H);
d2LL = data2(L);
d2C1 = data2(C[1]);
d2ATRV1 = d2ATRV[1];
d2prevSuperTrend = d2superTrend[1];
d2prevLowerBand = d2lowerBand[1];
d2prevUpperBand = d2upperBand[1];
}
if data2(H) > d2HH Then
d2HH = data2(H);
if data2(L) < d2LL Then
d2LL = data2(L);
d2src = (d2HH+d2LL)/2;
if d2C1 > 0 Then
{
d2alpha = 1 / d2AtrPeriod ;
d2source = max(d2HH - d2LL, abs(d2HH - d2C1), abs(d2LL - d2C1));
d2ATrV = d2alpha * d2source + (1 - d2alpha) * d2ATrV1;
d2upperBand = d2src + d2factor * d2AtrV;
d2lowerBand = d2src - d2factor * d2AtrV;
if d2lowerBand > d2prevLowerBand or d2C1 < d2prevLowerBand Then
d2lowerBand = d2lowerBand;
Else
d2lowerBand = d2prevLowerBand;
if d2upperBand < d2prevUpperBand or d2C1 > d2prevUpperBand Then
d2upperBand = d2upperBand;
Else
d2upperBand = d2prevUpperBand;
if d2prevSuperTrend == d2prevUpperBand Then
{
if C > d2upperBand Then
d2direction = -1;
Else
d2direction = 1;
}
Else
{
if C < d2lowerBand Then
d2direction = 1;
Else
d2direction = -1;
}
if d2direction == -1 Then
d2superTrend =d2lowerBand;
Else
d2superTrend = d2upperBand;
Plot2(data2(C),"종가");
}
}
2
input : Period(20),MultiD(2);
var : bbup(0);
BBup = BollBandUp(Period,MultiD);
if MarketPosition == 1 and L > BBup*0.95 Then
ExitLong("bx1",AtStop,Bbup*0.95);
if MarketPosition == 1 and L > BBup-PriceScale*5 Then
ExitLong("bx2",AtStop,Bbup-PriceScale*5);
즐거운 하루되세요
> 뎅이요 님이 쓴 글입니다.
> 제목 : 수식 작성 부탁드립니다
> 1. 지표
data1에 아래의 수식을 사용합니다
data2에서 동일한 수식을 사용할려고 합니다.
factor(5), AtrPeriod(20) 의 외부변수등 facto2r(5), AtrPeriod2(20)로변경하여
시스템작성시 중복되 않게 작성 부탁드립니다
input : ntime(30),factor(5), AtrPeriod(20);
var : S1(0),D1(0),TM(0),TF(0),HH(0),LL(0),C1(0);
var : src(0), AtrV(0),ATRv1(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0);
var : prevSuperTrend(0), superTrend(0), direction(0),alpha(0),source(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
HH = H;
LL = L;
C1 = C[1];
ATRV1 = ATRV[1];
prevSuperTrend = superTrend[1];
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
src = (HH+LL)/2;
if C1 > 0 Then
{
alpha = 1 / AtrPeriod ;
source = max(HH - LL, abs(HH - C1), abs(LL - C1));
ATrV = alpha * source + (1 - alpha) * ATrV1;
upperBand = src + factor * AtrV;
lowerBand = src - factor * AtrV;
if lowerBand > prevLowerBand or C1 < prevLowerBand Then
lowerBand = lowerBand;
Else
lowerBand = prevLowerBand;
if upperBand < prevUpperBand or C1 > prevUpperBand Then
upperBand = upperBand;
Else
upperBand = prevUpperBand;
if prevSuperTrend == prevUpperBand Then
{
if C > upperBand Then
direction = -1;
Else
direction = 1;
}
Else
{
if C < lowerBand Then
direction = 1;
Else
direction = -1;
}
if direction == -1 Then
superTrend = lowerBand;
Else
superTrend = upperBand;
Plot1(C,"종가");
}
}
2.
시스템 식에서 BBup = BollBandUp(Period,MultiD); 상단밴드 이격도 95 하향돌파시
즉시 청산이되도록 수식 부탁드립니다.
추가로 상단밴드에서 5틱 하락시 청산되도록 수식 부탁 드립니다.
감사합니다.