커뮤니티

시스템식 문의 드립니다.

프로필 이미지
맴맴잉
2021-09-25 01:23:56
1753
글번호 152454
답변완료
안녕하세요 항상 감사드립니다. 지난주에 요청드렸던 부분에서 필요한 조건들을 추가하고자 하는데 수식작성에 어려움이 있어 요청을 드립니다. 아래에 해당되는 식은 타점1~5을 적어놓으면 조건에 해당되는 타점에서 매수하고 상승시 1프로, 2프로 분할익절 하락시 2차매수 후 분할익절, 손절청산 되는 수식인데, 여기서 추가하고자 하는 조건은 전부다 동일한 조건으로 진행되는데, 1차매수 2프로 익절 했을 경우에만, 다음타점으로 매수진행되도록 조건을 추가하고 싶습니다. 예를들어 5000원에 매수해서 2프로 익절까지 했을경우, 다음 4500원이 매수타점으로 되어 진행되도록 조건을 추가하고자 합니다. 아래는 기존식이고, 기존식 밑에 제가 수식을 이리저리 수정한 식인데, 아무리 해도 제가 생각하는 타점과 거리가 멀게 진행됩니다. 그래도 이리저리 생각해서 만든식이니 혹시나 작성하시는데 조그만한 도움이 될까 기존식 밑에다가 첨부하여 같이 올려봅니다. 그럼 잘 부탁드리겠습니다. 기존식. ---------------------------------------- input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(False),HH(0); if Bdate != Bdate[1] Then { entry = True; #5개의 타점중 시가보다 작은것 중에 젤 큰값 계산 HH = 0; if 타점1 < DayOpen*0.99 and 타점1 < DayClose(1) and 타점1 > HH Then HH = 타점1; if 타점2 < DayOpen*0.99 and 타점2 < DayClose(1) and 타점2 > HH Then HH = 타점2; if 타점3 < DayOpen*0.99 and 타점3 < DayClose(1) and 타점3 > HH Then HH = 타점3; if 타점4 < DayOpen*0.99 and 타점4 < DayClose(1) and 타점4 > HH Then HH = 타점4; if 타점5 < DayOpen*0.99 and 타점5 < DayClose(1) and 타점5 > HH Then HH = 타점5; } if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and sTime < 133000 and entry == true Then { Buy("1차매수",AtLimit,HH,Floor(투자금액1/min(NextBarOpen,HH))); } if MarketPosition == 1 Then { Buy("2차매수.",AtLimit,HH*0.974,Floor(투자금액2/min(NextBarOpen,HH*0.974))); } if MarketPosition == 1 Then { if MaxEntries == 1 Then { ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4)); ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02); } if MaxEntries == 2 Then { ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005); } ExitLong("손절",AtStop,HH*0.96); } SetStopEndofday(151800); ------------------------------------------------------------------- 제가 수정한 식 ---------------------------------------------------------------------- input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(False), HH(0),hi(0); Array : VV[6](0); vv[1] = 타점1; vv[2] = 타점2; vv[3] = 타점3; vv[4] = 타점4; vv[5] = 타점5; if Bdate != Bdate[1] Then { HH = 0; hi = 0; if vv[1] < DayOpen*0.99 and vv[1] > HH and vv[1] < DayClose(1) Then { HH = vv[1]; hi = 1; } if vv[2] < DayOpen*0.99 and vv[2] > HH and vv[2] < DayClose(1) Then { HH = vv[2]; hi = 2; } if vv[3] < DayOpen*0.99 and vv[3] > HH and vv[3] < DayClose(1) Then { HH = vv[3]; hi = 3; } if vv[4] < DayOpen*0.99 and vv[4] > HH and vv[4] < DayClose(1) Then { HH = vv[4]; hi = 4; } if vv[5] < DayOpen*0.99 and vv[5] > HH and vv[5] < DayClose(1) Then { HH = vv[5]; hi = 5; } } if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and sTime < 133000 and entry == true Then { Buy("1차매수",AtLimit,VV[hi],Floor(투자금액1/min(NextBarOpen,VV[hi]))); } if MarketPosition == 1 Then { Buy("2차매수.",AtLimit,VV[hi]*0.974,Floor(투자금액2/min(NextBarOpen,VV[hi]*0.974))); if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "1차매수 2프로익절" Then hi = hi-1; } if MarketPosition == 1 Then { if MaxEntries == 1 Then { ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4)); ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02); } if MaxEntries == 2 Then { ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005); } ExitLong("손절",AtStop,HH*0.96); } SetStopEndofday(151800); ----------------------------------------------------------------------------------------------------------------
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-09-27 09:08:06

안녕하세요 예스스탁입니다. input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(0),HH(0); if Bdate != Bdate[1] Then { entry = 0; #5개의 타점중 시가보다 작은것 중에 젤 큰값 계산 HH = 0; if 타점1 < DayOpen*0.99 and 타점1 < DayClose(1) and 타점1 > HH Then HH = 타점1; if 타점2 < DayOpen*0.99 and 타점2 < DayClose(1) and 타점2 > HH Then HH = 타점2; if 타점3 < DayOpen*0.99 and 타점3 < DayClose(1) and 타점3 > HH Then HH = 타점3; if 타점4 < DayOpen*0.99 and 타점4 < DayClose(1) and 타점4 > HH Then HH = 타점4; if 타점5 < DayOpen*0.99 and 타점5 < DayClose(1) and 타점5 > HH Then HH = 타점5; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) and (MarketPosition != MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if MarketPosition == 0 and sTime < 133000 and entry == 0 Then { Buy("1차매수",AtLimit,HH,Floor(투자금액1/min(NextBarOpen,HH))); } if MarketPosition == 1 and entry == 1 Then { Buy("2차매수",AtLimit,HH*0.974,Floor(투자금액2/min(NextBarOpen,HH*0.974))); } if MarketPosition == 0 and sTime < 133000 and entry == 1 and IsexitName("1차매수 2프로익절",1) == true Then { Buy("2차매수A",AtLimit,HH*0.974,Floor(투자금액2/min(NextBarOpen,HH*0.974))); } if MarketPosition == 1 Then { if MaxEntries == 1 and IsEntryName("1차매수",0) == true Then { ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4)); ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02); } if MaxEntries == 2 and IsEntryName("1차매수",0) == true Then { ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005); } if MaxEntries == 1 and IsEntryName("2차매수A",0) == true Then { ExitLong("2차매수A 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수A 0.5익절",AtLimit,avgEntryPrice*1.005); } ExitLong("손절",AtStop,HH*0.96); } 즐거운 하루되세요 > 맴맴잉 님이 쓴 글입니다. > 제목 : 시스템식 문의 드립니다. > 안녕하세요 항상 감사드립니다. 지난주에 요청드렸던 부분에서 필요한 조건들을 추가하고자 하는데 수식작성에 어려움이 있어 요청을 드립니다. 아래에 해당되는 식은 타점1~5을 적어놓으면 조건에 해당되는 타점에서 매수하고 상승시 1프로, 2프로 분할익절 하락시 2차매수 후 분할익절, 손절청산 되는 수식인데, 여기서 추가하고자 하는 조건은 전부다 동일한 조건으로 진행되는데, 1차매수 2프로 익절 했을 경우에만, 다음타점으로 매수진행되도록 조건을 추가하고 싶습니다. 예를들어 5000원에 매수해서 2프로 익절까지 했을경우, 다음 4500원이 매수타점으로 되어 진행되도록 조건을 추가하고자 합니다. 아래는 기존식이고, 기존식 밑에 제가 수식을 이리저리 수정한 식인데, 아무리 해도 제가 생각하는 타점과 거리가 멀게 진행됩니다. 그래도 이리저리 생각해서 만든식이니 혹시나 작성하시는데 조그만한 도움이 될까 기존식 밑에다가 첨부하여 같이 올려봅니다. 그럼 잘 부탁드리겠습니다. 기존식. ---------------------------------------- input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(False),HH(0); if Bdate != Bdate[1] Then { entry = True; #5개의 타점중 시가보다 작은것 중에 젤 큰값 계산 HH = 0; if 타점1 < DayOpen*0.99 and 타점1 < DayClose(1) and 타점1 > HH Then HH = 타점1; if 타점2 < DayOpen*0.99 and 타점2 < DayClose(1) and 타점2 > HH Then HH = 타점2; if 타점3 < DayOpen*0.99 and 타점3 < DayClose(1) and 타점3 > HH Then HH = 타점3; if 타점4 < DayOpen*0.99 and 타점4 < DayClose(1) and 타점4 > HH Then HH = 타점4; if 타점5 < DayOpen*0.99 and 타점5 < DayClose(1) and 타점5 > HH Then HH = 타점5; } if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and sTime < 133000 and entry == true Then { Buy("1차매수",AtLimit,HH,Floor(투자금액1/min(NextBarOpen,HH))); } if MarketPosition == 1 Then { Buy("2차매수.",AtLimit,HH*0.974,Floor(투자금액2/min(NextBarOpen,HH*0.974))); } if MarketPosition == 1 Then { if MaxEntries == 1 Then { ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4)); ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02); } if MaxEntries == 2 Then { ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005); } ExitLong("손절",AtStop,HH*0.96); } SetStopEndofday(151800); ------------------------------------------------------------------- 제가 수정한 식 ---------------------------------------------------------------------- input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(False), HH(0),hi(0); Array : VV[6](0); vv[1] = 타점1; vv[2] = 타점2; vv[3] = 타점3; vv[4] = 타점4; vv[5] = 타점5; if Bdate != Bdate[1] Then { HH = 0; hi = 0; if vv[1] < DayOpen*0.99 and vv[1] > HH and vv[1] < DayClose(1) Then { HH = vv[1]; hi = 1; } if vv[2] < DayOpen*0.99 and vv[2] > HH and vv[2] < DayClose(1) Then { HH = vv[2]; hi = 2; } if vv[3] < DayOpen*0.99 and vv[3] > HH and vv[3] < DayClose(1) Then { HH = vv[3]; hi = 3; } if vv[4] < DayOpen*0.99 and vv[4] > HH and vv[4] < DayClose(1) Then { HH = vv[4]; hi = 4; } if vv[5] < DayOpen*0.99 and vv[5] > HH and vv[5] < DayClose(1) Then { HH = vv[5]; hi = 5; } } if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and sTime < 133000 and entry == true Then { Buy("1차매수",AtLimit,VV[hi],Floor(투자금액1/min(NextBarOpen,VV[hi]))); } if MarketPosition == 1 Then { Buy("2차매수.",AtLimit,VV[hi]*0.974,Floor(투자금액2/min(NextBarOpen,VV[hi]*0.974))); if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "1차매수 2프로익절" Then hi = hi-1; } if MarketPosition == 1 Then { if MaxEntries == 1 Then { ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4)); ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02); } if MaxEntries == 2 Then { ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005); } ExitLong("손절",AtStop,HH*0.96); } SetStopEndofday(151800); ----------------------------------------------------------------------------------------------------------------