커뮤니티

문의드립니다.

프로필 이미지
회원
2014-10-16 10:44:28
187
글번호 79454
답변완료
바쁘신데도 항상 친절하게 상담해 주셔서 감사드립니다. 오늘 전화로 상담을 해서 잘못된 부분을 수정하고 많은 도움이 되었습니다. 다시한번 감사 드립니다. 수정한 식으로 셋팅을 하였는데 한가지 안되는 부분이 있습니다. 식은 if MarketPosition == 1 Then{ if CodeCategoryEx == 11 and BasePrice < 50000 Then xvol = int(int((MaxContracts*1.0)/10)*10); Else Xvol = int(MaxContracts*1.0); If (IsEntryName("가") == True) then{ if sdate == EntryDate Then{ if BarsSinceEntry < 5 Then ExitLong("x9",AtStop,EntryPrice*0.95); if BarsSinceEntry >= 5 Then ExitLong("bx",AtStop,EntryPrice-PriceScale*5); If var4>var5 and var5 > var6 and var6 > var7 Then T = 1; If var7 > var6 and var6 > var5 Then T = -1; if T == 1 Then ExitLong("bP1",atlimit,EntryPrice*1.50); if T == -1 Then ExitLong("bP2",atlimit,EntryPrice*1.20); If var5>var4 Then ExitLong("bP3"); If C >= 목표가 Then ExitLong("x2"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+1 Then{ ExitLong("x10",AtStop,EntryPrice*0.90); If C < var4 Then ExitLong("x11"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+2 Then{ ExitLong("bx1",atlimit,EntryPrice*4.0); If CrossDown(Var5,Var6) Then ExitLong("x18"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+3 Then{ ExitLong("bx2",atlimit,EntryPrice*6.0); If CrossDown(Var3,Var4) Then ExitLong("x19"); If C < Var4 Then ExitLong("x20"); } } Else If (IsEntryName("가1") == True or IsEntryName("가2") == True) then{ if sdate == EntryDate Then{ if BarsSinceEntry < 5 Then ExitLong("s",AtStop,EntryPrice*0.95); if BarsSinceEntry >= 5 and BarsSinceEntry < 10 Then ExitLong("s1",AtStop,EntryPrice-PriceScale*5); if BarsSinceEntry > 10 Then ExitLong("s2",AtStop,EntryPrice+PriceScale*2); If var4>var5 and var5 > var6 and var6 > var7 Then T = 1; If var7 > var6 and var6 > var5 Then T = -1; if T == 1 Then ExitLong("s3",atlimit,EntryPrice*1.50); if T == -1 Then ExitLong("s4",atlimit,EntryPrice*1.20); If C> DayClose(1)*1.30 Then ExitLong("s7",atlimit,EntryPrice*1.20); if stime == 150000 Then ExitLong("s6"); } } } Else T = 0; 입니다. 매수 당일 청산이 조건이 맞지않아 다음날로 넘어간 상태인데 다음날 청산은 bP1 으로 청산이 되었습니다. 식으로 보면 매수후 2일째니까 2일째 되는날 조건에 청산 되어야 할거 같은데 어느 부분이 문제인가요? 진입명 가1 ,가2은 당일 조건이 만족한 상태를 확인해보니 s7 로 청산 되어야 하는데 청산이 안되었는데 이유를 모르겠습니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-10-16 14:40:53

안녕하세요 예스스탁입니다. 1. 현재 수식에서 당일청산은 "가1"이나 "가2"로 진입되었을 때만 발생합니다. 청산이 bP1로 다음날 발생되었다면 진입이 "가"로 발생된 상황으로 15시 청산식이 발동될수 없습니다. BP1이 다음말 발생이 되었다면 다음날 첫봉에 발생이 되어 있을 것입니다. atstop이나 atlimi은 셋팅이 되면 다음봉을 감시하므로 진입한 날의 마지막봉에서 세팅이 되면 다음날 첫봉에 신호가 발생할수 있습니다. 청산식이 마지막봉에 if조건이 만족하지 못하도록 stiem < 150000 과 같이 시간으로 제어조건을 추구해 주셔야 합니다. 마지막봉 시간을 사용하시는 주기마다 다르므로 plot1(stime); 위 지표식적용하셔서 사용하시는 주기에서 마지막봉 시간 확인하시고 수식에서 지정해 주셔야 합니다. 아래식에는 15시 이전봉에서만 셋팅이 되게 stime < 150000을 조건으로 추가했습니다. 2. If C> DayClose(1)*1.30 Then ExitLong("s7",atlimit,EntryPrice*1.20); S7은 봉의 종가가 전일 종가대비 30%이상 높고 다음봉의 시세가 진입가 대비 20%이상 높은 시세가 발생해야 청산신호가 발생합니다. 진입한 당일이고 신호가 발생하지 않으면 위 조건 2개중 하나가 맞지 않는 상황입니다. 3. input : 목표가(1); var : xvol(0),T(0),daycnt(0); if MarketPosition == 1 Then{ if CodeCategoryEx == 11 and BasePrice < 50000 Then xvol = int(int((MaxContracts*1.0)/10)*10); Else Xvol = int(MaxContracts*1.0); If (IsEntryName("가") == True) then{ if sdate == EntryDate and stime < 150000 Then{ if BarsSinceEntry < 5 Then ExitLong("x9",AtStop,EntryPrice*0.95); if BarsSinceEntry >= 5 Then ExitLong("bx",AtStop,EntryPrice-PriceScale*5); If var4>var5 and var5 > var6 and var6 > var7 Then T = 1; If var7 > var6 and var6 > var5 Then T = -1; if T == 1 Then ExitLong("bP1",atlimit,EntryPrice*1.50); if T == -1 Then ExitLong("bP2",atlimit,EntryPrice*1.20); If var5>var4 Then ExitLong("bP3"); If C >= 목표가 Then ExitLong("x2"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+1 and stime < 150000 Then{ ExitLong("x10",AtStop,EntryPrice*0.90); If C < var4 Then ExitLong("x11"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+2 and stime < 150000 Then{ ExitLong("bx1",atlimit,EntryPrice*4.0); If CrossDown(Var5,Var6) Then ExitLong("x18"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+3 and stime < 150000 Then{ ExitLong("bx2",atlimit,EntryPrice*6.0); If CrossDown(Var3,Var4) Then ExitLong("x19"); If C < Var4 Then ExitLong("x20"); } } Else If (IsEntryName("가1") == True or IsEntryName("가2") == True) then{ if sdate == EntryDate and stime < 150000 Then{ if BarsSinceEntry < 5 Then ExitLong("s",AtStop,EntryPrice*0.95); if BarsSinceEntry >= 5 and BarsSinceEntry < 10 Then ExitLong("s1",AtStop,EntryPrice-PriceScale*5); if BarsSinceEntry > 10 Then ExitLong("s2",AtStop,EntryPrice+PriceScale*2); If var4>var5 and var5 > var6 and var6 > var7 Then T = 1; If var7 > var6 and var6 > var5 Then T = -1; if T == 1 Then ExitLong("s3",atlimit,EntryPrice*1.50); if T == -1 Then ExitLong("s4",atlimit,EntryPrice*1.20); If C> DayClose(1)*1.30 Then ExitLong("s7",atlimit,EntryPrice*1.20); if stime == 150000 Then ExitLong("s6"); } } } Else T = 0; 즐거운 하루되세요 > HI_hk****** 님이 쓴 글입니다. > 제목 : 문의드립니다. > 바쁘신데도 항상 친절하게 상담해 주셔서 감사드립니다. 오늘 전화로 상담을 해서 잘못된 부분을 수정하고 많은 도움이 되었습니다. 다시한번 감사 드립니다. 수정한 식으로 셋팅을 하였는데 한가지 안되는 부분이 있습니다. 식은 if MarketPosition == 1 Then{ if CodeCategoryEx == 11 and BasePrice < 50000 Then xvol = int(int((MaxContracts*1.0)/10)*10); Else Xvol = int(MaxContracts*1.0); If (IsEntryName("가") == True) then{ if sdate == EntryDate Then{ if BarsSinceEntry < 5 Then ExitLong("x9",AtStop,EntryPrice*0.95); if BarsSinceEntry >= 5 Then ExitLong("bx",AtStop,EntryPrice-PriceScale*5); If var4>var5 and var5 > var6 and var6 > var7 Then T = 1; If var7 > var6 and var6 > var5 Then T = -1; if T == 1 Then ExitLong("bP1",atlimit,EntryPrice*1.50); if T == -1 Then ExitLong("bP2",atlimit,EntryPrice*1.20); If var5>var4 Then ExitLong("bP3"); If C >= 목표가 Then ExitLong("x2"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+1 Then{ ExitLong("x10",AtStop,EntryPrice*0.90); If C < var4 Then ExitLong("x11"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+2 Then{ ExitLong("bx1",atlimit,EntryPrice*4.0); If CrossDown(Var5,Var6) Then ExitLong("x18"); } if CurrentContracts == MaxContracts and daycnt == daycnt[BarsSinceEntry]+3 Then{ ExitLong("bx2",atlimit,EntryPrice*6.0); If CrossDown(Var3,Var4) Then ExitLong("x19"); If C < Var4 Then ExitLong("x20"); } } Else If (IsEntryName("가1") == True or IsEntryName("가2") == True) then{ if sdate == EntryDate Then{ if BarsSinceEntry < 5 Then ExitLong("s",AtStop,EntryPrice*0.95); if BarsSinceEntry >= 5 and BarsSinceEntry < 10 Then ExitLong("s1",AtStop,EntryPrice-PriceScale*5); if BarsSinceEntry > 10 Then ExitLong("s2",AtStop,EntryPrice+PriceScale*2); If var4>var5 and var5 > var6 and var6 > var7 Then T = 1; If var7 > var6 and var6 > var5 Then T = -1; if T == 1 Then ExitLong("s3",atlimit,EntryPrice*1.50); if T == -1 Then ExitLong("s4",atlimit,EntryPrice*1.20); If C> DayClose(1)*1.30 Then ExitLong("s7",atlimit,EntryPrice*1.20); if stime == 150000 Then ExitLong("s6"); } } } Else T = 0; 입니다. 매수 당일 청산이 조건이 맞지않아 다음날로 넘어간 상태인데 다음날 청산은 bP1 으로 청산이 되었습니다. 식으로 보면 매수후 2일째니까 2일째 되는날 조건에 청산 되어야 할거 같은데 어느 부분이 문제인가요? 진입명 가1 ,가2은 당일 조건이 만족한 상태를 확인해보니 s7 로 청산 되어야 하는데 청산이 안되었는데 이유를 모르겠습니다. 감사합니다.