커뮤니티
문의
2019-05-17 13:21:32
213
글번호 128760
아래 오실레이터 식에서
스탑스트레일링으로 하니 추세장에서 길게 먹지 못하네요
1. 재진입 - OSC 절대값이 다시 상승하면 재진입 .. 한번만 ..
2. 비추세 장에서 매매가 너무 잘주 일어나는데 줄이려면 뭘
추가해야 하나요 ?
Input:ChgRate(0.3);
Var:Row(0),Col(0),hiBar(0),loBar(0),HiCond(False),LoCond(False),
LastStat(0),WorkBit(0);
Var:HA_C(0),HA_O(0),HA_H(0),HA_L(0);
Var:ZzOsc(0);
Array : HiZZ[10,4](0), // 열번호 1:가격,2:Index,3:sDate,4:sTime
LoZZ[10,4](0);
#==========================================#
HA_C = (O+H+L+C)/4;
If IsNaN(HA_O[1]) Then
HA_O = O;
Else
HA_O = (HA_O[1]+HA_C[1])/2;
HA_H = max(H,HA_O,HA_C);
HA_L = min(L,HA_O,HA_C);
If Index == 1 Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = 0;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
LoZZ[1,1] = HA_L;
LoZZ[1,2] = 0;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
}
If Index > 0 Then {
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HA_H[hiBar] < HA_H Then hiBar = 0;
If HA_L[loBar] > HA_L Then loBar = 0;
HiCond = LoZZ[1,1] * (1 + (ChgRate/100)) < HA_H and hiBar == 0;
LoCond = HiZZ[1,1] * (1 - (ChgRate/100)) > HA_L and loBar == 0;
WorkBit = 0;
If HiCond and LoCond Then {
If HiZZ[1,1] < HA_H and LoZZ[1,1] > HA_L Then {
If HA_H - HiZZ[1,1] > LoZZ[1,1] - HA_L Then
WorkBit = 1;
Else If HA_H - HiZZ[1,1] < LoZZ[1,1] - HA_L Then
WorkBit = -1;
Else If LastStat == -1 Then
WorkBit = 1;
Else
WorkBit = -1;
} Else If LoZZ[1,1] > HA_L Then WorkBit = -1;
Else If HiZZ[1,1] < HA_H Then WorkBit = 1;
Else If LastStat == -1 Then WorkBit = 1;
Else WorkBit = -1;
} Else If HiCond Then WorkBit = 1;
Else If LoCond Then WorkBit = -1;
#==========================================#
If WorkBit == 1 Then {
If LastStat == -1 Then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
HiZZ[Row,Col] = HiZZ[Row-1,Col];
}
}
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If HiZZ[1,1] < HA_H Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = 1;
}
#==========================================#
If WorkBit == -1 Then {
If LastStat == 1 then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
LoZZ[Row,Col] = LoZZ[Row-1,Col];
}
}
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If LoZZ[1,1] > HA_L then {
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = -1;
}
ZzOsc = HA_C - IFF(LastStat == -1,HiZZ[1,1],LoZZ[1,1]);
input: n(0.5), n1(2), n2(1.3);
If CrossUp(ZzOsc,0) Then Buy("B");
If CrossDown(ZzOsc,0) Then Sell("S");
SetStopTrailing(n,n1,PointStop);
setstoploss (n2,pointstop);
답변 1
예스스탁 예스스탁 답변
2019-05-17 16:28:02
안녕하세요
예스스탁입니다.
1
Input:ChgRate(0.3);
Var:Row(0),Col(0),hiBar(0),loBar(0),HiCond(False),LoCond(False),
LastStat(0),WorkBit(0);
Var:HA_C(0),HA_O(0),HA_H(0),HA_L(0);
Var:ZzOsc(0);
Array : HiZZ[10,4](0), // 열번호 1:가격,2:Index,3:sDate,4:sTime
LoZZ[10,4](0);
#==========================================#
HA_C = (O+H+L+C)/4;
If IsNaN(HA_O[1]) Then
HA_O = O;
Else
HA_O = (HA_O[1]+HA_C[1])/2;
HA_H = max(H,HA_O,HA_C);
HA_L = min(L,HA_O,HA_C);
If Index == 1 Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = 0;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
LoZZ[1,1] = HA_L;
LoZZ[1,2] = 0;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
}
If Index > 0 Then {
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HA_H[hiBar] < HA_H Then hiBar = 0;
If HA_L[loBar] > HA_L Then loBar = 0;
HiCond = LoZZ[1,1] * (1 + (ChgRate/100)) < HA_H and hiBar == 0;
LoCond = HiZZ[1,1] * (1 - (ChgRate/100)) > HA_L and loBar == 0;
WorkBit = 0;
If HiCond and LoCond Then {
If HiZZ[1,1] < HA_H and LoZZ[1,1] > HA_L Then {
If HA_H - HiZZ[1,1] > LoZZ[1,1] - HA_L Then
WorkBit = 1;
Else If HA_H - HiZZ[1,1] < LoZZ[1,1] - HA_L Then
WorkBit = -1;
Else If LastStat == -1 Then
WorkBit = 1;
Else
WorkBit = -1;
} Else If LoZZ[1,1] > HA_L Then WorkBit = -1;
Else If HiZZ[1,1] < HA_H Then WorkBit = 1;
Else If LastStat == -1 Then WorkBit = 1;
Else WorkBit = -1;
} Else If HiCond Then WorkBit = 1;
Else If LoCond Then WorkBit = -1;
#==========================================#
If WorkBit == 1 Then {
If LastStat == -1 Then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
HiZZ[Row,Col] = HiZZ[Row-1,Col];
}
}
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If HiZZ[1,1] < HA_H Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = 1;
}
#==========================================#
If WorkBit == -1 Then {
If LastStat == 1 then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
LoZZ[Row,Col] = LoZZ[Row-1,Col];
}
}
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If LoZZ[1,1] > HA_L then {
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = -1;
}
ZzOsc = HA_C - IFF(LastStat == -1,HiZZ[1,1],LoZZ[1,1]);
input: n(0.5), n1(2), n2(1.3);
If CrossUp(ZzOsc,0) Then Buy("B");
if MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and
ZzOsc > ZzOsc[1] and ZzOsc[1] > 0 Then
buy("bb");
If CrossDown(ZzOsc,0) Then Sell("S");
if MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and
ZzOsc < ZzOsc[1] and ZzOsc[1] < 0 Then
sell("ss");
SetStopTrailing(n,n1,PointStop);
setstoploss (n2,pointstop);
2
해당 부분은 일정기간 진폭이 몇%이상일떄만 진입하는등
따로 조건을 고려해 보셔야 합니다.
진폭 내용을 추가해 드립니다.
Input:ChgRate(0.3),Period(20),Change(3);
Var:Row(0),Col(0),hiBar(0),loBar(0),HiCond(False),LoCond(False),
LastStat(0),WorkBit(0);
Var:HA_C(0),HA_O(0),HA_H(0),HA_L(0);
Var:ZzOsc(0);
Array : HiZZ[10,4](0), // 열번호 1:가격,2:Index,3:sDate,4:sTime
LoZZ[10,4](0);
#==========================================#
HA_C = (O+H+L+C)/4;
If IsNaN(HA_O[1]) Then
HA_O = O;
Else
HA_O = (HA_O[1]+HA_C[1])/2;
HA_H = max(H,HA_O,HA_C);
HA_L = min(L,HA_O,HA_C);
If Index == 1 Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = 0;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
LoZZ[1,1] = HA_L;
LoZZ[1,2] = 0;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
}
If Index > 0 Then {
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HA_H[hiBar] < HA_H Then hiBar = 0;
If HA_L[loBar] > HA_L Then loBar = 0;
HiCond = LoZZ[1,1] * (1 + (ChgRate/100)) < HA_H and hiBar == 0;
LoCond = HiZZ[1,1] * (1 - (ChgRate/100)) > HA_L and loBar == 0;
WorkBit = 0;
If HiCond and LoCond Then {
If HiZZ[1,1] < HA_H and LoZZ[1,1] > HA_L Then {
If HA_H - HiZZ[1,1] > LoZZ[1,1] - HA_L Then
WorkBit = 1;
Else If HA_H - HiZZ[1,1] < LoZZ[1,1] - HA_L Then
WorkBit = -1;
Else If LastStat == -1 Then
WorkBit = 1;
Else
WorkBit = -1;
} Else If LoZZ[1,1] > HA_L Then WorkBit = -1;
Else If HiZZ[1,1] < HA_H Then WorkBit = 1;
Else If LastStat == -1 Then WorkBit = 1;
Else WorkBit = -1;
} Else If HiCond Then WorkBit = 1;
Else If LoCond Then WorkBit = -1;
#==========================================#
If WorkBit == 1 Then {
If LastStat == -1 Then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
HiZZ[Row,Col] = HiZZ[Row-1,Col];
}
}
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If HiZZ[1,1] < HA_H Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = 1;
}
#==========================================#
If WorkBit == -1 Then {
If LastStat == 1 then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
LoZZ[Row,Col] = LoZZ[Row-1,Col];
}
}
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If LoZZ[1,1] > HA_L then {
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = -1;
}
ZzOsc = HA_C - IFF(LastStat == -1,HiZZ[1,1],LoZZ[1,1]);
input: n(0.5), n1(2), n2(1.3);
if highest(H,Period) <= lowest(L,Period)*(1+Change/100) then
{
If CrossUp(ZzOsc,0) Then Buy("B");
if MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and
ZzOsc > ZzOsc[1] and ZzOsc[1] > 0 Then
buy("bb");
If CrossDown(ZzOsc,0) Then Sell("S");
if MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and
ZzOsc < ZzOsc[1] and ZzOsc[1] < 0 Then
sell("ss");
}
SetStopTrailing(n,n1,PointStop);
setstoploss (n2,pointstop);
즐거운 하루되세요
> 구다이전설 님이 쓴 글입니다.
> 제목 : 문의
> 아래 오실레이터 식에서
스탑스트레일링으로 하니 추세장에서 길게 먹지 못하네요
1. 재진입 - OSC 절대값이 다시 상승하면 재진입 .. 한번만 ..
2. 비추세 장에서 매매가 너무 잘주 일어나는데 줄이려면 뭘
추가해야 하나요 ?
Input:ChgRate(0.3);
Var:Row(0),Col(0),hiBar(0),loBar(0),HiCond(False),LoCond(False),
LastStat(0),WorkBit(0);
Var:HA_C(0),HA_O(0),HA_H(0),HA_L(0);
Var:ZzOsc(0);
Array : HiZZ[10,4](0), // 열번호 1:가격,2:Index,3:sDate,4:sTime
LoZZ[10,4](0);
#==========================================#
HA_C = (O+H+L+C)/4;
If IsNaN(HA_O[1]) Then
HA_O = O;
Else
HA_O = (HA_O[1]+HA_C[1])/2;
HA_H = max(H,HA_O,HA_C);
HA_L = min(L,HA_O,HA_C);
If Index == 1 Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = 0;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
LoZZ[1,1] = HA_L;
LoZZ[1,2] = 0;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
}
If Index > 0 Then {
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HA_H[hiBar] < HA_H Then hiBar = 0;
If HA_L[loBar] > HA_L Then loBar = 0;
HiCond = LoZZ[1,1] * (1 + (ChgRate/100)) < HA_H and hiBar == 0;
LoCond = HiZZ[1,1] * (1 - (ChgRate/100)) > HA_L and loBar == 0;
WorkBit = 0;
If HiCond and LoCond Then {
If HiZZ[1,1] < HA_H and LoZZ[1,1] > HA_L Then {
If HA_H - HiZZ[1,1] > LoZZ[1,1] - HA_L Then
WorkBit = 1;
Else If HA_H - HiZZ[1,1] < LoZZ[1,1] - HA_L Then
WorkBit = -1;
Else If LastStat == -1 Then
WorkBit = 1;
Else
WorkBit = -1;
} Else If LoZZ[1,1] > HA_L Then WorkBit = -1;
Else If HiZZ[1,1] < HA_H Then WorkBit = 1;
Else If LastStat == -1 Then WorkBit = 1;
Else WorkBit = -1;
} Else If HiCond Then WorkBit = 1;
Else If LoCond Then WorkBit = -1;
#==========================================#
If WorkBit == 1 Then {
If LastStat == -1 Then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
HiZZ[Row,Col] = HiZZ[Row-1,Col];
}
}
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If HiZZ[1,1] < HA_H Then {
HiZZ[1,1] = HA_H;
HiZZ[1,2] = Index;
HiZZ[1,3] = sDate;
HiZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = 1;
}
#==========================================#
If WorkBit == -1 Then {
If LastStat == 1 then {
For Row = 10 DownTo 2 {
For Col = 1 To 4 {
LoZZ[Row,Col] = LoZZ[Row-1,Col];
}
}
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
} Else If LoZZ[1,1] > HA_L then {
LoZZ[1,1] = HA_L;
LoZZ[1,2] = Index;
LoZZ[1,3] = sDate;
LoZZ[1,4] = sTime;
hiBar = -1;
loBar = -1;
}
LastStat = -1;
}
ZzOsc = HA_C - IFF(LastStat == -1,HiZZ[1,1],LoZZ[1,1]);
input: n(0.5), n1(2), n2(1.3);
If CrossUp(ZzOsc,0) Then Buy("B");
If CrossDown(ZzOsc,0) Then Sell("S");
SetStopTrailing(n,n1,PointStop);
setstoploss (n2,pointstop);