커뮤니티

재문의

프로필 이미지
성공예견
2020-10-05 13:34:40
779
글번호 142838
답변완료
1.매번 감사드립니다 작성해준 지표(69392)에 (H+L+O)/3를 추가 해서 지표를 띄우니 표시가 안돼요 좀 봐주세요 #==========================================# Input : Length(13),UpLevel(70),DnLevel(30), NxtYn(0); var : oUpBand(0),oDnBand(0),oMidLine(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0); #==========================================# Var :CC(0); CC = (H+L+O)/3; #==========================================# If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = CC[Counter] - CC[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End Else IF CurrentBar > 1 AND Length > 0 Then Begin UpAmt = CC[0] - CC[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End; If UpAvg + DownAvg <> 0 Then Value1 = 100 * UpAvg / (UpAvg + DownAvg); Else Value1 = 0; If nxtYn == 1 Then // 다음 봉 여부가 1일 경우 { If Value1 > UpLevel Then // 상단밴드 oUpBand = (((UpLevel - 100) / UpLevel * UpAvg) + DownAvg) * (Length - 1) + CC; Else oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg) - UpAvg) * (Length - 1) + CC; If Value1 > DnLevel Then // 하단밴드 oDnBand = (((DnLevel - 100) / DnLevel * UpAvg) + DownAvg) * (Length - 1) + CC; Else oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg) - UpAvg) * (Length - 1) + CC; MidLevel = (UpLevel + DnLevel) / 2; // 중간라인 If Value1 > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg) + DownAvg) * (Length - 1) + CC; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg) - UpAvg) * (Length - 1) + CC; } Else { If Value1[1] > UpLevel Then oUpBand = (((UpLevel - 100) / UpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1]; Else oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1]; If Value1[1] > DnLevel Then oDnBand = (((DnLevel - 100) / DnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1]; Else oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1]; MidLevel = (UpLevel + DnLevel) / 2; If Value1[1] > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1]; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1]; } Plot1(oUpBand,"몸통", RGb(225,220,0)); Plot2(oMidLine); Plot3(oDnBand,"몸통", BLACK); 2.그럼 즐거운 하루 되세요.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-10-06 09:56:51

안녕하세요 예스스탁입니다. 올려주신 수식에 문제가 없습니다. 첨부된 그림과 같이 정상적으로 적용되고 있습니다. 즐거운 하루되세요 > 성공예견 님이 쓴 글입니다. > 제목 : 재문의 > 1.매번 감사드립니다 작성해준 지표(69392)에 (H+L+O)/3를 추가 해서 지표를 띄우니 표시가 안돼요 좀 봐주세요 #==========================================# Input : Length(13),UpLevel(70),DnLevel(30), NxtYn(0); var : oUpBand(0),oDnBand(0),oMidLine(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0); #==========================================# Var :CC(0); CC = (H+L+O)/3; #==========================================# If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = CC[Counter] - CC[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End Else IF CurrentBar > 1 AND Length > 0 Then Begin UpAmt = CC[0] - CC[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End; If UpAvg + DownAvg <> 0 Then Value1 = 100 * UpAvg / (UpAvg + DownAvg); Else Value1 = 0; If nxtYn == 1 Then // 다음 봉 여부가 1일 경우 { If Value1 > UpLevel Then // 상단밴드 oUpBand = (((UpLevel - 100) / UpLevel * UpAvg) + DownAvg) * (Length - 1) + CC; Else oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg) - UpAvg) * (Length - 1) + CC; If Value1 > DnLevel Then // 하단밴드 oDnBand = (((DnLevel - 100) / DnLevel * UpAvg) + DownAvg) * (Length - 1) + CC; Else oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg) - UpAvg) * (Length - 1) + CC; MidLevel = (UpLevel + DnLevel) / 2; // 중간라인 If Value1 > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg) + DownAvg) * (Length - 1) + CC; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg) - UpAvg) * (Length - 1) + CC; } Else { If Value1[1] > UpLevel Then oUpBand = (((UpLevel - 100) / UpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1]; Else oUpBand = ((UpLevel / (100 - UpLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1]; If Value1[1] > DnLevel Then oDnBand = (((DnLevel - 100) / DnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1]; Else oDnBand = ((DnLevel / (100 - DnLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1]; MidLevel = (UpLevel + DnLevel) / 2; If Value1[1] > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + CC[1]; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + CC[1]; } Plot1(oUpBand,"몸통", RGb(225,220,0)); Plot2(oMidLine); Plot3(oDnBand,"몸통", BLACK); 2.그럼 즐거운 하루 되세요.