커뮤니티

75964 추가 질문 드립니다

프로필 이미지
jshwang2
2022-02-16 12:05:35
1388
글번호 156356
답변완료
안녕하세요~ 문의드린 부분에 대해 아래와 같이 답변받았습니다 -------------------- 1 청산후에 진입이 동일봉에서 발생하는 경우가 있습니다. 랭귀지는 봉완성이 기준이며 모든 사용하는 값과 값저장은 봉완성이 기준입니다. if B>0 && B == Hcount then HB = rHB; if S>0 && S == Lcount then LB = rLB; 청산후 같은봉 미완성시에 위 내용으로 HB,LB에 저장되는 것은 아닙니다. 해당 내용을 해결하기 위해서는 최소한 한개봉은 완성이 되어야 하므로 청산이 발생한 봉에서 같이 동일방향 진입이 발생하는 것을 막는 방법뿐이 없습니다. if MarketPosition <= 0 and Hstate == true then { Buy("b1",AtStop,HB,unitP); Buy("b2",AtStop,HB+0.5*N,unitP); Buy("b3",AtStop,HB+N,unitP); Buy("b4",AtStop,HB+1.5*N,unitP); } if MarketPosition >= 0 and Lstate == true then { Sell("s1",AtStop,LB,unitP); Sell("s2",AtStop,LB-0.5*N,unitP); Sell("s3",AtStop,LB-N,unitP); Sell("s4",AtStop,LB-2.5*N,unitP); } ----------------------------------- 위와같이 marketposition 0 이하일때 매수, 0 이상일때 매도를 조건으로 넣게되면 피라미딩이 안되지 않나요?? (매수일 경우) 첫번째 진입하면 marketposition이 1이되서 2~4번째 진입이 안될것 같은데 이 부분 확인 부탁드리겠습니다! 감사합니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-02-16 14:07:18

안녕하세요 예스스탁입니다. 1 죄송합니다. 피라미딩부분에 대한 답변내용이 누락되었습니다. 아래와 같이 무포지션이나 반대포지션 상태에서 셋팅되면 다음봉 하나에서 4개 진입모두를 허용을 하고 매수포지션 진행중에는 진입이후최고가가 지정한 값 보다 작을때만 매도포지션 진행중에는 진입이후최저가가 지정한 값 보다 클때만 각 진입가격이 셋팅되서 다음봉의 현재가와 비교해서 신호가 발생하게 하시면 됩니다. 즉 각가격이 한번 터치해서 진입이 발생하면 해당 가격으로는 추가적으로 진입을 막는 내용입니다. if MarketPosition <= 0 and Hstate == true then { Buy("b1",AtStop,HB,unitP); Buy("b2",AtStop,HB+0.5*N,unitP); Buy("b3",AtStop,HB+N,unitP); Buy("b4",AtStop,HB+1.5*N,unitP); } if MarketPosition >= 0 and Lstate == true then { Sell("s1",AtStop,LB,unitP); Sell("s2",AtStop,LB-0.5*N,unitP); Sell("s3",AtStop,LB-N,unitP); Sell("s4",AtStop,LB-2.5*N,unitP); } if marketposition ==1 Then { rHB = Highest(H, BarsSinceEntry) ; if rHB < HB+0.5*N Then Buy("b2.",AtStop,HB+0.5*N,unitP); if rHB < HB+0.5*N Then Buy("b3.",AtStop,HB+N,unitP); if rHB < HB+1.5*N Then Buy("b4.",AtStop,HB+1.5*N,unitP); if e60 < HB+2*N Then Exitlong("exitB1", atstop, HB-exitC); if e60 >= HB+2*N and CrossDown(close, e60) Then { ExitLong("exitB2") ; Hstate = false ; } Exitlong("exitB3", AtLimit, Hx); } if marketposition == -1 Then { rLB = Lowest(L, BarsSinceEntry); if rLB > LB-0.5*N Then Sell("s2",AtStop,LB-0.5*N,unitP); if rLB > LB-0.5*N Then Sell("s3",AtStop,LB-N,unitP); if rLB > LB-0.5*N Then Sell("s4",AtStop,LB-2.5*N,unitP); if e60 > LB-2*N Then ExitShort("exitS1", atstop, LB+exitC); if e60 <= LB-2*N and CrossUp(close, e60) Then { ExitShort("exitS2"); Lstate = false ; } exitshort("exitS3", AtLimit, Lx); } 2 input : TT(224300), TD(20220215), MDD(200000) ; var : HB(14574), LB(14481), Hx(20000), Lx(1); var : e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), Hstate(true), Lstate(true), N(0), unitP(0), exitC(0), rHB(0), rLB(0); N = Highest(ATr(14), 100); unitP = floor(MDD/(N*5*4*600)); exitC = (2-(MaxEntries-1)/2)*N; e60 = Ema(C,60); if Condition1 == False and sDate >= TD and sTime >= TT Then { Condition1 = true; Hcount = 0; Lcount = 0; T1 = TotalTrades; } if Condition1 == true Then { B = 0; S = 0; if TotalTrades-T1 > 0 Then { For cnt = 1 to TotalTrades-T1 { if MarketPosition(cnt) == 1 Then B = B+1; if MarketPosition(cnt) == -1 Then S = S+1; } } Hcount = B + IFf(MarketPosition == 1,1,0); Lcount = S + IFf(MarketPosition == -1,1,0); if B>0 && B == Hcount then HB = rHB; if S>0 && S == Lcount then LB = rLB; if MarketPosition <= 0 and Hstate == true then { Buy("b1",AtStop,HB,unitP); Buy("b2",AtStop,HB+0.5*N,unitP); Buy("b3",AtStop,HB+N,unitP); Buy("b4",AtStop,HB+1.5*N,unitP); } if MarketPosition >= 0 and Lstate == true then { Sell("s1",AtStop,LB,unitP); Sell("s2",AtStop,LB-0.5*N,unitP); Sell("s3",AtStop,LB-N,unitP); Sell("s4",AtStop,LB-2.5*N,unitP); } if marketposition ==1 Then { rHB = Highest(H, BarsSinceEntry) ; if rHB < HB+0.5*N Then Buy("b2.",AtStop,HB+0.5*N,unitP); if rHB < HB+0.5*N Then Buy("b3.",AtStop,HB+N,unitP); if rHB < HB+1.5*N Then Buy("b4.",AtStop,HB+1.5*N,unitP); if e60 < HB+2*N Then Exitlong("exitB1", atstop, HB-exitC); if e60 >= HB+2*N and CrossDown(close, e60) Then { ExitLong("exitB2") ; Hstate = false ; } Exitlong("exitB3", AtLimit, Hx); } if marketposition == -1 Then { rLB = Lowest(L, BarsSinceEntry); if rLB > LB-0.5*N Then Sell("s2.",AtStop,LB-0.5*N,unitP); if rLB > LB-0.5*N Then Sell("s3.",AtStop,LB-N,unitP); if rLB > LB-0.5*N Then Sell("s4.",AtStop,LB-2.5*N,unitP); if e60 > LB-2*N Then ExitShort("exitS1", atstop, LB+exitC); if e60 <= LB-2*N and CrossUp(close, e60) Then { ExitShort("exitS2"); Lstate = false ; } exitshort("exitS3", AtLimit, Lx); } if Hcount > 3 Then Hstate = False; if Lcount > 3 Then Lstate = False; if H >= Hx then Hstate = false; if L <= Lx then Lstate = false; } 즐거운 하루되세요 > jshwang2 님이 쓴 글입니다. > 제목 : 75964 추가 질문 드립니다 > 안녕하세요~ 문의드린 부분에 대해 아래와 같이 답변받았습니다 -------------------- 1 청산후에 진입이 동일봉에서 발생하는 경우가 있습니다. 랭귀지는 봉완성이 기준이며 모든 사용하는 값과 값저장은 봉완성이 기준입니다. if B>0 && B == Hcount then HB = rHB; if S>0 && S == Lcount then LB = rLB; 청산후 같은봉 미완성시에 위 내용으로 HB,LB에 저장되는 것은 아닙니다. 해당 내용을 해결하기 위해서는 최소한 한개봉은 완성이 되어야 하므로 청산이 발생한 봉에서 같이 동일방향 진입이 발생하는 것을 막는 방법뿐이 없습니다. if MarketPosition <= 0 and Hstate == true then { Buy("b1",AtStop,HB,unitP); Buy("b2",AtStop,HB+0.5*N,unitP); Buy("b3",AtStop,HB+N,unitP); Buy("b4",AtStop,HB+1.5*N,unitP); } if MarketPosition >= 0 and Lstate == true then { Sell("s1",AtStop,LB,unitP); Sell("s2",AtStop,LB-0.5*N,unitP); Sell("s3",AtStop,LB-N,unitP); Sell("s4",AtStop,LB-2.5*N,unitP); } ----------------------------------- 위와같이 marketposition 0 이하일때 매수, 0 이상일때 매도를 조건으로 넣게되면 피라미딩이 안되지 않나요?? (매수일 경우) 첫번째 진입하면 marketposition이 1이되서 2~4번째 진입이 안될것 같은데 이 부분 확인 부탁드리겠습니다! 감사합니다