커뮤니티

시스템 재문의

프로필 이미지
회원
2014-05-07 12:04:34
204
글번호 74866
답변완료

첨부 이미지

아래 시스템 문의 답주신걸 적용해보니, 문의 내용과 많이 상이한 부분이 있어 다시 재질문 드립니다. 그림 을 첨부했고요.. 제가 254를 변수로 넣어보았습니다. 그러니, 254딱 하나에서만 신호가 발생을 하는군요 제가 원하는건 그림에서처럼 마디 라인이 있는곳마다 진입청산이 지속적으로 발생을 하는 시스템이었습니다. 올려드린 그림에서처럼, 만일 254를 당일 변수로 적용을 하면, 그림처럼 라인들이 설정이 되고, 첫봉에서는 256을 터치를 못했기에 신호가 없으나, 두번째 라인에서는 장음봉으로 붕괴, 봉 마감가격이 255아래이니 매도로 진입이되고 라인에 터치시 청산, 이후 다음봉이 다시 라인아래 마감가격이니 매도가 되고, 내려오다가.. 253.00라인에서는 청산후 매도진입, 이후 매수진입손절 다시 매도진입해서 현재 매도가 유지가 되어야 합니다.. 죄송하지만 수식을 다시 한번 확인해 주시고 수정을 부탁드립니다. 감사드려요..
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-05-08 14:42:34

안녕하세요 예스스탁입니다. 기존식은 라인을 터치시 동일방향으로는 청산이 없고 반대로 가면 청산을 하게 되어 말씀하신 부분과 같이 한번 진입후 반대 방향라인으로 가지 않으면 청산이 되지 않습니다. 아래는 수정한 식입니다. 종가상 진입후 종가 위아래 라인을 터치할때 청산이 발생하고 청산후 종가의 위치에 따라 매도나 매수로 다시 진입하게 했습니다. 아래 식 적용해 보시면 진입과 청산이 첨부하신 그림에서와 비슷한 봉들에서 신호가 발생하는데 각 라인 터치시 청산때문에 신호가 좀더 많이 발생합니다. 이용에 참고하시기 바랍니다. 수정하실 부분있으시면 내일 1시이후에 02-3453-1060으로 전화주시기 바랍니다. input : Price(254.00),pt(1); var : cnt(0),Bcond(false),Scond(false),BPfit(0),Bloss(0),EP(0),Sloss(0),count(0); Array : PP[12](0); count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } PP[11] = Price+Pt*5; PP[10] = Price+Pt*4; PP[9] = Price+Pt*3; PP[8] = Price+Pt*2; PP[7] = Price+Pt*1; PP[6] = Price; PP[5] = Price-Pt*1; PP[4] = Price-Pt*2; PP[3] = Price-Pt*3; PP[2] = Price-Pt*4; PP[1] = Price-Pt*5; if count == 0 and MarketPosition == 0 Then{ Bcond = false; for cnt = 1 to 11{ if Bcond == false and ((dayindex > 0 and C > PP[cnt] and C[1] <= PP[cnt]) Or (H >= PP[cnt] and PP[cnt] >= L and C > PP[cnt])) Then{ Bcond = True; EP = PP[cnt]; } } Scond = false; for cnt = 11 DownTo 1{ if Scond == false and ((dayindex > 0 and C < PP[cnt] and C[1] >= PP[cnt]) Or (H >= PP[cnt] and PP[cnt] >= L and C < PP[cnt])) Then{ Scond = True; EP = PP[cnt]; } } if Bcond == true Then buy("B"); if Scond == true Then sell("S"); } if count > 0 and MarketPosition == 0 Then{ if MarketPosition == 0 and (IsExitName("BL",1) == true or IsExitName("SL",1) == true) Then{ if C > EP Then{ buy("B1"); EP = EP; } if C < EP Then{ sell("S1"); EP = EP; } } if MarketPosition == 0 and IsExitName("BP",1) == true Then{ if C > EP+1 Then{ buy("B3"); EP = EP+pt; } if C < EP+1 Then{ sell("S3"); EP = EP+pt; } } if MarketPosition == 0 and IsExitName("SP",1) == true Then{ if C > EP-1 Then{ buy("B4"); EP = EP-pt; } if C < EP-1 Then{ sell("S4"); EP = EP-pt; } } } ExitLong("BL",AtStop,EP); ExitLong("BP",AtLimit,EP+pt); ExitShort("SL",AtStop,EP); ExitShort("SP",AtLimit,EP-pt); 즐거운 하루되세요 > WT_al***** 님이 쓴 글입니다. > 제목 : 시스템 재문의 > 아래 시스템 문의 답주신걸 적용해보니, 문의 내용과 많이 상이한 부분이 있어 다시 재질문 드립니다. 그림 을 첨부했고요.. 제가 254를 변수로 넣어보았습니다. 그러니, 254딱 하나에서만 신호가 발생을 하는군요 제가 원하는건 그림에서처럼 마디 라인이 있는곳마다 진입청산이 지속적으로 발생을 하는 시스템이었습니다. 올려드린 그림에서처럼, 만일 254를 당일 변수로 적용을 하면, 그림처럼 라인들이 설정이 되고, 첫봉에서는 256을 터치를 못했기에 신호가 없으나, 두번째 라인에서는 장음봉으로 붕괴, 봉 마감가격이 255아래이니 매도로 진입이되고 라인에 터치시 청산, 이후 다음봉이 다시 라인아래 마감가격이니 매도가 되고, 내려오다가.. 253.00라인에서는 청산후 매도진입, 이후 매수진입손절 다시 매도진입해서 현재 매도가 유지가 되어야 합니다.. 죄송하지만 수식을 다시 한번 확인해 주시고 수정을 부탁드립니다. 감사드려요.. input : Price(254.00),pt(1); var : cnt(0),Bcond(false),Scond(false),BPfit(0),Bloss(0),EP(0),Sloss(0),count(0); Array : PP[12](0); count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } PP[11] = Price+Pt*5; PP[10] = Price+Pt*4; PP[9] = Price+Pt*3; PP[8] = Price+Pt*2; PP[7] = Price+Pt*1; PP[6] = Price; PP[5] = Price-Pt*1; PP[4] = Price-Pt*2; PP[3] = Price-Pt*3; PP[2] = Price-Pt*4; PP[1] = Price-Pt*5; if count == 0 and MarketPosition == 0 Then{ Bcond = false; for cnt = 1 to 11{ if Bcond == false and ((dayindex > 0 and C > PP[cnt] and C[1] <= PP[cnt]) Or (H >= PP[cnt] and PP[cnt] >= L and C > PP[cnt])) Then{ Bcond = True; EP = PP[cnt]; } } Scond = false; for cnt = 11 DownTo 1{ if Scond == false and ((dayindex > 0 and C < PP[cnt] and C[1] >= PP[cnt]) Or (H >= PP[cnt] and PP[cnt] >= L and C < PP[cnt])) Then{ Scond = True; EP = PP[cnt]; } } if Bcond == true Then buy("B"); if Scond == true Then sell("S"); } if count > 0 and MarketPosition == 0 Then{ /* if MarketPosition == 0 and (IsExitName("BL",1) == true or IsExitName("SL",1) == true) Then{ if C > EP Then{ buy("B1"); EP = EP; } if C < EP Then{ sell("S1"); EP = EP; } }*/ if MarketPosition == 0 and IsExitName("BP",1) == true Then{ if C > EP+1 Then{ buy("B3"); EP = EP+pt; } if C < EP+1 Then{ sell("S3"); EP = EP+pt; } } if MarketPosition == 0 and IsExitName("SP",1) == true Then{ if C > EP-1 Then{ buy("B4"); EP = EP-pt; } if C < EP-1 Then{ sell("S4"); EP = EP-pt; } } } if MarketPosition == 1 and C < EP Then Sell("BS"); if MarketPosition == -1 and C > EP Then Buy("SB"); ExitLong("BP",AtLimit,EP+pt); ExitShort("SP",AtLimit,EP-pt);