커뮤니티

지표 수식 부탁드립니다. (수정 의뢰 1)

프로필 이미지
원칙투자자
2022-01-17 14:03:25
1093
글번호 155507
답변완료

첨부 이미지

담당자님, 안녕하세요. 항상 수고 많으십니다. 작성해주신 지표 수식을 잘 활용하고 있습니다. 감사드립니다. 수식작성QA 75536 답변에서 작성해 주신 수식에 대하여 수정 보완을 부탁드립니다. (수정 의뢰 1) 위의 수정의뢰 문서2 75562와 관련되는 질문입니다. 작성해주신 75536 답변 수식을 실행해 보니 위 그림 파일과 같이 실행됩니다. 상단라인(굵은 청색선)은 MACD 오실레이터 값의 부호가 장시작 후 최초 1회 변경 될 때 장시작 부터 그 때(최초 1회 변경)까지의 최고점을 장마감까지 계속 표시합니다. 하단라인(굵은 분홍색선)은 MACD 오실레이터 값의 부호가 변경될 때 마다 장시작 부터 매번 변경되는 시점까지의 최저점을 계속 갱신해서 변경되는 수평라인을 표시합니다. ------------------------------------------------------------------------------------- 상단라인(굵은 청색선)도 MACD 오실레이터 값의 부호가 변경될 때 마다 장시작 부터 변경되는 시점까지의 최고점을 계속 갱신해서 변경되는 수평라인을 표시(하단라인 처럼 표시)하도록 기존 지표수식 중 상단라인 부분의 수정, 보완을 부탁드립니다. (기존 하단라인은 계속 유지) * 상단라인도 하단라인과 같은 로직으로 표시되도록 수정함. 즉, 동일한 일자에서 고점과 저점 모두 높아지면 그 날짜에 상단라인과 하단라인 모두 각각 고점과 저점 변경을 반영하여 갱신되어 표시되도록 수정 아래 지표1, 지표2 모두 수정해 주실 것을 부탁드립니다. cf. 지표1 : 오실레이터 변경 시점 (즉, 오실레이터 골든크로스 또는 데드크로스 시점 포함)의 구간까지 고점 및 저점을 표시하는 수평라인 cf. 지표1 : 오실레이터 변경되기 직전 (즉, 오실레이터 골든크로스 또는 데드크로스 되기 직전)의 구간까지 고점 및 저점을 표시하는 수평라인 -------------------------------------------------------------------------------------- 위와 같이 지표1과 지표2의 지표 수식의 수정, 보완을 부탁드립니다. 담당자님 노고와 답변에 미리 감사드립니다. ---------------------------------------------------------------------------------------------------- 아래는 수식작성QA 75536 답변(RE)에서 작성해 주신 수식입니다. 작성에 참고하시기 바랍니다. 지표1 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T == n Then { var1 = DayHigh; } Var2 = DayLow; } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); } --------------------------------------------------- 지표2 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T == n Then { var1 = DayHigh(0)[1]; } Var2 = DayLow(0)[1]; } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-01-17 15:08:27

안녕하세요 예스스탁입니다. 기존수식에 {}가 잘못작성이 되어서 저가가 계속 변경되게 되어 있었습니다. 우선 n번째 변경시 최고가와 최저가를 그리는 식을 수정해 드립니다. 1-1,1-2는 기존수식을 수정한 버전이고 2-1,2-2는 n회이후 계속 변경되게 수정한 식입니다. 1 1-1 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T == n Then { var1 = DayHigh; Var2 = DayLow; } } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); } 1-2 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T == n Then { var1 = DayHigh(0)[1]; Var2 = DayLow(0)[1]; } } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); } 2 2-1 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T >= n Then { var1 = DayHigh; Var2 = DayLow; } } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); } 2-2 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T >= n Then { var1 = DayHigh(0)[1]; Var2 = DayLow(0)[1]; } } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); } 즐거운 하루되세요 > 원칙투자자 님이 쓴 글입니다. > 제목 : 지표 수식 부탁드립니다. (수정 의뢰 1) > 담당자님, 안녕하세요. 항상 수고 많으십니다. 작성해주신 지표 수식을 잘 활용하고 있습니다. 감사드립니다. 수식작성QA 75536 답변에서 작성해 주신 수식에 대하여 수정 보완을 부탁드립니다. (수정 의뢰 1) 위의 수정의뢰 문서2 75562와 관련되는 질문입니다. 작성해주신 75536 답변 수식을 실행해 보니 위 그림 파일과 같이 실행됩니다. 상단라인(굵은 청색선)은 MACD 오실레이터 값의 부호가 장시작 후 최초 1회 변경 될 때 장시작 부터 그 때(최초 1회 변경)까지의 최고점을 장마감까지 계속 표시합니다. 하단라인(굵은 분홍색선)은 MACD 오실레이터 값의 부호가 변경될 때 마다 장시작 부터 매번 변경되는 시점까지의 최저점을 계속 갱신해서 변경되는 수평라인을 표시합니다. ------------------------------------------------------------------------------------- 상단라인(굵은 청색선)도 MACD 오실레이터 값의 부호가 변경될 때 마다 장시작 부터 변경되는 시점까지의 최고점을 계속 갱신해서 변경되는 수평라인을 표시(하단라인 처럼 표시)하도록 기존 지표수식 중 상단라인 부분의 수정, 보완을 부탁드립니다. (기존 하단라인은 계속 유지) * 상단라인도 하단라인과 같은 로직으로 표시되도록 수정함. 즉, 동일한 일자에서 고점과 저점 모두 높아지면 그 날짜에 상단라인과 하단라인 모두 각각 고점과 저점 변경을 반영하여 갱신되어 표시되도록 수정 아래 지표1, 지표2 모두 수정해 주실 것을 부탁드립니다. cf. 지표1 : 오실레이터 변경 시점 (즉, 오실레이터 골든크로스 또는 데드크로스 시점 포함)의 구간까지 고점 및 저점을 표시하는 수평라인 cf. 지표1 : 오실레이터 변경되기 직전 (즉, 오실레이터 골든크로스 또는 데드크로스 되기 직전)의 구간까지 고점 및 저점을 표시하는 수평라인 -------------------------------------------------------------------------------------- 위와 같이 지표1과 지표2의 지표 수식의 수정, 보완을 부탁드립니다. 담당자님 노고와 답변에 미리 감사드립니다. ---------------------------------------------------------------------------------------------------- 아래는 수식작성QA 75536 답변(RE)에서 작성해 주신 수식입니다. 작성에 참고하시기 바랍니다. 지표1 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T == n Then { var1 = DayHigh; } Var2 = DayLow; } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); } --------------------------------------------------- 지표2 Input : short(12), long(26), signal(9),n(1); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; var1 = 0; Var2 = 0; } Else { if CrossUp(MACDO,0) or CrossDown(MACDO,0) Then { T = T+1; if T == n Then { var1 = DayHigh(0)[1]; } Var2 = DayLow(0)[1]; } } if var1 > 0 and Var2 > 0 Then { Plot1(Var1); plot2(Var2); } Else { NoPlot(1); NoPlot(2); }