예스스탁
예스스탁 답변
2020-11-30 14:49:54
안녕하세요
예스스탁입니다.
올리신 수식으로는 내용이 정확히 파악이 되지 않습니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
1
시그널선이 0이하로 내려간 후 2번이상 데드구간이 생기고 최근 데드구간과 직전 데드구간을 비교해서
최근 데드구간 MACD의 최저가가가 직전 데드구간의 MACD의 최저가보다 크고
동일구간 가격(저가)은 하락했으면 표시하는 내용이면 아래와 같습니다.
Input : shortPeriod(5), longPeriod(20), N(70);
Var : MACDV(0), MACDS(0),T(0),UpIdx(0),cnt(0);
Array : LIV[10](0),LPV[10](0),LXV[10](0);
MACDV = MACD(shortPeriod, longPeriod);
MACDS = EMA(MACDV,5);
if MACDS > 0 Then
UpIdx = Index;
if crossup(MACDV,MACDS) Then
{
T = 1;
if LPV[1] > 0 and LIV[0] > LIV[1] and LPV[0] < LPV[1] and LXV[1] > UPidx and Index < LXV[1]+70 Then
plot1(H,"매수디버젼스");
}
if CrossDown(MACDV,MACDS) Then
{
T = -1;
LIV[0] = MACDV;
LPV[0] = L;
LXV[0] = Index;
For cnt = 1 to 9
{
LIV[cnt] = LIV[cnt-1][1];
LPV[cnt] = LPV[cnt-1][1];
LXV[cnt] = LXV[cnt-1][1];
}
}
if T == -1 Then
{
if MACDV < LIV[0] Then
{
LIV[0] = MACDV;
LXV[0] = Index;
}
if L < LPV[0] Then
{
LPV[0] = L;
}
}
2
올리신 그림에서 데드구간 비교가 최근과 직전이 아닌 전전 데드구간입니다.
70봉 이내에 0선 이하 데드구간 중 가장 작은 것과 최근것을 비교하신 다면 아래와 같습니다.
Input : shortPeriod(5), longPeriod(20), N(70);
Var : MACDV(0), MACDS(0),T(0),UpIdx(0),cnt(0);
Array : LIV[10](0),LPV[10](0),LXV[10](0);
MACDV = MACD(shortPeriod, longPeriod);
MACDS = EMA(MACDV,5);
if MACDS > 0 Then
UpIdx = Index;
if crossup(MACDV,MACDS) Then
{
T = 1;
if Index < LXV[1]+70 Then
{
var1 = 0;
Var2 = 0;
For cnt = 1 to 9
{
if LIV[cnt] < 0 and LXV[cnt] > Upidx and Index <= LXV[cnt]+N Then
{
if LIV[cnt] < var1 Then
{
var1 = LIV[cnt];
Var2 = LPV[cnt];
}
}
}
if var1 < 0 and LIV[0] > var1 and LPV[0] < Var2 and Index > upIdx Then
plot1(H,"매수디버젼스");
}
}
if CrossDown(MACDV,MACDS) Then
{
T = -1;
LIV[0] = MACDV;
LPV[0] = L;
LXV[0] = Index;
For cnt = 1 to 9
{
LIV[cnt] = LIV[cnt-1][1];
LPV[cnt] = LPV[cnt-1][1];
LXV[cnt] = LXV[cnt-1][1];
}
}
if T == -1 Then
{
if MACDV < LIV[0] Then
{
LIV[0] = MACDV;
LXV[0] = Index;
}
if L < LPV[0] Then
{
LPV[0] = L;
}
}
즐거운 하루되세요
> 차티스트박찬호 님이 쓴 글입니다.
> 제목 : 디버젼스
> 뭐가 잘못될걸 까요?
제가 찾고싶은 지점은 가격이 하락했지만 macd값은 상승했을때, macd가 signal선을 상승돌파하는 지점을 표시하고 싶습니다.
Input : shortPeriod(5), longPeriod(20), N(70);
Var : MACDV(0) , MACDS(0), cnt(0), first(0), second(0), flag(0), maev_1(0), maev_2(0), past(0), ep_1(0), ep_2(0);
MACDV = MACD(shortPeriod, longPeriod);
MACDS= EMA(MACDV,5);
//*70봉 안에서 디버젼스 찾기*//
for cnt = 0 to N-1
{
//*반복문 종료조건 : macd signal 선이 0선위로 올라오면*//
if MACDS[cnt] > 0 Then
{
cnt = 1000 ;
}
//*최초 기준점 잡기*//
If flag == 0 Then
{
first = MACDS[cnt];
//*기준점 이전봉에서 macd의 저점 찾기*//
maev_1= Min(first[0], first[1], first[2], first[3], first[4]);
}
//* 이전에 골든크로스 된 지점 찾기*//
if CrossUp(MACDV[cnt],MACDS[cnt]) && MACDS[cnt] < 0 && flag > 0 Then
{
second = MACDV[cnt];
maev_2 = Min(second[0], second[1], second[2], second[3], second[4]);
if maev_2 < maev_1 Then
{
past = cnt;
}
}
flag = flag+1;
}
ep_1 = Lowest(L,5);
ep_2 = Lowest(L,5)[past];
Condition1 = ep_2 > ep_1 && maev_2 < maev_1;
If Condition1 == True Then
plot1(H,"매수디버젼스");
Else
NoPlot(1);