커뮤니티
문의드립니다.
2017-09-01 05:31:40
110
글번호 112416
항상 감사드립니다.
1.지표
150틱 차트에서 300틱차트의 이평선(80일선, 260일선)과 ADX 지표를 불러와서 보고 싶습니다.
그리고 일목균형표도 150틱차트에서 300틱차트의 일목균형표를 불러와서 보고 싶습니다.
주말 즐겁게 보내세요.
답변 1
예스스탁 예스스탁 답변
2017-09-01 14:59:29
안녕하세요
예스스탁입니다.
1
input : N(2),P1(80),P2(260);
var : idx(0),TT(0),cnt(0),sum1(0),mav1(0),sum2(0),mav2(0);
Array : CC[300](0);
if Bdate != Bdate[1] Then
idx = 0;
Else
idx = idx+1;
TT = idx%N;
if bdate != bdate[1] or (Bdate == Bdate[1] and TT < TT[1]) Then{
for cnt = 1 to 299{
CC[cnt] = CC[cnt-1][1];
}
}
CC[0] = C;
if CC[P1] > 0 Then{
sum1 = 0;
for cnt = 0 to P1-1{
sum1 = sum1 + CC[cnt];
}
mav1 = sum1/P1;
plot1(mav1,"이평1");
}
if CC[P2] > 0 Then{
sum2 = 0;
for cnt = 0 to P2-1{
sum2 = sum2 + CC[cnt];
}
mav2 = sum2/P2;
plot2(mav2,"이평2");
}
2 ADX
ADX의 경우에는 계산법상 타주기가 정확히 계산되지 않습니다.
최대한 비슷하게 작성된 식입낟.참고용으로 보시기 바랍니다.
input : N(2),Length(14);
var : TT(0),BarCnt(0),cnt(0),MyRange(0);
var : DP(0),PlusDM(0),MinusDM(0),TH(0),TL(0);
var : DM(0),idx(0);
var : SumDMI(0),SumCnt(0),ADXV(0),PreADX(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),TRange[61](0),DMIV[60](0);
Array : PlusDM14[61](0),MinusDM14[61](0);
if Bdate != Bdate[1] Then
idx = 0;
Else
idx = idx+1;
TT = idx%N;
if bdate != bdate[1] or (Bdate == Bdate[1] and TT < TT[1]) Then{
BarCnt = BarCnt+1;
HH[0] = H;
LL[0] = L;
PreADX = ADXV[1];
for cnt = 1 to 60{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
TR[cnt] = TR[cnt-1][1];
TRange[cnt] = TRange[cnt-1][1];
PlusDM14[cnt] = PlusDM14[cnt-1][1];
MinusDM14[cnt] = MinusDM14[cnt-1][1];
DMIV[cnt] = DMIV[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if CC[1] > 0 Then{
If CC[1] > HH[0] then
TH = CC[1];
else
TH = HH[0];
If CC[1] < LL[0] then
TL = CC[1];
else
TL = LL[0];
TR[0] = TH-TL;
}
If BarCnt == Length+2 Then {
MyRange = Length;
DP = 0;
DM = 0;
PlusDM14[0] = 0;
MinusDM14[0] = 0;
TRange[0] = 0;
For cnt = 0 To MyRange - 1 {
If HH[cnt] - HH[cnt+1] < 0 Then
PlusDM = 0;
Else
PlusDM = HH[cnt] - HH[cnt+1];
If LL[cnt+1] - LL[cnt] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[cnt+1] - LL[cnt];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0;
TRange[0] = TRange[0] + TR[cnt];
PlusDM14[0] = PlusDM14[0] + PlusDM;
MinusDM14[0] = MinusDM14[0] + MinusDM;
}
If TRange[0] <> 0 Then {
DP = 100 * PlusDM14[0] / TRange[0];
DM = 100 * MinusDM14[0] / TRange[0];
}
Else {
DP = 0 ;
DM = 0;
}
}
Else If BarCnt > Length+2 Then {
If HH[0] - HH[1] < 0 Then
PlusDM = 0;
Else
PlusDM = HH[0] - HH[1];
If LL [1] - LL [0] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[1] - LL[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0 ;
If MyRange > 0 Then {
TRange[0] = TRange[1] - (TRange[1] / MyRange) + TR[0];
PlusDM14[0] = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
MinusDM14[0] = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM;
}
If TRange[0] <> 0 Then{
DP = 100 * PlusDM14[0] / TRange[0];
DM = 100 * MinusDM14[0] / TRange[0];
}
Else{
DP = 0;
DM = 0;
}
}
If DP + DM == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(DP - DM) / (DP + DM);
if DMIV[0] > 0 then
{
if DMIV[Length] == 0 Then
{
SumDMI = 0;
SumCnt = 0;
for cnt = 0 To Length {
if DMIV[cnt] > 0 Then{
SumDMI = SumDMI + DMIV[cnt];
SumCnt = SumCnt + 1;
}
}
ADXv = SumDMI / SumCnt;
}
Else
{
ADXv = (PreADX * (Length - 1) + DMIV[0]) / Length;
}
plot1(ADXV);
}
3 일목
/*Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(c, 9) + Lowest(c, 9)) / 2;
기준선 = (Highest(c, 26) + Lowest(c, 26)) / 2;
후행스팬 = c ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(c, 52) + Lowest(c, 52)) / 2;
Plot1(전환선, "전환선");
Plot2(기준선, "기준선");
Plot3(후행스팬, "후행스팬");
Plot4(선행스팬1,"선행스팬1");
Plot5(선행스팬2, "선행스팬2");*/
input : N(2),전환선기간(9),기준선기간(26),선행스팬2기간(52);
var : TT(0),idx(0);
var : cnt(0),H1(0),L1(0),H11(0),L11(0),H2(0),L2(0),H22(0),L22(0),H3(0),L3(0);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
Array : HH[100](0),LL[100](0);
if Bdate != Bdate[1] Then
idx = 0;
Else
idx = idx+1;
TT = Idx%N;
if bdate != bdate[1] or (Bdate == Bdate[1] and TT < TT[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 99{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[선행스팬2기간+25] > 0 and LL[선행스팬2기간+25] > 0 then{
H1 = HH[0];
L1 = LL[0];
H11 = HH[25];
L11 = LL[25];
H2 = HH[0];
L2 = LL[0];
H22 = HH[25];
L22 = LL[25];
H3 = HH[25];
L3 = LL[25];
for cnt = 0 to 선행스팬2기간-1{
if cnt < 전환선기간 Then{
if HH[cnt] > H1 Then
H1 = HH[cnt];
if LL[cnt] < L1 Then
L1 = LL[cnt];
if HH[cnt+25] > H11 Then
H11 = HH[cnt+25];
if LL[cnt+25] < L11 Then
L11 = LL[cnt+25];
}
if cnt < 기준선기간 Then{
if HH[cnt] > H2 Then
H2 = HH[cnt];
if LL[cnt] < L2 Then
L2 = LL[cnt];
if HH[cnt+25] > H22 Then
H22 = HH[cnt+25];
if LL[cnt+25] < L22 Then
L22 = LL[cnt+25];
}
if HH[cnt+25] > H3 Then
H3 = HH[cnt+25];
if LL[cnt+25] < L3 Then
L3 = LL[cnt+25];
}
전환선 = (H1 + L1)/2;
기준선 = (H2 + L2)/2;
선행스팬1 = ((H11+L11)/2 + (H22+L22)/2) / 2 ;
선행스팬2 = (H3+L3) / 2;
plot1(전환선);
plot2(기준선);
plot3(선행스팬1);
plot4(선행스팬2);
}
즐거운 하루되세요
> 웹피 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 항상 감사드립니다.
1.지표
150틱 차트에서 300틱차트의 이평선(80일선, 260일선)과 ADX 지표를 불러와서 보고 싶습니다.
그리고 일목균형표도 150틱차트에서 300틱차트의 일목균형표를 불러와서 보고 싶습니다.
주말 즐겁게 보내세요.