커뮤니티
해외선물지표
2017-04-11 12:18:42
164
글번호 108677
해외선물에서 장이시작될때 지표값을 새로 초기화해서 화면에 출력시킬려면 어떻게 하는지
도움을 부탁합니다.
MACD, TSI,DMI지표입니다
예를들면DMI지표를 그냥사용하면
해선 장마감 후 다시 해선 장이 시작되면 DP,DM값이 그대로 연결되서 시작합니다
장시작시 DP와 DM이 같은 값이나 동등한 값에서 출발할수 있도록 초기화 시키길 원합니다.
수식작성을 도와주세요.
Input : Period(14) ;
var : DMIv(0),DP(0),DM(0);
DMIv = DMI(Period);
DP = DIPlus(Period);
DM = DIMinus(Period);
Plot1(DMIv, "Directional Movement Index");
Plot2(DP, "DIPlus");
Plot3(DM, "DIMinus");
답변 1
예스스탁 예스스탁 답변
2017-04-11 18:12:04
안녕하세요
예스스탁입니다.
당일 봉으로만 계산되게 작성해 드립니다.
지정한 봉수가 충족되기 전까지는 모두 0값만 리턴합니다.
식마다 작성법이 달라 시간상 모두 모든 지표에 대해 작성해 드릴수 없습니다.
아래 수식 구조 파악하셔서 이후 지표 수정보완해 작성하시기 바랍니다.
1.MACD
Input : Period1(12),Period2(26),Period3(9);
Var : Ep1(0), JISU1(0),Ep2(0), JISU2(0),Ep3(0),Jisu3(0);
var : MACDVal(0),MACDSig(0),idx(0);
Ep1 = 2/(Period1+1);
Ep2 = 2/(Period2+1);
Ep3 = 2/(Period3+1);
if bdate != Bdate[1] Then
idx = 0;
idx = idx+1;
if idx == 1 then {
JISU1 = C;
JISU2 = C;
MACDVal = JiSu1-Jisu2;
MACDsig = MACDVal;
}
else{
JISU1 = C * EP1 + JISU1[1] * (1-EP1);
JISU2 = C * EP2 + JISU2[1] * (1-EP2);
MACDVal = JiSu1-Jisu2;
MACDsig = MACDVal * EP3 + MACDsig[1] * (1-EP3);
}
plot1(MACDVal);
plot2(MACDsig);
PlotBaseLine1(0);
2 DMI
Input : Length(14) ;
Var : idx(0),Counter(0), TRange(0), MyRange(Length), PlusDM14(0), PlusDM(0), MinusDM(0),DP(0);
var : MinusDM14(0),DM(0),DMIV(0);
if Bdate != Bdate[1] Then
idx = 0;
idx = idx+1;
If idx == Length Then {
MyRange = Length;
DP = 0;
PlusDM14 = 0;
TRange = 0;
For Counter = 0 To Length - 1 {
If High[Counter] - High[Counter+1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[Counter] - High[Counter+1];
If Low[Counter+1] - Low[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[Counter+1] - Low[Counter];
If MinusDM >= PlusDM Then
PlusDM = 0;
Else
MinusDM = 0;
TRange = TRange + TrueRange[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
DP = 100 * PlusDM14 / TRange;
Else
DP = 0 ;
}
Else If idx > Length Then {
If High[0] - High[1] < 0 Then
PlusDM = 0;
Else
PlusDM = High[0] - High[1];
If Low [1] - Low [0] < 0 Then
MinusDM = 0;
Else
MinusDM = Low[1] - Low[0];
If MinusDM >= PlusDM Then
PlusDM = 0;
Else
MinusDM = 0 ;
If MyRange > 0 Then {
TRange = TRange[1] - (TRange[1] / MyRange) + TrueRange;
PlusDM14 = PlusDM14[1] - (PlusDM14[1] / MyRange) + PlusDM;
MinusDM14 = MinusDM14[1] - (MinusDM14[1] / MyRange) + MinusDM;
}
If TRange <> 0 Then{
DP = 100 * PlusDM14 / TRange;
DM = 100 * MinusDM14 / TRange;
}
Else {
DP = 0 ;
DM = 0;
}
}
Else{
DP = 0;
DM = 0;
}
If DP + DM == 0 Then
DMIv = 0;
Else
DMIv = 100 * AbsValue(DP - DM) / (DP + DM);
plot1(DMIV);
plot2(DP);
plot3(DM);
즐거운 하루되세요
> 뱅어돔 님이 쓴 글입니다.
> 제목 : 해외선물지표
> 해외선물에서 장이시작될때 지표값을 새로 초기화해서 화면에 출력시킬려면 어떻게 하는지
도움을 부탁합니다.
MACD, TSI,DMI지표입니다
예를들면DMI지표를 그냥사용하면
해선 장마감 후 다시 해선 장이 시작되면 DP,DM값이 그대로 연결되서 시작합니다
장시작시 DP와 DM이 같은 값이나 동등한 값에서 출발할수 있도록 초기화 시키길 원합니다.
수식작성을 도와주세요.
Input : Period(14) ;
var : DMIv(0),DP(0),DM(0);
DMIv = DMI(Period);
DP = DIPlus(Period);
DM = DIMinus(Period);
Plot1(DMIv, "Directional Movement Index");
Plot2(DP, "DIPlus");
Plot3(DM, "DIMinus");