커뮤니티

수식 문의

프로필 이미지
softtoug
2017-01-24 20:41:38
121
글번호 106249
답변완료
안녕하세요 하기 검토 부탁드리며, 도움 부탁드립니다. input : P(14),BBP(20),dv(2),MAP(60); input : short(12),long(26),sig(9); var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0); var : MACDV(0),MACDS(0),Bcond(false),Scond(False),bbmd(0),diff(0),cnt(0),count(0); ADXV = ADX(P); DP = Diplus(P); DM = DiMinus(P); bbmd = ma(c,BBP); BBup = BollBandUp(BBP,dv); BBdn = BollBandDown(BBP,dv); mav = ma(C,MAP); MACDV = MACD(short,long); MACDS = ema(MACDV,sig); diff = C-O; Bcond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == -1 and BarsSinceEntry >= 4); Scond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == 1 and BarsSinceEntry >= 4); if MarketPosition == 0 Then{ if MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and H > BBup then { buy("bb",AtStop,C-PriceScale); } if MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and L < BBdn then { sell("ss",AtStop,C+PriceScale); } } if MarketPosition == 1 then{ if IsEntryName("bb") == true and CrossDown(MACDv,MACDs) Then sell("sx1"); } if MarketPosition == -1 then{ if IsEntryName("ss") == true and CrossUp(MACDv,MACDs) Then buy("bx1"); } 1. 상기 수식에서 한가지 더 추가하고 싶습니다. bb or ss 상태에서 볼린져 밴드 중앙 이평선을 넘어서는 완성봉이 발생하면, bx1,sx1 으로 반대 매매 진입 부탁드립니다. 현재는 macd & macd signal 조건만 진행하고 있는데, 상기 방법으로 한가지 더 추가 하고 싶습니다. 2 한개의 봉이 시작하고 30틱을 넘으면 추격매매 들어가는 수식 부탁드립니다. 양봉이면 매수로, 음봉이면 매도로 31틱에서 진입부탁드립니다. 기존에 역포지션이 걸렸을 경우, 30틱에서 청산후 31틱에서 반대매매로 진입합니다. 예를들어, 매수 포지션중인데 음봉이 발생하여 30틱이 넘으면, 31틱에서 매수 청산 후 매도 진입하는 수식입니다. 무포일 경우에는 31틱에서 매도 진입하게 부탁드립니다. 3 최대 수익대비 하락 기능을 쓰고 있는데, 실제 청산값과 챠트 reset 후 청산가격이 다릅니다. 이것을 일치시키는 방법이 없을까요? 적게 청산되면 적게 청산되는 대로, 있는 그대로 챠트상이나 시스템 성능 보고서에 나타났으면 좋겠습니다. 혹시, 상기가 되지 않는다면 최대수익대비하락으로 익절을 내고 그 가격에 재진입할 수 있는 수식을 구현할 수 있나요? 예를 들어 매수면 익절내고 해당가격에 계속 매수진입하고, 다음 매도신호 때까지 반복하는 것입니다. 최대 수익대비 하락 기능이 좋은 것 같기는 한데, 과대계상되어 시스템 성능 보고서에 나타나기 때문에, 현재 운영중인 시스템 신뢰도에 문제가 있어 보입니다. 검토 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-01-25 10:11:55

안녕하세요 예스스탁입니다. 최대수익대비하락은 실시간에서는 봉의 움직임을 모두 추적하지만 시뮬레이션 상태에서는 해당 내용을 알지 못해 실전과 그대로 표시할 방법은 없습니다. 아래와 같은 내용으로 풀어서 작성하시면 변동없이 사용하실수 있습니다. 최근 완성된 봉 기준으로 최고수익을 파악하고 다음봉이 해당 최고가와 최저가 기준으로 일정수익 감소하면 즉시 청산합니다. input : P(14),BBP(20),dv(2),MAP(60); input : short(12),long(26),sig(9); var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0); var : MACDV(0),MACDS(0),Bcond(false),Scond(False),bbmd(0),diff(0),cnt(0),count(0); ADXV = ADX(P); DP = Diplus(P); DM = DiMinus(P); bbmd = ma(c,BBP); BBup = BollBandUp(BBP,dv); BBdn = BollBandDown(BBP,dv); mav = ma(C,MAP); MACDV = MACD(short,long); MACDS = ema(MACDV,sig); diff = C-O; Bcond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == -1 and BarsSinceEntry >= 4); Scond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == 1 and BarsSinceEntry >= 4); if MarketPosition == 0 Then{ if MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and H > BBup then { buy("bb",AtStop,C-PriceScale); } if MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and L < BBdn then { sell("ss",AtStop,C+PriceScale); } } if MarketPosition == 1 then{ sell("bs",AtStop,NextBarOpen-PriceScale*30); if IsEntryName("bb") == true and CrossDown(MACDv,MACDs) Then sell("sx1"); if IsEntryName("bb") == true and CrossDown(c,BBmd) Then sell("sx2"); #5%이상 수익이후에 최대수익폭의 30% 감소시 청산 if highest(H,BarsSinceEntry) >= EntryPrice*1.05 Then exitlong("bx",AtStop,highest(H,BarsSinceEntry)-(highest(H,BarsSinceEntry)-EntryPrice)*0.3); } if MarketPosition == -1 then{ Buy("sb",AtStop,NextBarOpen+PriceScale*30); if IsEntryName("ss") == true and CrossUp(MACDv,MACDs) Then buy("bx1"); if IsEntryName("ss") == true and CrossUp(c,bbmd) Then buy("bx2"); #5%이상 수익이후에 최대수익폭의 30% 감소시 청산 if Lowest(L,BarsSinceEntry) <= EntryPrice*0.95 Then ExitShort("sx",AtStop,Lowest(L,BarsSinceEntry)+(EntryPrice-Lowest(L,BarsSinceEntry))*0.3); } 즐거운 하루되세요 > softtoug 님이 쓴 글입니다. > 제목 : 수식 문의 > 안녕하세요 하기 검토 부탁드리며, 도움 부탁드립니다. input : P(14),BBP(20),dv(2),MAP(60); input : short(12),long(26),sig(9); var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0); var : MACDV(0),MACDS(0),Bcond(false),Scond(False),bbmd(0),diff(0),cnt(0),count(0); ADXV = ADX(P); DP = Diplus(P); DM = DiMinus(P); bbmd = ma(c,BBP); BBup = BollBandUp(BBP,dv); BBdn = BollBandDown(BBP,dv); mav = ma(C,MAP); MACDV = MACD(short,long); MACDS = ema(MACDV,sig); diff = C-O; Bcond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == -1 and BarsSinceEntry >= 4); Scond = TotalTrades == 0 or (MarketPosition == 0 and BarsSinceExit(1) >= 4) or (MarketPosition == 1 and BarsSinceEntry >= 4); if MarketPosition == 0 Then{ if MarketPosition(1) == 1 and IsExitName("StopTrailing",1) == true and H > BBup then { buy("bb",AtStop,C-PriceScale); } if MarketPosition(1) == -1 and IsExitName("StopTrailing",1) == true and L < BBdn then { sell("ss",AtStop,C+PriceScale); } } if MarketPosition == 1 then{ if IsEntryName("bb") == true and CrossDown(MACDv,MACDs) Then sell("sx1"); } if MarketPosition == -1 then{ if IsEntryName("ss") == true and CrossUp(MACDv,MACDs) Then buy("bx1"); } 1. 상기 수식에서 한가지 더 추가하고 싶습니다. bb or ss 상태에서 볼린져 밴드 중앙 이평선을 넘어서는 완성봉이 발생하면, bx1,sx1 으로 반대 매매 진입 부탁드립니다. 현재는 macd & macd signal 조건만 진행하고 있는데, 상기 방법으로 한가지 더 추가 하고 싶습니다. 2 한개의 봉이 시작하고 30틱을 넘으면 추격매매 들어가는 수식 부탁드립니다. 양봉이면 매수로, 음봉이면 매도로 31틱에서 진입부탁드립니다. 기존에 역포지션이 걸렸을 경우, 30틱에서 청산후 31틱에서 반대매매로 진입합니다. 예를들어, 매수 포지션중인데 음봉이 발생하여 30틱이 넘으면, 31틱에서 매수 청산 후 매도 진입하는 수식입니다. 무포일 경우에는 31틱에서 매도 진입하게 부탁드립니다. 3 최대 수익대비 하락 기능을 쓰고 있는데, 실제 청산값과 챠트 reset 후 청산가격이 다릅니다. 이것을 일치시키는 방법이 없을까요? 적게 청산되면 적게 청산되는 대로, 있는 그대로 챠트상이나 시스템 성능 보고서에 나타났으면 좋겠습니다. 혹시, 상기가 되지 않는다면 최대수익대비하락으로 익절을 내고 그 가격에 재진입할 수 있는 수식을 구현할 수 있나요? 예를 들어 매수면 익절내고 해당가격에 계속 매수진입하고, 다음 매도신호 때까지 반복하는 것입니다. 최대 수익대비 하락 기능이 좋은 것 같기는 한데, 과대계상되어 시스템 성능 보고서에 나타나기 때문에, 현재 운영중인 시스템 신뢰도에 문제가 있어 보입니다. 검토 부탁드립니다. 감사합니다.