커뮤니티
분봉에서 일봉값을 참조할수 있는 함수를 부탁드립니다.
2014-01-19 15:59:49
166
글번호 71559
안녕하세요.
1. 분봉내에서 일봉 DMIPlus, MACD을 만들어서 사용하려고 하다보니
지식이 부족하여 엄두가 나질 않아서 부탁을 드립니다.
2. 며칠전에 스토캐스틱에 대해서 질문을 드렸던 부분인데 분봉 어느 싯점에서나
전일 또는 전전일 일봉 종가 값을 구할수 있는 함수가 있었으면 좋겠습니다.
DMIPlus, MACD 일봉 종가값도 부탁드립니다.
그럼 수고하십시요.
- 1. DiplusDay.yfu (0.00 MB)
답변 1
예스스탁 예스스탁 답변
2014-01-20 11:43:23
안녕하세요
예스스탁입니다.
1. MACDDAy
Input : Period1(Numeric), Period2(Numeric);
Var : Ep1(0), EP2(0);
var : DayJISU1(0), DayJISU2(0),DayPreJISU1(0), DayPreJISU2(0),daycnt(0);
Var : DaymacdVal(0);
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
if date != date[1] then {
Daycnt = daycnt+1;
DayPreJISU1 = DayJISU1[1];
DayPreJISU2 = DayJISU2[1];
}
if daycnt < 1 Then
{
DayJisu1 = C;
DayJISU2 = C;
}
Else
{
DayJISU1 = C * Ep1 + DayPreJISU1 * (1-Ep1);
DayJISU2 = C * Ep2 + DayPreJISU2 * (1-Ep2);
}
DaymacdVal = DayJISU1 - DayJISU2;
MACDday = DaymacdVal;
2.MACDsigDAy
Input : Period1(Numeric), Period2(Numeric), Period3(Numeric);
Var : Ep1(0), EP2(0), EP3(0);
var : DayJISU1(0), DayJISU2(0),DayPreJISU1(0), DayPreJISU2(0),DayPreMacdSig(0),daycnt(0);
Var : DaymacdVal(0), DaypreMacdVal(0), DaymacdSig(0),DaymacdOsc(0),DayPremacdOsc(0);
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
if date != date[1] then {
Daycnt = daycnt+1;
DayPreJISU1 = DayJISU1[1];
DayPreJISU2 = DayJISU2[1];
DayPreMacdVal = DaymacdVal[1];
DayPreMacdSig = DaymacdSig[1];
}
if daycnt < 1 Then
{
DayJisu1 = C;
DayJISU2 = C;
}
Else
{
DayJISU1 = C * Ep1 + DayPreJISU1 * (1-Ep1);
DayJISU2 = C * Ep2 + DayPreJISU2 * (1-Ep2);
}
DaymacdVal = DayJISU1 - DayJISU2;
if daycnt < 2 Then
DaymacdSig = DaymacdVal;
Else
DaymacdSig = DaymacdVal * Ep3 + DayPreMacdSig * (1-Ep3);
MACDsigDay = DaymacdSig;
3.DMIPlusDay
input : Length(Numeric);
var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Variables: Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0),ADXv(0);
Variables: CummDMI(0), Return(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0);
if date != date[1] Then{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[1];
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];
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 Dcnt == Length+1 Then {
MyRange = Length;
DPlus = 0;
PlusDM14 = 0;
TRange = 0;
DMinus = 0;
MinusDM14 = 0;
TRange1 = 0;
For Counter = 0 To MyRange - 1 {
If HH[Counter] - HH[Counter+1] < 0 Then
PlusDM = 0 ;
Else
PlusDM = HH[Counter] - HH[Counter+1];
If LL[Counter+1] - LL[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[Counter+1] - LL[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0;
TRange = TRange + TR[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
}
Else If Dcnt > Length+1 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 = preTRange - (preTRange / MyRange) + TR[0];
PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM;
MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
}
DMIplusDay = Dplus;
4.DMIMinusDay
input : Length(Numeric);
var : TL(0),TH(0),cnt(0),Dcnt(0),preTRange(0),prePlusDM14(0),DMinus(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Variables: Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),Dplus(0),preADX(0),ADXv(0);
Variables: CummDMI(0), Return(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0);
if date != date[1] Then{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[1];
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];
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 Dcnt == Length+1 Then {
MyRange = Length;
DPlus = 0;
PlusDM14 = 0;
TRange = 0;
DMinus = 0;
MinusDM14 = 0;
TRange1 = 0;
For Counter = 0 To MyRange - 1 {
If HH[Counter] - HH[Counter+1] < 0 Then
PlusDM = 0 ;
Else
PlusDM = HH[Counter] - HH[Counter+1];
If LL[Counter+1] - LL[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[Counter+1] - LL[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
If PlusDM >= MinusDM Then
MinusDM = 0;
TRange = TRange + TR[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
}
Else If Dcnt > Length+1 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 = preTRange - (preTRange / MyRange) + TR[0];
PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM;
MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM;
}
If TRange <> 0 Then
DPlus = 100 * PlusDM14 / TRange;
Else
DPlus = 0 ;
If TRange <> 0 Then
DMinus = 100 * MinusDM14 / TRange;
Else
DMinus = 0;
}
DMIMinusDay = Dminus;
즐거운 하루되세요
> 이조만 님이 쓴 글입니다.
> 제목 : 분봉에서 일봉값을 참조할수 있는 함수를 부탁드립니다.
> 안녕하세요.
1. 분봉내에서 일봉 DMIPlus, MACD을 만들어서 사용하려고 하다보니
지식이 부족하여 엄두가 나질 않아서 부탁을 드립니다.
2. 며칠전에 스토캐스틱에 대해서 질문을 드렸던 부분인데 분봉 어느 싯점에서나
전일 또는 전전일 일봉 종가 값을 구할수 있는 함수가 있었으면 좋겠습니다.
DMIPlus, MACD 일봉 종가값도 부탁드립니다.
그럼 수고하십시요.
다음글
이전글