커뮤니티

부탁 드립니다.

프로필 이미지
yes
2015-09-15 15:45:39
180
글번호 90355
답변완료

첨부 이미지

선물용 매물벽 지표를 해외선물용(유로화)에 사용 할수 있도록 부탁 드립니다. 미리 감사 드립니다. 참고자료는 44023에 이어 집니다. Input:Period(60),Percent(50); Var:arr(0),j(0),cnt(0),HH(0),LL(0),Tick(0),TickVol(0), TotVol(0),SubTotVol(0),MaxArr(0),UpArr(0),DnArr(0),MaxPrc(0), UpPrc(0),DwnPrc(0),Vol1(0),Vol2(0); Array:Prc[100](0),Vol[100](0); HH = Highest(H,Period); LL = Lowest(L,Period); if CodeCategoryEX() == 51 then Tick = Round((HH-LL)/100,2); else Tick = Ceiling((HH-LL)/100/_TickValue())*_TickValue(); Prc[0] = HH; Vol[0] = 0; for arr = 1 to 99 { Prc[arr] = Prc[arr-1] - Tick; Vol[arr] = 0; } for j = 0 to Period-1 { cnt = 0; for arr = 0 to 99 { if L[j] <= Prc[arr] and Prc[arr] <= H[j] then cnt = cnt + 1; } TickVol = V[j]/cnt; for arr = 0 to 99 { if L[j] <= Prc[arr] and Prc[arr] <= H[j] then { Vol[arr] = Vol[arr] + TickVol; } } } TotVol = 0; MaxArr = 2; for arr = 0 to 99 { TotVol = TotVol + Vol[arr]; if arr >= 2 and arr <= 97 then { if Vol[MaxArr-2]+Vol[MaxArr-1]+Vol[MaxArr]+Vol[MaxArr+1]+Vol[MaxArr+2] < Vol[arr-2] +Vol[arr-1] +Vol[arr] +Vol[arr+1] +Vol[arr+2] then MaxArr = arr; } } UpArr = MaxArr; DnArr = MaxArr; SubTotVol = Vol[MaxArr]; for j = 0 to 99 { Vol1 = iff(UpArr-1>=0,Vol[UpArr-1],0); Vol2 = iff(DnArr+1<=99,Vol[DnArr+1],0); if Vol1 > Vol2 then { SubTotVol = SubTotVol + Vol1; UpArr = UpArr - 1; } else if Vol1 < Vol2 then { SubTotVol = SubTotVol + Vol2; DnArr = DnArr + 1; } else if Vol1 == Vol2 and Vol1 > 0 and Vol2 > 0 then { SubTotVol = SubTotVol + Vol1; UpArr = UpArr - 1; if SubTotVol < TotVol * Percent/100 then { SubTotVol = SubTotVol + Vol2; DnArr = DnArr + 1; } } else if Vol1 + Vol2 == 0 then { if UpArr >= (99 - DnArr) then Uparr = UpArr - 1; else DnArr = DnArr + 1; } if SubTotVol >= TotVol * Percent/100 then j = 99; } MaxPrc = Prc[MaxArr]; UpPrc = Prc[UpArr]; DwnPrc = Prc[DnArr]; plot1(UpPrc); Plot2(DwnPrc); Plot3(MaxPrc);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-09-15 16:29:10

안녕하세요 예스스탁입니다. 해당식 크게 수정할 부분이 있지는 않습니다. Tick변수 계산시에 _TickValue을 LL)/100/PriceScale로 대체해 주시면 되며 if CodeCategoryEX() == 51 then Tick = Round((HH-LL)/100,2); else 위 부분은 해외에서는 불필요한 부분이므로 삭제하시면 됩니다. 수정한 식입니다. Input:Period(60),Percent(50); Var:arr(0),j(0),cnt(0),HH(0),LL(0),Tick(0),TickVol(0), TotVol(0),SubTotVol(0),MaxArr(0),UpArr(0),DnArr(0),MaxPrc(0), UpPrc(0),DwnPrc(0),Vol1(0),Vol2(0); Array:Prc[100](0),Vol[100](0); HH = Highest(H,Period); LL = Lowest(L,Period); Tick = Ceiling((HH-LL)/100/PriceScale)*PriceScale; Prc[0] = HH; Vol[0] = 0; for arr = 1 to 99 { Prc[arr] = Prc[arr-1] - Tick; Vol[arr] = 0; } for j = 0 to Period-1 { cnt = 0; for arr = 0 to 99 { if L[j] <= Prc[arr] and Prc[arr] <= H[j] then cnt = cnt + 1; } TickVol = V[j]/cnt; for arr = 0 to 99 { if L[j] <= Prc[arr] and Prc[arr] <= H[j] then { Vol[arr] = Vol[arr] + TickVol; } } } TotVol = 0; MaxArr = 2; for arr = 0 to 99 { TotVol = TotVol + Vol[arr]; if arr >= 2 and arr <= 97 then { if Vol[MaxArr-2]+Vol[MaxArr-1]+Vol[MaxArr]+Vol[MaxArr+1]+Vol[MaxArr+2] < Vol[arr-2] +Vol[arr-1] +Vol[arr] +Vol[arr+1] +Vol[arr+2] then MaxArr = arr; } } UpArr = MaxArr; DnArr = MaxArr; SubTotVol = Vol[MaxArr]; for j = 0 to 99 { Vol1 = iff(UpArr-1>=0,Vol[UpArr-1],0); Vol2 = iff(DnArr+1<=99,Vol[DnArr+1],0); if Vol1 > Vol2 then { SubTotVol = SubTotVol + Vol1; UpArr = UpArr - 1; } else if Vol1 < Vol2 then { SubTotVol = SubTotVol + Vol2; DnArr = DnArr + 1; } else if Vol1 == Vol2 and Vol1 > 0 and Vol2 > 0 then { SubTotVol = SubTotVol + Vol1; UpArr = UpArr - 1; if SubTotVol < TotVol * Percent/100 then { SubTotVol = SubTotVol + Vol2; DnArr = DnArr + 1; } } else if Vol1 + Vol2 == 0 then { if UpArr >= (99 - DnArr) then Uparr = UpArr - 1; else DnArr = DnArr + 1; } if SubTotVol >= TotVol * Percent/100 then j = 99; } MaxPrc = Prc[MaxArr]; UpPrc = Prc[UpArr]; DwnPrc = Prc[DnArr]; plot1(UpPrc); Plot2(DwnPrc); Plot3(MaxPrc); 즐거운 하루되세요 > yes 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 선물용 매물벽 지표를 해외선물용(유로화)에 사용 할수 있도록 부탁 드립니다. 미리 감사 드립니다. 참고자료는 44023에 이어 집니다. Input:Period(60),Percent(50); Var:arr(0),j(0),cnt(0),HH(0),LL(0),Tick(0),TickVol(0), TotVol(0),SubTotVol(0),MaxArr(0),UpArr(0),DnArr(0),MaxPrc(0), UpPrc(0),DwnPrc(0),Vol1(0),Vol2(0); Array:Prc[100](0),Vol[100](0); HH = Highest(H,Period); LL = Lowest(L,Period); if CodeCategoryEX() == 51 then Tick = Round((HH-LL)/100,2); else Tick = Ceiling((HH-LL)/100/_TickValue())*_TickValue(); Prc[0] = HH; Vol[0] = 0; for arr = 1 to 99 { Prc[arr] = Prc[arr-1] - Tick; Vol[arr] = 0; } for j = 0 to Period-1 { cnt = 0; for arr = 0 to 99 { if L[j] <= Prc[arr] and Prc[arr] <= H[j] then cnt = cnt + 1; } TickVol = V[j]/cnt; for arr = 0 to 99 { if L[j] <= Prc[arr] and Prc[arr] <= H[j] then { Vol[arr] = Vol[arr] + TickVol; } } } TotVol = 0; MaxArr = 2; for arr = 0 to 99 { TotVol = TotVol + Vol[arr]; if arr >= 2 and arr <= 97 then { if Vol[MaxArr-2]+Vol[MaxArr-1]+Vol[MaxArr]+Vol[MaxArr+1]+Vol[MaxArr+2] < Vol[arr-2] +Vol[arr-1] +Vol[arr] +Vol[arr+1] +Vol[arr+2] then MaxArr = arr; } } UpArr = MaxArr; DnArr = MaxArr; SubTotVol = Vol[MaxArr]; for j = 0 to 99 { Vol1 = iff(UpArr-1>=0,Vol[UpArr-1],0); Vol2 = iff(DnArr+1<=99,Vol[DnArr+1],0); if Vol1 > Vol2 then { SubTotVol = SubTotVol + Vol1; UpArr = UpArr - 1; } else if Vol1 < Vol2 then { SubTotVol = SubTotVol + Vol2; DnArr = DnArr + 1; } else if Vol1 == Vol2 and Vol1 > 0 and Vol2 > 0 then { SubTotVol = SubTotVol + Vol1; UpArr = UpArr - 1; if SubTotVol < TotVol * Percent/100 then { SubTotVol = SubTotVol + Vol2; DnArr = DnArr + 1; } } else if Vol1 + Vol2 == 0 then { if UpArr >= (99 - DnArr) then Uparr = UpArr - 1; else DnArr = DnArr + 1; } if SubTotVol >= TotVol * Percent/100 then j = 99; } MaxPrc = Prc[MaxArr]; UpPrc = Prc[UpArr]; DwnPrc = Prc[DnArr]; plot1(UpPrc); Plot2(DwnPrc); Plot3(MaxPrc);