예스스탁
예스스탁 답변
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);
}