커뮤니티

문의

프로필 이미지
구다이전설
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);