커뮤니티

시스템 수식 요청 드립니다.

프로필 이미지
늘푸른강물
2022-04-06 16:47:39
1123
글번호 157799
답변완료
터틀 4주 매매 전략으로 아래 전략을 박상우님 블로그에서 보고 적용하려고 하니 자꾸 에러가 납니다. 어디를 수정해야 할까요? //출처 : 추세매매 절대지식 p375 //타임프레임 : 일봉 //매수 : 직전 4주 고가 채널을 상향돌파 시(직전 거래가 손실인 경우만 매매) //매수청산 : 직전 2주 저가 채널을 하항이탈 시 //매도 : 직전 4주 저가 채널을 하향이탈 시(직전 거래가 손실인 경우만 매매) //매도청산 : 직전 2주 고가 채널을 상향돌파 시 // * 직전 거래가 손실인 경우 : 가상으로 거래를 했을때 직전 포지션에서 손실을 보았다면 // 실제매매에서 4주 고가나 저가를 돌파하더라도 이번 매매는 하지 않음 // 주식처럼 매수 거래만 가능한 경우라도 모든 방향 포지션의 직전 가상 거래 손익을 고려해야 함 &#8203; var : 고가채널(0), 저가채널(0), 고가채널2(0), 저가채널2(0), ii(0),cnt(0); var : position(0), BuyP(0), SellP(0), elP(0), esP(0), PL(0); if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then { 고가채널 = 0; 저가채널 = 999999999; 고가채널2 = 0; 저가채널2 = 999999999; For ii = 1 to 4 { IF WeekHigh(ii) >= 고가채널 Then 고가채널 = WeekHigh(ii); if WeekLow(ii) <= 저가채널 Then 저가채널 = WeekLow(ii); if ii <= 2 Then { IF WeekHigh(ii) >= 고가채널2 Then 고가채널2 = WeekHigh(ii); if WeekLow(ii) <= 저가채널2 Then 저가채널2 = WeekLow(ii); } } } &#8203; if TotalTrades < 1 Then { Buy("B0", AtStop, 고가채널); Sell("S0",AtStop, 저가채널); } if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then cnt = cnt + 1; &#8203; if cnt > 4 Then { if H >= 고가채널[1] Then position = 1; if L <= 저가채널[1] Then position = -1; if position == 1 and L <= 저가채널2[1] Then position = 0; if position == -1 and H >= 고가채널2[1] Then position = 0; &#8203; if position == 1 and position[1] <> 1 Then BuyP = 고가채널; &#8203; if position == -1 and position[1] <> -1 Then SellP = 저가채널; &#8203; if position == 1 Then PL = C - BuyP; if position <> 1 and position[1] == 1 Then PL = 저가채널2 - BuyP; if position == -1 Then PL = SellP - C; if position <> -1 and position[1] == -1 Then PL = SellP-고가채널2; } &#8203; if PL < 0 Then { if position <> 1 Then Buy("B1", AtStop, 고가채널); if position <> -1 Then Sell("S1",AtStop, 저가채널); } &#8203; if MarketPosition == 1 Then ExitLong("EL", AtStop, 저가채널2); &#8203; if MarketPosition == -1 Then ExitShort("ES", AtStop, 고가채널2);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-04-07 09:49:03

안녕하세요 예스스탁입니다. 1 &#8203; 올리신 수식에 알수없는 내용들이 있습니다 아래수식에서 해당 부분제거했습니다. 2 해당수식에 WeekHigh,WeekLow와 같이 별도의 사용자함수가 사용되어 있습니다. 함수를 첨부파일로 올려드립니다. 프로그램 설치폴더의 yeslang폴더안에 functions폴더에 다운받아 사용하시면 됩니다. 3 var : 고가채널(0), 저가채널(0), 고가채널2(0), 저가채널2(0), ii(0),cnt(0); var : position(0), BuyP(0), SellP(0), elP(0), esP(0), PL(0); if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then { 고가채널 = 0; 저가채널 = 999999999; 고가채널2 = 0; 저가채널2 = 999999999; For ii = 1 to 4 { IF WeekHigh(ii) >= 고가채널 Then 고가채널 = WeekHigh(ii); if WeekLow(ii) <= 저가채널 Then 저가채널 = WeekLow(ii); if ii <= 2 Then { IF WeekHigh(ii) >= 고가채널2 Then 고가채널2 = WeekHigh(ii); if WeekLow(ii) <= 저가채널2 Then 저가채널2 = WeekLow(ii); } } } if TotalTrades < 1 Then { Buy("B0", AtStop, 고가채널); Sell("S0",AtStop, 저가채널); } if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then cnt = cnt + 1; if cnt > 4 Then { if H >= 고가채널[1] Then position = 1; if L <= 저가채널[1] Then position = -1; if position == 1 and L <= 저가채널2[1] Then position = 0; if position == -1 and H >= 고가채널2[1] Then position = 0; if position == 1 and position[1] <> 1 Then BuyP = 고가채널; if position == -1 and position[1] <> -1 Then SellP = 저가채널; if position == 1 Then PL = C - BuyP; if position <> 1 and position[1] == 1 Then PL = 저가채널2 - BuyP; if position == -1 Then PL = SellP - C; if position <> -1 and position[1] == -1 Then PL = SellP-고가채널2; } if PL < 0 Then { if position <> 1 Then Buy("B1", AtStop, 고가채널); if position <> -1 Then Sell("S1",AtStop, 저가채널); } if MarketPosition == 1 Then ExitLong("EL", AtStop, 저가채널2); if MarketPosition == -1 Then ExitShort("ES", AtStop, 고가채널2); 즐거운 하루되세요 > 늘푸른강물 님이 쓴 글입니다. > 제목 : 시스템 수식 요청 드립니다. > 터틀 4주 매매 전략으로 아래 전략을 박상우님 블로그에서 보고 적용하려고 하니 자꾸 에러가 납니다. 어디를 수정해야 할까요? //출처 : 추세매매 절대지식 p375 //타임프레임 : 일봉 //매수 : 직전 4주 고가 채널을 상향돌파 시(직전 거래가 손실인 경우만 매매) //매수청산 : 직전 2주 저가 채널을 하항이탈 시 //매도 : 직전 4주 저가 채널을 하향이탈 시(직전 거래가 손실인 경우만 매매) //매도청산 : 직전 2주 고가 채널을 상향돌파 시 // * 직전 거래가 손실인 경우 : 가상으로 거래를 했을때 직전 포지션에서 손실을 보았다면 // 실제매매에서 4주 고가나 저가를 돌파하더라도 이번 매매는 하지 않음 // 주식처럼 매수 거래만 가능한 경우라도 모든 방향 포지션의 직전 가상 거래 손익을 고려해야 함 &#8203; var : 고가채널(0), 저가채널(0), 고가채널2(0), 저가채널2(0), ii(0),cnt(0); var : position(0), BuyP(0), SellP(0), elP(0), esP(0), PL(0); if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then { 고가채널 = 0; 저가채널 = 999999999; 고가채널2 = 0; 저가채널2 = 999999999; For ii = 1 to 4 { IF WeekHigh(ii) >= 고가채널 Then 고가채널 = WeekHigh(ii); if WeekLow(ii) <= 저가채널 Then 저가채널 = WeekLow(ii); if ii <= 2 Then { IF WeekHigh(ii) >= 고가채널2 Then 고가채널2 = WeekHigh(ii); if WeekLow(ii) <= 저가채널2 Then 저가채널2 = WeekLow(ii); } } } &#8203; if TotalTrades < 1 Then { Buy("B0", AtStop, 고가채널); Sell("S0",AtStop, 저가채널); } if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then cnt = cnt + 1; &#8203; if cnt > 4 Then { if H >= 고가채널[1] Then position = 1; if L <= 저가채널[1] Then position = -1; if position == 1 and L <= 저가채널2[1] Then position = 0; if position == -1 and H >= 고가채널2[1] Then position = 0; &#8203; if position == 1 and position[1] <> 1 Then BuyP = 고가채널; &#8203; if position == -1 and position[1] <> -1 Then SellP = 저가채널; &#8203; if position == 1 Then PL = C - BuyP; if position <> 1 and position[1] == 1 Then PL = 저가채널2 - BuyP; if position == -1 Then PL = SellP - C; if position <> -1 and position[1] == -1 Then PL = SellP-고가채널2; } &#8203; if PL < 0 Then { if position <> 1 Then Buy("B1", AtStop, 고가채널); if position <> -1 Then Sell("S1",AtStop, 저가채널); } &#8203; if MarketPosition == 1 Then ExitLong("EL", AtStop, 저가채널2); &#8203; if MarketPosition == -1 Then ExitShort("ES", AtStop, 고가채널2);