커뮤니티

재문의

프로필 이미지
쿠루드
2016-07-25 08:57:26
160
글번호 100331
답변완료
48793번 문의글에 재문의 드렸습니다 잘 부탁합니다
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2016-07-25 17:32:09

안녕하세요 예스스탁입니다. 1 PriceScale이 차트의 종목의 1틱을 리턴합니다,. 말씀하신 부분과 같이 S&P는 0.25 , 크로드오일은 0.01을 자동으로 리턴합니다. 작성된 수식에서는 틱수로 처리되게 작성되어 있으므로 10틱이면 10, 20틱이면 20으로 외부변수에서 지정해 주시면 됩니다. 2 익절청산의 타입이 반대로 되어 있어 수정했습니다. 진입부분은 어떻게 수정을 해드려야 할지 모르겠습니다. 진입시 마다 최근 2개의 크로스가 수익폭에 도달한적이 있는지 체크해서 없을때만 진입하게 작성된 식입니다. 해당 부분은 사용자분께서 내용 인지하셔서 수정보완을 해주셔야 할것 같습니다. 수정이 원활하지 않으시면 내일 편하신 시간에 02-3453-1060으로 전화주시기 바랍니다. input : L1(15),P1(15),L2(20),P2(20),N(5); Var : vol(0),T(0),EE(0),cnt(0); Array : cond[5](false); var1 = ma(c,5); var2 = ma(c,20); if MarketPosition != 0 Then{ if PositionProfit < 0 Then Vol = MaxContracts*2; Else vol = 1; } if MarketPosition == 0 Then{ if PositionProfit(1) < 0 Then Vol = MaxContracts(1)*2; Else vol = 1; } #상향돌파 if crossup(var1,var2) Then{ T = 1; EE = C; cond[0] = false; for cnt = 1 to 4{ cond[cnt] = cond[cnt-1][1]; } } #하향이탈 if CrossDown(var1,var2) Then{ T = -1; EE = C; cond[0] = false; for cnt = 1 to 4{ cond[cnt] = cond[cnt-1][1]; } } #상향돌파후 P1혹은 P2틱이상 상승했으면 cond[0]은 true로 변경 if T == 1 Then{ if stime >= 80000 and stime < 153000 Then{ if H >= EE+PriceScale*P1 Then cond[0] = true; } Else{ if H >= EE+PriceScale*P2 Then cond[0] = true; } } #하향이탈후 P1혹은 P2틱이상 하락했으면 cond[0]은 true로 변경 if T == -1 Then{ if stime >= 80000 and stime < 153000 Then{ if L <= EE-PriceScale*P1 Then cond[0] = true; } Else{ if L <= EE-PriceScale*P2 Then cond[0] = true; } } if MarketPosition <= 0 and crossup(var1,var2) and cond[1] == false and cond[2] == false Then buy("b1"); if MarketPosition == 1 Then{ if stime >= 80000 and stime < 153000 Then{ exitlong("BL1",AtStop,EntryPrice-PriceScale*L1); exitlong("BP1",AtLimit,EntryPrice+PriceScale*P1); } Else{ exitlong("BL2",AtStop,EntryPrice-PriceScale*L2); exitlong("BP2",AtLimit,EntryPrice+PriceScale*P2); } } if MarketPosition >= 0 and CrossDown(var1,var2) and cond[1] == false and cond[2] == false Then sell("s1"); if MarketPosition == -1 Then{ if stime >= 80000 and stime < 153000 Then{ ExitShort("SL1",AtStop,EntryPrice+PriceScale*L1); ExitShort("SP1",AtLimit,EntryPrice-PriceScale*P1); } Else{ ExitShort("SL2",AtStop,EntryPrice+PriceScale*L2); ExitShort("SP2",AtLimit,EntryPrice-PriceScale*P2); } } 즐거운 하루되세요 > 쿠루드 님이 쓴 글입니다. > 제목 : 재문의 > 48793번 문의글에 재문의 드렸습니다 잘 부탁합니다
프로필 이미지

쿠루드

2016-07-25 17:49:22

안녕하세요 수식의 결과가 말씀하신것과 전혀 다르게 나옵니다 첫 진입은 두번의 크로스가 목표틱이 안나오면 되는것이구요 +1계약씩은 직전 진입이 목표틱을 못채우면 무조건 +1계약씩 최대 n계약이 되는것입니다 그리고 n계약이든 1계약이든 목표틱 청산이 이루어지면 다시 두번의 크로스동안 목표틱이 안일어나면 세번째 크로스가 첫진입이 되는것이구요 죄송합니다 너무 복잡해서.. 다시 부탁드리겠습니다^^ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 재문의 > 안녕하세요 예스스탁입니다. 1 PriceScale이 차트의 종목의 1틱을 리턴합니다,. 말씀하신 부분과 같이 S&P는 0.25 , 크로드오일은 0.01을 자동으로 리턴합니다. 작성된 수식에서는 틱수로 처리되게 작성되어 있으므로 10틱이면 10, 20틱이면 20으로 외부변수에서 지정해 주시면 됩니다. 2 익절청산의 타입이 반대로 되어 있어 수정했습니다. 진입부분은 어떻게 수정을 해드려야 할지 모르겠습니다. 진입시 마다 최근 2개의 크로스가 수익폭에 도달한적이 있는지 체크해서 없을때만 진입하게 작성된 식입니다. 해당 부분은 사용자분께서 내용 인지하셔서 수정보완을 해주셔야 할것 같습니다. 수정이 원활하지 않으시면 내일 편하신 시간에 02-3453-1060으로 전화주시기 바랍니다. input : L1(15),P1(15),L2(20),P2(20),N(5); Var : vol(0),T(0),EE(0),cnt(0); Array : cond[5](false); var1 = ma(c,5); var2 = ma(c,20); if MarketPosition != 0 Then{ if PositionProfit < 0 Then Vol = MaxContracts*2; Else vol = 1; } if MarketPosition == 0 Then{ if PositionProfit(1) < 0 Then Vol = MaxContracts(1)*2; Else vol = 1; } #상향돌파 if crossup(var1,var2) Then{ T = 1; EE = C; cond[0] = false; for cnt = 1 to 4{ cond[cnt] = cond[cnt-1][1]; } } #하향이탈 if CrossDown(var1,var2) Then{ T = -1; EE = C; cond[0] = false; for cnt = 1 to 4{ cond[cnt] = cond[cnt-1][1]; } } #상향돌파후 P1혹은 P2틱이상 상승했으면 cond[0]은 true로 변경 if T == 1 Then{ if stime >= 80000 and stime < 153000 Then{ if H >= EE+PriceScale*P1 Then cond[0] = true; } Else{ if H >= EE+PriceScale*P2 Then cond[0] = true; } } #하향이탈후 P1혹은 P2틱이상 하락했으면 cond[0]은 true로 변경 if T == -1 Then{ if stime >= 80000 and stime < 153000 Then{ if L <= EE-PriceScale*P1 Then cond[0] = true; } Else{ if L <= EE-PriceScale*P2 Then cond[0] = true; } } if MarketPosition <= 0 and crossup(var1,var2) and cond[1] == false and cond[2] == false Then buy("b1"); if MarketPosition == 1 Then{ if stime >= 80000 and stime < 153000 Then{ exitlong("BL1",AtStop,EntryPrice-PriceScale*L1); exitlong("BP1",AtLimit,EntryPrice+PriceScale*P1); } Else{ exitlong("BL2",AtStop,EntryPrice-PriceScale*L2); exitlong("BP2",AtLimit,EntryPrice+PriceScale*P2); } } if MarketPosition >= 0 and CrossDown(var1,var2) and cond[1] == false and cond[2] == false Then sell("s1"); if MarketPosition == -1 Then{ if stime >= 80000 and stime < 153000 Then{ ExitShort("SL1",AtStop,EntryPrice+PriceScale*L1); ExitShort("SP1",AtLimit,EntryPrice-PriceScale*P1); } Else{ ExitShort("SL2",AtStop,EntryPrice+PriceScale*L2); ExitShort("SP2",AtLimit,EntryPrice-PriceScale*P2); } } 즐거운 하루되세요 > 쿠루드 님이 쓴 글입니다. > 제목 : 재문의 > 48793번 문의글에 재문의 드렸습니다 잘 부탁합니다