커뮤니티

부탁 또 합니다 ...

프로필 이미지
CSI300
2015-01-05 20:06:31
164
글번호 81913
답변완료
기존 데이시스템로직을 주간시스템,야간시스템으로 변경해서 주간장 야간장따로 거래할려고 변경작업을하는데 신호가계속 이상하게 나옵니다.. 답변도 상세하게 해줘서 넘 감사한데 제가 초보라 이해를 잘 못하는거 같네요 .. 미안해도 어쩔수없이 또 도움을청해야겟어요.. 기존시스템은 시초가+전일변동폭/3을 종가로돌파하면 진입하는식이면 주간장시스템은 변동폭만 복합장(직전야간장+직전주간장)/3변동폭으로 기타 청산 반대진입은 그대로 사용하고.. 야간장시스템은 변동폭을 복합장(직전주간장+직전야간장)변동폭으로 하고 청산,반대진입등은 주간장 시스템로직을변경해서사용하고 싶습니다 주간장9시-15시,야간장2100시작하여 2330,0230,0100 끝나는시간이 3가지유형입니다 저희가 중국상품선물 전종목 시스템포트로 거래하는데 변경할려니 참 어려움이 많네요 .. 기존 데이시스템 첨부합니다 .. 예시용으로 주간,야간장시스템으로 나눠서 작성해주시고 주석부탁합니다 ..기존데이시스템과 비교해서 시고저종 [1],FOR 부분 헷갈립니다 한번 찾아가서 인사드려야 할듯합니다 .. 일봉상 주간장9시시초가 -15시종가로 한개봉이그려지고 ,2100시초가담날1500종가로한개봉이그려집니다..야간장거래없는날은 주간장+주간장으로 그려집니다 전일변동폭돌파시스템 과 가장근접할려면 제가생각하고잇는복합장변동폭을 이용해야하나요 아니면 주간장시스템은 직전야간장변동폭,야간장시스템은 직전주간장변동폭을사용해야하나요 .. 39728답변에서 //if HH[1] > 0 and LL[1] > 0 Then{ //if HH[0] < OO[0]+(HH[1]-LL[1])*0.3 Then 설명부탁합니다 buy("b",AtStop,OO[0]+(HH[1]-LL[1])*0.3); 상품선물 전종목거의다 야간장이추가되서 ..변경작업을완성못하면 거래를못하는상황이니 이해해주시고 빠른시간내 변경해서 거래할수잇도록 도와주세요... 프로그래밍초보로서는진짜어&#47158;습니다 .. 이번에도 안되면 더이상 질문하기도미안해서 뱅기타고 한국가서찾아뵈야할거같습니다. ㅎㅎ 꾸벅
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-01-06 14:40:36

안녕하세요 예스스탁입니다. 차트에 데이터가 주간과 야간이 함께 나오므로 시간으로 구별해서 각 장의 시고저종가를 만들어 사용하셔야 합니다. DO,DH,DL,DC가 주간장 시고저종가를 저장하는 배열변수입니다. [0]이 가장최근 주간장, [1]이 직전일순입니다. NO,NH,NL,NC가 야간장 시고저종가를 저장하는 배열변수입니다. [0]이 가장최근 야간장, [1]이 직전일순입니다. 각 시간대에 맞게 위 변수에서 값을 가져와 계산하셔서 변동폭 만드시면 됩니다. 또한 EntriesToday 함수는 사용하실수 없습니다. 해당 함수는 0시를 기준으로 일간 진입횟수를 카운트 하므로 주야간 시작시간에 마춰 초기화 되게 따로 작성해 사용하셔야 합니다. dayindex도 마찬가지입니다. 1. 주간장 vars : HL(0), Drange(0), Drange2(0),bongIndex(0),cnt(0),Entrycnt(0); Array : DO[10](0),DH[10](0),DL[10](0),DC[10](0); Array : NO[10](0),NH[10](0),NL[10](0),NC[10](0); #주간장시작 If stime == 090000 or (stime > 090000 and stime[1] <= 090000) then { #진입횟수 초기화 Entrycnt = 0; #봉갯수 초기화 bongIndex = 0; #주간 시고저종가 저장변수 초기값지정 DO[0] = O; DH[0] = H; DL[0] = L; #기존 저장된 값은 다음봉으로 순차적으로 옮김 [0] --> [1], [1] --> [2].... for cnt = 1 to 9{ DO[cnt] = DO[cnt-1][1]; DH[cnt] = DH[cnt-1][1]; DL[cnt] = DL[cnt-1][1]; DC[cnt] = DC[cnt-1][1]; } } #지정된 시간안에서만 주간장 최고가 최저가 종가 갱신 if stime >= 090000 and stime < 180000 then{ if H > DH[0] Then DH[0] = H; if L < DL[0] Then DL[0] = L; DC[0] = C; } #야간장 시작 If stime == 210000 or (stime > 210000 and stime[1] <= 210000) then { #진입횟수 초기화 Entrycnt = 0; #봉갯수 초기화 bongIndex=0; #야간장 시고저종가 저장변수 초기값지정 NO[0] = O; NH[0] = H; NL[0] = L; #이전 저장된 값을 다음방으로 순차적으로 옮김 [0] --> [1], [1] --> [2].... for cnt = 1 to 9{ NO[cnt] = NO[cnt-1][1]; NH[cnt] = NH[cnt-1][1]; NL[cnt] = NL[cnt-1][1]; NC[cnt] = NC[cnt-1][1]; } } #지정된 시간안에서만 야간장 최고가 최저가 종가 갱신 if stime >= 210000 or stime < 90000 then{ if H > NH[0] Then NH[0] = H; if L < NL[0] Then NL[0] = L; NC[0] = C; } #봉수 카운트 bongIndex = bongIndex+1; #진입횟수 카운트 if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then Entrycnt = Entrycnt+1; if stime >= 090000 and stime <= 150000 then{ #주간장에서 변동폭은 #직전주간장 최고가와 최근야간장최고가중 큰값- 직전주간장최저가와 최근야간장최저가중 작은값 if stime >= 090000 and stime <= 151500 Then HL= max(DH[1],NH[0])-Min(DL[1],NH[0]); VAR1 = HL/3.3; VAR2 = HL/2.8; If Entrycnt < 2 and bongIndex>0 and Time<143000 Then{ If c>DO[0]+VAR2 Then buy("B"); If c<DO[0]-VAR2 Then Sell("S"); } If Entrycnt==1 and time>103000 and time<143000 Then Begin If (MarketPosition(1)==-1 and MarketPosition(0)==0) and c>ExitPrice(1)+VAR1 Then buy("BB"); If (MarketPosition(1)==1 and MarketPosition(0)==0) and c<ExitPrice(1)-VAR1 Then Sell("SS"); End; If MarketPosition<>0 THEN{ If MarketPosition==1 then ExitLong("BX", atstop, EntryPrice-EntryPrice*0.005); If MarketPosition==-1 then ExitShort("SX", AtStop, EntryPrice+EntryPrice*0.005); } If marketposition<>0 and BarsSinceEntry>6 then { exitlong("Bx1",Atstop,highest(high,barsSinceEntry+1)-atr(30)*5); exitshort("sx1",Atstop,lowest(low,barsSinceEntry+1)+atr(30)*5); } // Exit_1 If barsSinceEntry(0)>4 then begin If Marketposition(0)==1 and time>141500 then begin If CrossDown(c, xma((H+L)/2, bongIndex)) then exitlong("NonT3"); End; If Marketposition(0)==-1 and time>141500 then begin If CrossUp(c, xma((H+L)/2, bongIndex)) then exitshort("NonT4"); End; End; } Setstopendofday(145500); 2. 야간장 끝나는 시간이 1시를 기준으로 식 작성해 드립니다. 야간장에서 나머지 수식상의 시간제한 등은 사용자분이 야간장에 맞게 수정하셔야 합니다. 야간장 끝나는 시간이 각기 다르므로 상품별로 따로 만드셔야 합니다. vars : HL(0), Drange(0), Drange2(0),bongIndex(0),cnt(0),Entrycnt(0); Array : DO[10](0),DH[10](0),DL[10](0),DC[10](0); Array : NO[10](0),NH[10](0),NL[10](0),NC[10](0); #주간장시작 If stime == 090000 or (stime > 090000 and stime[1] <= 090000) then { #진입횟수 초기화 Entrycnt = 0; #봉갯수 초기화 bongIndex = 0; #주간 시고저종가 저장변수 초기값지정 DO[0] = O; DH[0] = H; DL[0] = L; #기존 저장된 값은 다음봉으로 순차적으로 옮김 [0] --> [1], [1] --> [2].... for cnt = 1 to 9{ DO[cnt] = DO[cnt-1][1]; DH[cnt] = DH[cnt-1][1]; DL[cnt] = DL[cnt-1][1]; DC[cnt] = DC[cnt-1][1]; } } #지정된 시간안에서만 주간장 최고가 최저가 종가 갱신 if stime >= 090000 and stime < 180000 then{ if H > DH[0] Then DH[0] = H; if L < DL[0] Then DL[0] = L; DC[0] = C; } #야간장 시작 If stime == 210000 or (stime > 210000 and stime[1] <= 210000) then { #진입횟수 초기화 Entrycnt = 0; #봉갯수 초기화 bongIndex=0; #야간장 시고저종가 저장변수 초기값지정 NO[0] = O; NH[0] = H; NL[0] = L; #이전 저장된 값을 다음방으로 순차적으로 옮김 [0] --> [1], [1] --> [2].... for cnt = 1 to 9{ NO[cnt] = NO[cnt-1][1]; NH[cnt] = NH[cnt-1][1]; NL[cnt] = NL[cnt-1][1]; NC[cnt] = NC[cnt-1][1]; } } #지정된 시간안에서만 야간장 최고가 최저가 종가 갱신 if stime >= 210000 or stime < 90000 then{ if H > NH[0] Then NH[0] = H; if L < NL[0] Then NL[0] = L; NC[0] = C; } #봉수 카운트 bongIndex = bongIndex+1; #진입횟수 카운트 if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then Entrycnt = Entrycnt+1; if stime >= 210000 or stime <= 010000 Then{ #야간장에서 변동폭은 #최근주간장 최고가와 직전야간장최고가중 큰값- 최근주간장최저가와 최근야간장최저가중 작은값 HL= max(DH[0],NH[1])-Min(DL[0],NH[1]); VAR1 = HL/3.3; VAR2 = HL/2.8; If Entrycnt < 2 and bongIndex > 0 and Time < 003000 Then{ If c>NO[0]+VAR2 Then buy("B"); If c<NO[0]-VAR2 Then Sell("S"); } If Entrycnt==1 and time > 103000 and time < 003000 Then Begin If (MarketPosition(1)==-1 and MarketPosition(0)==0) and c>ExitPrice(1)+VAR1 Then buy("BB"); If (MarketPosition(1)==1 and MarketPosition(0)==0) and c<ExitPrice(1)-VAR1 Then Sell("SS"); End; If MarketPosition<>0 THEN{ If MarketPosition==1 then ExitLong("BX", atstop, EntryPrice-EntryPrice*0.005); If MarketPosition==-1 then ExitShort("SX", AtStop, EntryPrice+EntryPrice*0.005); } If marketposition<>0 and BarsSinceEntry>6 then { exitlong("Bx1",Atstop,highest(high,barsSinceEntry+1)-atr(30)*5); exitshort("sx1",Atstop,lowest(low,barsSinceEntry+1)+atr(30)*5); } // Exit_1 If barsSinceEntry(0)>4 then begin If Marketposition(0)==1 and time>001500 then begin If CrossDown(c, xma((H+L)/2, bongIndex)) then exitlong("NonT3"); End; If Marketposition(0)==-1 and time>001500 then begin If CrossUp(c, xma((H+L)/2, bongIndex)) then exitshort("NonT4"); End; End; if stime == 003000 Then{#0시 30분 청산 ExitLong(); ExitShort(); } } 2 주야간 복합에서 변동폭은 사용하시는 분들마다 기준이 다르므로 해당부분은 사용자분이 고려해 보셔야 합니다. 주야간이라고 해서 장을 따로 부르지만 통틀어 하루의 거래입니다. 오늘 주야간 거래는 전일주야간의 변동폭을 보는 경우도 있고 말씀하신것 처럼 주야간을 구분해서 직전 2개의 장을 보는경우도 있고 일관된 기준은 없습니다. 3. if HH[1] > 0 and LL[1] > 0 Then{ if HH[0] < OO[0]+(HH[1]-LL[1])*0.3 Then buy("b",AtStop,OO[0]+(HH[1]-LL[1])*0.3); } 최고가와 최저가의 전일값이 있고 당일 최고가가 시초가+전일변동폭의 30% 이상 상승하지 않은 상태에서 해당 값까지 상승하면 즉시 매수하는 식입니다. 즉 시초가+전일변동폭의 30% 아래에서 시세가 상승해 해당값을 터치할때 매수신호가 발생되게 작성된 식입니다. 즐거운 하루되시고 새해 좋은일만 가득하시기 바랍니다. > CSI300 님이 쓴 글입니다. > 제목 : 부탁 또 합니다 ... > 기존 데이시스템로직을 주간시스템,야간시스템으로 변경해서 주간장 야간장따로 거래할려고 변경작업을하는데 신호가계속 이상하게 나옵니다.. 답변도 상세하게 해줘서 넘 감사한데 제가 초보라 이해를 잘 못하는거 같네요 .. 미안해도 어쩔수없이 또 도움을청해야겟어요.. 기존시스템은 시초가+전일변동폭/3을 종가로돌파하면 진입하는식이면 주간장시스템은 변동폭만 복합장(직전야간장+직전주간장)/3변동폭으로 기타 청산 반대진입은 그대로 사용하고.. 야간장시스템은 변동폭을 복합장(직전주간장+직전야간장)변동폭으로 하고 청산,반대진입등은 주간장 시스템로직을변경해서사용하고 싶습니다 주간장9시-15시,야간장2100시작하여 2330,0230,0100 끝나는시간이 3가지유형입니다 저희가 중국상품선물 전종목 시스템포트로 거래하는데 변경할려니 참 어려움이 많네요 .. 기존 데이시스템 첨부합니다 .. 예시용으로 주간,야간장시스템으로 나눠서 작성해주시고 주석부탁합니다 ..기존데이시스템과 비교해서 시고저종 [1],FOR 부분 헷갈립니다 한번 찾아가서 인사드려야 할듯합니다 .. 일봉상 주간장9시시초가 -15시종가로 한개봉이그려지고 ,2100시초가담날1500종가로한개봉이그려집니다..야간장거래없는날은 주간장+주간장으로 그려집니다 전일변동폭돌파시스템 과 가장근접할려면 제가생각하고잇는복합장변동폭을 이용해야하나요 아니면 주간장시스템은 직전야간장변동폭,야간장시스템은 직전주간장변동폭을사용해야하나요 .. 39728답변에서 //if HH[1] > 0 and LL[1] > 0 Then{ //if HH[0] < OO[0]+(HH[1]-LL[1])*0.3 Then 설명부탁합니다 buy("b",AtStop,OO[0]+(HH[1]-LL[1])*0.3); 상품선물 전종목거의다 야간장이추가되서 ..변경작업을완성못하면 거래를못하는상황이니 이해해주시고 빠른시간내 변경해서 거래할수잇도록 도와주세요... 프로그래밍초보로서는진짜어