커뮤니티

문의드립니다.

프로필 이미지
비류천
2017-12-15 07:06:17
225
글번호 115011
답변완료
아래 수식을 실행하면 차트에서 일간 갭 선택하고 하면 정상으로 매수매도가 되는데 차트에서 일간 갭 선택안하면 처음에 매수만 실행됩니다. 수식 수정 부탁드립니다. ----의심부분 : AtLimit 에 이어지는 수식 / 이곳을 약간 수정하면 정상인거 같습니다.------------- if A_SIG == 1 and bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN-PriceScale*TICK); } if A_SIG == 1 and ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN+PriceScale*TICK); } ----시스템 수식-------------------------------- INPUT : LENGTH(10), PRO(100), LOSS(10),T(132000),TICK(4),하루손실(-5.5),당일거래횟수(2),TIK(0.05),P1(2),P2(1),P3(1),ST(090000),ET(144900); VAR : TCHAN(0), BCHAN(0),TCHAN1(0), BCHAN1(0); var : bs1(0),ss1(0); var : NP(0),Pre(0),DayPL(0),Xcond(false); var : TT(0),T1(0),Entry(0); var : Tcond(false); var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0),R(0),MI(0); //PRICE 갭 if bdate != bdate[1] Then{ gap = Open-Close[1]; //일간갭 계산 sumGap = sumGap+gap; //일간갭 누적 } GO = O - sumGap; //갭보정 시가 - 현재봉 시가에서 누적된 갭만큼 가감 GH = H - sumGap; //갭보정 고가 - 현재봉 고가에서 누적된 갭만큼 가감 GL = L - sumGap; //갭보정 저가 - 현재봉 저가에서 누적된 갭만큼 가감 GC = C - sumGap; //갭보정 종가 - 현재봉 종가에서 누적된 갭만큼 가감 NP = NetProfit; TT = TotalTrades; if Bdate != Bdate[1] Then{ Pre = NP[1]; Xcond = false; T1 = TT[1]; } DayPL = NP-Pre; if MarketPosition == 0 Then entry = TT-T1; Else entry = TT-T1+1; if TotalTrades > TotalTrades[1] and (IsExitName("DBx",1) == true or IsExitName("DSx",1) == true) Then Xcond = true; TCHAN = HIGHEST(GH, LENGTH)[P1]; BCHAN = LOWEST(GL, LENGTH)[P1]; // 매수매도 진입조건 1단계 if TCHAN[P2]+TIK < H then {bs1 = 1;} if BCHAN[P2]-TIK > L then {ss1 = 1;} // 매수매도 초기화 if bs1 == 1 and BCHAN > GL then {bs1=0;} if ss1 == 1 and TCHAN < GH then {ss1=0;} TCHAN1 = HIGHEST(HIGH, LENGTH)[P3]; BCHAN1 = LOWEST(LOW, LENGTH)[P3]; //진입 if bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN1-PriceScale*TICK); } if ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN1+PriceScale*TICK); } if MarketPosition == 1 Then ExitLong("DBx",AtStop,EntryPrice+하루손실-dayPL); if MarketPosition == -1 Then ExitShort("DSx",AtStop,EntryPrice-하루손실+daypl ); SetStopProfittarget(PRO,PointStop); SetStopLoss(LOSS,PointStop); SetStopEndofday(T);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-12-15 16:11:21

안녕하세요 예스스탁입니다. // 매수매도 진입조건 1단계 if TCHAN[P2]+TIK < H then {bs1 = 1;} if BCHAN[P2]-TIK > L then {ss1 = 1;} 위 조건이 잘못되어 있습니다. 지표는 보정된 값을 이용하는데 비교값은 봉의 고가저가입니다. 보정돤 고가/저가와 비교하셔야 합니다. INPUT : LENGTH(10), PRO(100), LOSS(10),T(132000),TICK(4),하루손실(-5.5),당일거래횟수(2),TIK(0.05),P1(2),P2(1),P3(1),ST(090000),ET(144900); VAR : TCHAN(0), BCHAN(0),TCHAN1(0), BCHAN1(0); var : bs1(0),ss1(0); var : NP(0),Pre(0),DayPL(0),Xcond(false); var : TT(0),T1(0),Entry(0); var : Tcond(false); var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0),R(0),MI(0); //PRICE 갭 if bdate != bdate[1] Then{ gap = Open-Close[1]; //일간갭 계산 sumGap = sumGap+gap; //일간갭 누적 } GO = O - sumGap; //갭보정 시가 - 현재봉 시가에서 누적된 갭만큼 가감 GH = H - sumGap; //갭보정 고가 - 현재봉 고가에서 누적된 갭만큼 가감 GL = L - sumGap; //갭보정 저가 - 현재봉 저가에서 누적된 갭만큼 가감 GC = C - sumGap; //갭보정 종가 - 현재봉 종가에서 누적된 갭만큼 가감 NP = NetProfit; TT = TotalTrades; if Bdate != Bdate[1] Then{ Pre = NP[1]; Xcond = false; T1 = TT[1]; } DayPL = NP-Pre; if MarketPosition == 0 Then entry = TT-T1; Else entry = TT-T1+1; if TotalTrades > TotalTrades[1] and (IsExitName("DBx",1) == true or IsExitName("DSx",1) == true) Then Xcond = true; TCHAN = HIGHEST(GH, LENGTH)[P1]; BCHAN = LOWEST(GL, LENGTH)[P1]; // 매수매도 진입조건 1단계 if TCHAN[P2]+TIK < gH then {bs1 = 1;} if BCHAN[P2]-TIK > gL then {ss1 = 1;} // 매수매도 초기화 if bs1 == 1 and BCHAN > GL then {bs1=0;} if ss1 == 1 and TCHAN < GH then {ss1=0;} TCHAN1 = HIGHEST(HIGH, LENGTH)[P3]; BCHAN1 = LOWEST(LOW, LENGTH)[P3]; //진입 if bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN1-PriceScale*TICK); } if ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN1+PriceScale*TICK); } if MarketPosition == 1 Then ExitLong("DBx",AtStop,EntryPrice+하루손실-dayPL); if MarketPosition == -1 Then ExitShort("DSx",AtStop,EntryPrice-하루손실+daypl ); SetStopProfittarget(PRO,PointStop); SetStopLoss(LOSS,PointStop); SetStopEndofday(T); 즐거운 하루되세요 > 비류천 님이 쓴 글입니다. > 제목 : 문의드립니다. > 아래 수식을 실행하면 차트에서 일간 갭 선택하고 하면 정상으로 매수매도가 되는데 차트에서 일간 갭 선택안하면 처음에 매수만 실행됩니다. 수식 수정 부탁드립니다. ----의심부분 : AtLimit 에 이어지는 수식 / 이곳을 약간 수정하면 정상인거 같습니다.------------- if A_SIG == 1 and bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN-PriceScale*TICK); } if A_SIG == 1 and ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN+PriceScale*TICK); } ----시스템 수식-------------------------------- INPUT : LENGTH(10), PRO(100), LOSS(10),T(132000),TICK(4),하루손실(-5.5),당일거래횟수(2),TIK(0.05),P1(2),P2(1),P3(1),ST(090000),ET(144900); VAR : TCHAN(0), BCHAN(0),TCHAN1(0), BCHAN1(0); var : bs1(0),ss1(0); var : NP(0),Pre(0),DayPL(0),Xcond(false); var : TT(0),T1(0),Entry(0); var : Tcond(false); var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0),R(0),MI(0); //PRICE 갭 if bdate != bdate[1] Then{ gap = Open-Close[1]; //일간갭 계산 sumGap = sumGap+gap; //일간갭 누적 } GO = O - sumGap; //갭보정 시가 - 현재봉 시가에서 누적된 갭만큼 가감 GH = H - sumGap; //갭보정 고가 - 현재봉 고가에서 누적된 갭만큼 가감 GL = L - sumGap; //갭보정 저가 - 현재봉 저가에서 누적된 갭만큼 가감 GC = C - sumGap; //갭보정 종가 - 현재봉 종가에서 누적된 갭만큼 가감 NP = NetProfit; TT = TotalTrades; if Bdate != Bdate[1] Then{ Pre = NP[1]; Xcond = false; T1 = TT[1]; } DayPL = NP-Pre; if MarketPosition == 0 Then entry = TT-T1; Else entry = TT-T1+1; if TotalTrades > TotalTrades[1] and (IsExitName("DBx",1) == true or IsExitName("DSx",1) == true) Then Xcond = true; TCHAN = HIGHEST(GH, LENGTH)[P1]; BCHAN = LOWEST(GL, LENGTH)[P1]; // 매수매도 진입조건 1단계 if TCHAN[P2]+TIK < H then {bs1 = 1;} if BCHAN[P2]-TIK > L then {ss1 = 1;} // 매수매도 초기화 if bs1 == 1 and BCHAN > GL then {bs1=0;} if ss1 == 1 and TCHAN < GH then {ss1=0;} TCHAN1 = HIGHEST(HIGH, LENGTH)[P3]; BCHAN1 = LOWEST(LOW, LENGTH)[P3]; //진입 if bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN1-PriceScale*TICK); } if ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN1+PriceScale*TICK); } if MarketPosition == 1 Then ExitLong("DBx",AtStop,EntryPrice+하루손실-dayPL); if MarketPosition == -1 Then ExitShort("DSx",AtStop,EntryPrice-하루손실+daypl ); SetStopProfittarget(PRO,PointStop); SetStopLoss(LOSS,PointStop); SetStopEndofday(T);