커뮤니티

시스템 문의드립니다.

프로필 이미지
금의환향
2015-08-28 11:24:47
200
글번호 89889
답변완료
안녕하세요? 시스템트레이딩 막 입문한 초보입니다. 처음으로 전략을 짜서 모의거래에 돌려봤는데 엉뚱한 결과가 나오네요. 검토하시고 수정 좀 부탁드립니다. 전략내용은 대략 다음과 같습니다. <진입> 추세방향판단 : 60이평선 우상향 매수만. 우하향 매도만 매수: 60,20이평선 우상향. 전봉이 음봉이고 5일선아래서 양봉전환시 매도: 60,20이평선 우하향. 전봉이 양봉이고 5일선위에서 음봉전환시 당일2회(07:00~16:00,16:00~04:30) 트레이딩 시작후 최초매수면 2개매수,최초매도면 2개매도 단타포지션-단타목표치도달시 TS청산, 신호시 반복 재진입 추세포지션-20일이평선 반전시 청산 <청산> 손절 : -10틱 본절 : 10틱 수익시 진입가+2틱으로 손실방지 청산 : 단기포지션- 20틱 수익시 TS 청산 추세포지션- 20이평선 방향전환시 청산 장종료전 04:30 포지션 모두 정리 [질의내용] 1. stop 이 잘안먹히고 본절,청산시 손실이 30~150틱이 나오는데 이유를 잘 모르겠습니다. 2. 장종료 모두 청산되어야 하는데 다음날켜보면 청산안된 포지션이 남아있는데 왜 그런지 모르겠습니다. 혹시 0430 이전에 프로그램 종료후 당일매매종료라 생각하고 컴퓨터를 꺼버리기도 하는데 그경우에 문제가 발생하나요? 3. if MarketPosition == 0 and LongEntryCount == 0 and // 첫매수 countif(C<O and C < Sma1,10) >= 1 and crossup(c,Sma1) and C > O Then { buy("b1",OnClose,def,1); buy("b1ts",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; 위 진입식에서 봉 완성후 진입하니 장대봉일경우 손실이 크던데 이평선 돌파 순간에 진입하는 방법은 없나요? 그리고 countif 적용을 10봉이 아니라 당일 거래오픈후로 바꾸고 싶은데 어떻게 바꾸어야 하나요? 4. 한계좌에서 위의전략을 오일과 금 해외선물에 동시에 실행하면 문제가 생기나요? 초보라 질문이 많네요. 아래내을 바로 전략실행할 수 있게 손 좀 봐주시길 부탁드립니다. 감사합니다.
시스템
답변 4
프로필 이미지

예스스탁 예스스탁 답변

2015-08-28 16:42:52

안녕하세요 예스스탁입니다. 식 내용에 대해 추가로 여줘볼 내용이 있습니다. 현재 작성하신 식이 올리식 글과 다른부분이 있습니다 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 > 금의환향 님이 쓴 글입니다. > 제목 : 시스템 문의드립니다. > 안녕하세요? 시스템트레이딩 막 입문한 초보입니다. 처음으로 전략을 짜서 모의거래에 돌려봤는데 엉뚱한 결과가 나오네요. 검토하시고 수정 좀 부탁드립니다. 전략내용은 대략 다음과 같습니다. <진입> 추세방향판단 : 60이평선 우상향 매수만. 우하향 매도만 매수: 60,20이평선 우상향. 전봉이 음봉이고 5일선아래서 양봉전환시 매도: 60,20이평선 우하향. 전봉이 양봉이고 5일선위에서 음봉전환시 당일2회(07:00~16:00,16:00~04:30) 트레이딩 시작후 최초매수면 2개매수,최초매도면 2개매도 단타포지션-단타목표치도달시 TS청산, 신호시 반복 재진입 추세포지션-20일이평선 반전시 청산 <청산> 손절 : -10틱 본절 : 10틱 수익시 진입가+2틱으로 손실방지 청산 : 단기포지션- 20틱 수익시 TS 청산 추세포지션- 20이평선 방향전환시 청산 장종료전 04:30 포지션 모두 정리 [질의내용] 1. stop 이 잘안먹히고 본절,청산시 손실이 30~150틱이 나오는데 이유를 잘 모르겠습니다. 2. 장종료 모두 청산되어야 하는데 다음날켜보면 청산안된 포지션이 남아있는데 왜 그런지 모르겠습니다. 혹시 0430 이전에 프로그램 종료후 당일매매종료라 생각하고 컴퓨터를 꺼버리기도 하는데 그경우에 문제가 발생하나요? 3. if MarketPosition == 0 and LongEntryCount == 0 and // 첫매수 countif(C<O and C < Sma1,10) >= 1 and crossup(c,Sma1) and C > O Then { buy("b1",OnClose,def,1); buy("b1ts",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; 위 진입식에서 봉 완성후 진입하니 장대봉일경우 손실이 크던데 이평선 돌파 순간에 진입하는 방법은 없나요? 그리고 countif 적용을 10봉이 아니라 당일 거래오픈후로 바꾸고 싶은데 어떻게 바꾸어야 하나요? 4. 한계좌에서 위의전략을 오일과 금 해외선물에 동시에 실행하면 문제가 생기나요? 초보라 질문이 많네요. 아래내을 바로 전략실행할 수 있게 손 좀 봐주시길 부탁드립니다. 감사합니다.
프로필 이미지

예스스탁 예스스탁 답변

2015-08-31 15:56:32

안녕하세요 예스스탁입니다. 작성하신 식에서 조금만 수정했습니다. 추가진입부분에 CurrentEntries == 1이라는 조건이 있습니다. 첫진입이 신호가 2개가 발생해서 2계약이 진입하므로 CurrentEntries 대신에 CurrentContracts를 사용하시면 됩니다. 손절식은 if조건문이 거의 나오지 않는 조건이라 삭제했습니다. 청산함수에 이름을 지정하면 해당 진입명으로 들어간 수량만 청산이 되므로 따로 청산함수에 수량을 지정하실 필요는 없습니다. 매도청산쪽에 아래와 같은 표현이 있습니다. 진입이후의 최저가가 진입가 대비 20틱 이하이고 진입이후의 최저가가 4개봉 최고가 이상이어야 한다는 조건인데 4개봉 최고가가 진입이후 최저가보다 클수 없습니다. If var2 >= var4 Then 조건은 삭제했습니다. If var2 <= EntryPrice-PriceScale*Profit Then // 수익도달시 TS { var4 = Highest(H,4); //최근 4개봉의 고가돌파시 청산 If var2 >= var4 Then { 아래는 수정한 식입니다. 의도와 다른 부분이 있으시면 다시 전화주시기 바랍니다. 02-3453-1060 /* ========================================================================== 전략명: 이동평균선 추세추종 시스템 (TG1-MA tr) 추세방향판단 : 60이평선 우상향 매수만. 우하향 매도만 매수: 60,20이평선 우상향. 전봉이 음봉이고 5일선아래서 양봉전환시 매도: 60,20이평선 우하향. 전봉이 양봉이고 5일선위에서 음봉전환시 당일2회(07:00~16:00,16:00~04:30) 트레이딩 시작후 최초 최초매수면 2개매수, 최소매도면 2개매도 단타포지션-단타목표치도달시 TS청산, 신호발생시 반복재진입 추세포지션-20일이평선 반전시 청산 =============================================================================*/ Input : Period1(5), Period2(20), Period3(60); //이평선 변수 Input : Start_STime(100000); // 매매시작시간 //Input : Sprofit(12), loss(10), Profit(30) ; // 손익 변수 Var : Sma1(0),Sma2(0),Sma3(0); //이평선 변수선언 var : cnt(0),LongEntrycount(0),ShortEntrycount(0),Lcnt(0),LossCutCount(0); //Lcounter, LN(100),JN(9),JMTR(0), N(100) var : MaCroUp(false), MaCroDn(False); var : BuySetup(false),SellSetup(false),LTrendUp(false),LTrendDn(false),STrendUp(false),STrendDn(false),EnTime(false); /*====================================== 셋업- 매매를 위한조건 체크 및 준비 =======================================*/ Sma1 = ma(C,Period1); Sma2 = ma(C,Period2); Sma3 = ma(C,Period3); MaCroUp = CrossUP(Sma1, Sma2 ); //이평선 GC MaCroDn = CrossDown(Sma1, Sma2 ); //이평선 DC LTrendUp = Sma3[1] > Sma3[2] and Sma3 > Sma3[1] ; // 60일선 우상향 LTrendDn = Sma3[1] < Sma3[2] and Sma3 < Sma3[1] ; // 60일선 우하향 STrendUp = Sma2[1] > Sma2[2] and Sma2 > Sma2[1] ; // 20일선 우상향 STrendDn = Sma2[1] < Sma2[2] and Sma2 < Sma2[1] ; // 20일선 우하향 // 진입시간 EnTime = (stime >= Start_STime and stime < 240000) or (stime >= 000001 and stime < 040000) ; //거래횟수 카운트 if stime == 160000 or stime == 070000 then{ LongEntryCount = 0 ; ShortEntrycount = 0 ; } /*================================================================== 진입-방향,거래시간 조건만족시 매수: 60,20일선 우상향, 전봉이 음봉이고 5일선아래서 양봉으로 돌파시 매도: 60,20일선 우하향, 전봉이 양봉이고 5일선위에서 음봉으로 돌파시 =================================================================*/ /*상승추세면 매수만 */ If EnTime == True and LTrendUp == True and STrendUp == True then //상승추세 { if MarketPosition == 0 and LongEntryCount == 0 and // 첫매수 countif(C<O and C < Sma1,10) >= 1 and crossup(c,Sma1) and C > O Then { buy("b1",OnClose,def,1); buy("b1ts",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; } if MarketPosition == 1 and CurrentContracts == 2 and //추가매수 countif(C<O and C < Sma1,BarsSinceExit(1)) >= 1 and crossup(c,Sma1) and C > O Then { buy("b2",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; } } // 60일 우하향. 매도 If EnTime == True and LTrendDn == True and STrendDn == True then //하향추세 { if MarketPosition == 0 and ShortEntrycount == 0 and //첫매도 countif(C>O and C > Sma1,10) >= 1 and CrossDown(c,Sma1) and C < O Then{ Sell("s1",OnClose,def,1); Sell("s1ts",OnClose,def,1); ShortEntrycount = ShortEntrycount +1 ; } if MarketPosition == -1 and CurrentContracts == 2 and //추가매도 countif(C>O and C > Sma1,BarsSinceExit(1)) >= 1 and CrossDown(c,Sma1) and C < O Then{ Sell("s2",OnClose,def,1); ShortEntrycount = ShortEntrycount +1 ; } } /* =========================================== EXIT 전략 손절 : -10틱 본절 : 12틱 수익시 진입가+2틱 청산 : 단기포지션- 20틱 수익시 TS 청산 추세포지션- 20이평선 방향전환시 청산 장종료전 04:30 포지션 모두 정리 ===============================================*/ Input : Sprofit(12), loss(10), Profit(20) ; SetStopContract; // 개별계약당 청산 /* 매수포지션보유시*/ if MarketPosition == 1 Then { var1 = highest(H,BarsSinceEntry); // 고가 ExitLong("b1_손절",AtStop,EntryPrice-PriceScale*loss,"b1") ; //손절 ExitLong("b2_손절",AtStop,EntryPrice-PriceScale*loss,"b2") ; //손절 ExitLong("b1ts_손절",AtStop,EntryPrice-PriceScale*loss,"b1ts") ; //손절 if var1 >= EntryPrice+PriceScale*SProfit Then { ExitLong("b1_본절",AtStop,EntryPrice+PriceScale*2,"b1") ; //본절+2틱설정 ExitLong("b2_본절",AtStop,EntryPrice+PriceScale*2,"b2") ; //본절+2틱설정 ExitLong("b1ts_본절",AtStop,EntryPrice+PriceScale*2,"b1ts") ; //본절+2틱설정 } If var1 >= EntryPrice+PriceScale*Profit Then // 수익도달시 { ExitLong("b1_익절",AtStop,Var1-PriceScale*SProfit,"b1",1) ; //익절ts ExitLong("b2_익절",AtStop,Var1-PriceScale*SProfit,"b2",1) ; //익절ts } If STrendDn==True Then //20일선꺽이면 ExitLong("b1ts_익절",OnClose,def,"b1ts") ; //익절TS if stime == 043000 or (stime > 043000 and stime[1] < 043000) then //장종료청산 ExitLong("bx_장종료"); } /* 매도포지션보유시*/ If MarketPosition == -1 Then { var2 = lowest(L,BarsSinceEntry) ; //저가 ExitShort("s1_손절",AtStop,EntryPrice+PriceScale*loss,"s1") ; //손절 ExitShort("s2_손절",AtStop,EntryPrice+PriceScale*loss,"s2") ; //손절 ExitShort("s1ts_손절",AtStop,EntryPrice+PriceScale*loss,"s1ts") ; //손절 If var2 <= EntryPrice-PriceScale*SProfit Then //본절 { ExitShort("s1_본절",AtStop,EntryPrice-PriceScale*2,"s1") ; ExitShort("s2_본절",AtStop,EntryPrice-PriceScale*2,"s2") ; ExitShort("s1ts_본절",AtStop,EntryPrice-PriceScale*2,"s1ts") ; } If var2 <= EntryPrice-PriceScale*Profit Then // 수익도달시 TS { ExitShort("s1_익절",AtStop,var2+PriceScale*loss,"s1") ; //익절 ExitShort("s2_익절",AtStop,var2+PriceScale*loss,"s2") ; //익절 } If var2 <= EntryPrice-PriceScale*Profit Then // 수익도달시 TS { var4 = Highest(H,4); //최근 4개봉의 고가돌파시 청산 # If var2 >= var4 Then # { ExitShort("ss1_익절",AtStop,var4,"s1",1) ; //익절 ExitShort("ss2_익절",AtStop,var4,"s2",1) ; //익절 # } } If STrendUp==True Then //20일선꺽이면 ExitShort("s1ts_익절",OnClose,def,"s1ts") ; //익절TS if stime == 043000 or (stime > 043000 and stime[1] < 043000) then //장종료청산 ExitShort("sx_장종료"); } ClearDebug(); MessageLog("B%s,%s, S%s,%s,BE %.f,SE%.f,Mp=%.f,CE=%.f",LTrendUp,STrendUp,LTrendDn,STrendDn,LongEntryCount,ShortEntrycount,MarketPosition,CurrentEntries ); 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템 문의드립니다. > 안녕하세요 예스스탁입니다. 식 내용에 대해 추가로 여줘볼 내용이 있습니다. 현재 작성하신 식이 올리식 글과 다른부분이 있습니다 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 > 금의환향 님이 쓴 글입니다. > 제목 : 시스템 문의드립니다. > 안녕하세요? 시스템트레이딩 막 입문한 초보입니다. 처음으로 전략을 짜서 모의거래에 돌려봤는데 엉뚱한 결과가 나오네요. 검토하시고 수정 좀 부탁드립니다. 전략내용은 대략 다음과 같습니다. <진입> 추세방향판단 : 60이평선 우상향 매수만. 우하향 매도만 매수: 60,20이평선 우상향. 전봉이 음봉이고 5일선아래서 양봉전환시 매도: 60,20이평선 우하향. 전봉이 양봉이고 5일선위에서 음봉전환시 당일2회(07:00~16:00,16:00~04:30) 트레이딩 시작후 최초매수면 2개매수,최초매도면 2개매도 단타포지션-단타목표치도달시 TS청산, 신호시 반복 재진입 추세포지션-20일이평선 반전시 청산 <청산> 손절 : -10틱 본절 : 10틱 수익시 진입가+2틱으로 손실방지 청산 : 단기포지션- 20틱 수익시 TS 청산 추세포지션- 20이평선 방향전환시 청산 장종료전 04:30 포지션 모두 정리 [질의내용] 1. stop 이 잘안먹히고 본절,청산시 손실이 30~150틱이 나오는데 이유를 잘 모르겠습니다. 2. 장종료 모두 청산되어야 하는데 다음날켜보면 청산안된 포지션이 남아있는데 왜 그런지 모르겠습니다. 혹시 0430 이전에 프로그램 종료후 당일매매종료라 생각하고 컴퓨터를 꺼버리기도 하는데 그경우에 문제가 발생하나요? 3. if MarketPosition == 0 and LongEntryCount == 0 and // 첫매수 countif(C<O and C < Sma1,10) >= 1 and crossup(c,Sma1) and C > O Then { buy("b1",OnClose,def,1); buy("b1ts",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; 위 진입식에서 봉 완성후 진입하니 장대봉일경우 손실이 크던데 이평선 돌파 순간에 진입하는 방법은 없나요? 그리고 countif 적용을 10봉이 아니라 당일 거래오픈후로 바꾸고 싶은데 어떻게 바꾸어야 하나요? 4. 한계좌에서 위의전략을 오일과 금 해외선물에 동시에 실행하면 문제가 생기나요? 초보라 질문이 많네요. 아래내을 바로 전략실행할 수 있게 손 좀 봐주시길 부탁드립니다. 감사합니다.
프로필 이미지

금의환향

2015-08-31 19:58:47

금의환향 님에 의해 삭제된 답변입니다.
프로필 이미지

금의환향

2015-08-31 19:58:47

감사합니다. 수정해주신걸로 테스트해봤는데 시뮬레이션결과가 생각과 다르게 나오네요. 현대 Yestrader 해외선물 gold 3분봉 시뮬레이션입니다. 1 익절은 10틱수익이 나야하는데 실제는 손실로 나오는 경우가 있네요.(0825캡쳐) 이경우는 본절이나 손절로 결과가 나와야 하는데 이상하네요. 2. 매수신호가 나와야 하는데 신호가 안나오는 경우도있네요(0819캡쳐) 시뮬레이션 환경에 뭐 신경써야 하는게 있나요? 캡쳐화면 참고하시어 검토부탁드립니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : 시스템 문의드립니다. > 안녕하세요 예스스탁입니다. 작성하신 식에서 조금만 수정했습니다. 추가진입부분에 CurrentEntries == 1이라는 조건이 있습니다. 첫진입이 신호가 2개가 발생해서 2계약이 진입하므로 CurrentEntries 대신에 CurrentContracts를 사용하시면 됩니다. 손절식은 if조건문이 거의 나오지 않는 조건이라 삭제했습니다. 청산함수에 이름을 지정하면 해당 진입명으로 들어간 수량만 청산이 되므로 따로 청산함수에 수량을 지정하실 필요는 없습니다. 매도청산쪽에 아래와 같은 표현이 있습니다. 진입이후의 최저가가 진입가 대비 20틱 이하이고 진입이후의 최저가가 4개봉 최고가 이상이어야 한다는 조건인데 4개봉 최고가가 진입이후 최저가보다 클수 없습니다. If var2 >= var4 Then 조건은 삭제했습니다. If var2 <= EntryPrice-PriceScale*Profit Then // 수익도달시 TS { var4 = Highest(H,4); //최근 4개봉의 고가돌파시 청산 If var2 >= var4 Then { 아래는 수정한 식입니다. 의도와 다른 부분이 있으시면 다시 전화주시기 바랍니다. 02-3453-1060 /* ========================================================================== 전략명: 이동평균선 추세추종 시스템 (TG1-MA tr) 추세방향판단 : 60이평선 우상향 매수만. 우하향 매도만 매수: 60,20이평선 우상향. 전봉이 음봉이고 5일선아래서 양봉전환시 매도: 60,20이평선 우하향. 전봉이 양봉이고 5일선위에서 음봉전환시 당일2회(07:00~16:00,16:00~04:30) 트레이딩 시작후 최초 최초매수면 2개매수, 최소매도면 2개매도 단타포지션-단타목표치도달시 TS청산, 신호발생시 반복재진입 추세포지션-20일이평선 반전시 청산 =============================================================================*/ Input : Period1(5), Period2(20), Period3(60); //이평선 변수 Input : Start_STime(100000); // 매매시작시간 //Input : Sprofit(12), loss(10), Profit(30) ; // 손익 변수 Var : Sma1(0),Sma2(0),Sma3(0); //이평선 변수선언 var : cnt(0),LongEntrycount(0),ShortEntrycount(0),Lcnt(0),LossCutCount(0); //Lcounter, LN(100),JN(9),JMTR(0), N(100) var : MaCroUp(false), MaCroDn(False); var : BuySetup(false),SellSetup(false),LTrendUp(false),LTrendDn(false),STrendUp(false),STrendDn(false),EnTime(false); /*====================================== 셋업- 매매를 위한조건 체크 및 준비 =======================================*/ Sma1 = ma(C,Period1); Sma2 = ma(C,Period2); Sma3 = ma(C,Period3); MaCroUp = CrossUP(Sma1, Sma2 ); //이평선 GC MaCroDn = CrossDown(Sma1, Sma2 ); //이평선 DC LTrendUp = Sma3[1] > Sma3[2] and Sma3 > Sma3[1] ; // 60일선 우상향 LTrendDn = Sma3[1] < Sma3[2] and Sma3 < Sma3[1] ; // 60일선 우하향 STrendUp = Sma2[1] > Sma2[2] and Sma2 > Sma2[1] ; // 20일선 우상향 STrendDn = Sma2[1] < Sma2[2] and Sma2 < Sma2[1] ; // 20일선 우하향 // 진입시간 EnTime = (stime >= Start_STime and stime < 240000) or (stime >= 000001 and stime < 040000) ; //거래횟수 카운트 if stime == 160000 or stime == 070000 then{ LongEntryCount = 0 ; ShortEntrycount = 0 ; } /*================================================================== 진입-방향,거래시간 조건만족시 매수: 60,20일선 우상향, 전봉이 음봉이고 5일선아래서 양봉으로 돌파시 매도: 60,20일선 우하향, 전봉이 양봉이고 5일선위에서 음봉으로 돌파시 =================================================================*/ /*상승추세면 매수만 */ If EnTime == True and LTrendUp == True and STrendUp == True then //상승추세 { if MarketPosition == 0 and LongEntryCount == 0 and // 첫매수 countif(C<O and C < Sma1,10) >= 1 and crossup(c,Sma1) and C > O Then { buy("b1",OnClose,def,1); buy("b1ts",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; } if MarketPosition == 1 and CurrentContracts == 2 and //추가매수 countif(C<O and C < Sma1,BarsSinceExit(1)) >= 1 and crossup(c,Sma1) and C > O Then { buy("b2",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; } } // 60일 우하향. 매도 If EnTime == True and LTrendDn == True and STrendDn == True then //하향추세 { if MarketPosition == 0 and ShortEntrycount == 0 and //첫매도 countif(C>O and C > Sma1,10) >= 1 and CrossDown(c,Sma1) and C < O Then{ Sell("s1",OnClose,def,1); Sell("s1ts",OnClose,def,1); ShortEntrycount = ShortEntrycount +1 ; } if MarketPosition == -1 and CurrentContracts == 2 and //추가매도 countif(C>O and C > Sma1,BarsSinceExit(1)) >= 1 and CrossDown(c,Sma1) and C < O Then{ Sell("s2",OnClose,def,1); ShortEntrycount = ShortEntrycount +1 ; } } /* =========================================== EXIT 전략 손절 : -10틱 본절 : 12틱 수익시 진입가+2틱 청산 : 단기포지션- 20틱 수익시 TS 청산 추세포지션- 20이평선 방향전환시 청산 장종료전 04:30 포지션 모두 정리 ===============================================*/ Input : Sprofit(12), loss(10), Profit(20) ; SetStopContract; // 개별계약당 청산 /* 매수포지션보유시*/ if MarketPosition == 1 Then { var1 = highest(H,BarsSinceEntry); // 고가 ExitLong("b1_손절",AtStop,EntryPrice-PriceScale*loss,"b1") ; //손절 ExitLong("b2_손절",AtStop,EntryPrice-PriceScale*loss,"b2") ; //손절 ExitLong("b1ts_손절",AtStop,EntryPrice-PriceScale*loss,"b1ts") ; //손절 if var1 >= EntryPrice+PriceScale*SProfit Then { ExitLong("b1_본절",AtStop,EntryPrice+PriceScale*2,"b1") ; //본절+2틱설정 ExitLong("b2_본절",AtStop,EntryPrice+PriceScale*2,"b2") ; //본절+2틱설정 ExitLong("b1ts_본절",AtStop,EntryPrice+PriceScale*2,"b1ts") ; //본절+2틱설정 } If var1 >= EntryPrice+PriceScale*Profit Then // 수익도달시 { ExitLong("b1_익절",AtStop,Var1-PriceScale*SProfit,"b1",1) ; //익절ts ExitLong("b2_익절",AtStop,Var1-PriceScale*SProfit,"b2",1) ; //익절ts } If STrendDn==True Then //20일선꺽이면 ExitLong("b1ts_익절",OnClose,def,"b1ts") ; //익절TS if stime == 043000 or (stime > 043000 and stime[1] < 043000) then //장종료청산 ExitLong("bx_장종료"); } /* 매도포지션보유시*/ If MarketPosition == -1 Then { var2 = lowest(L,BarsSinceEntry) ; //저가 ExitShort("s1_손절",AtStop,EntryPrice+PriceScale*loss,"s1") ; //손절 ExitShort("s2_손절",AtStop,EntryPrice+PriceScale*loss,"s2") ; //손절 ExitShort("s1ts_손절",AtStop,EntryPrice+PriceScale*loss,"s1ts") ; //손절 If var2 <= EntryPrice-PriceScale*SProfit Then //본절 { ExitShort("s1_본절",AtStop,EntryPrice-PriceScale*2,"s1") ; ExitShort("s2_본절",AtStop,EntryPrice-PriceScale*2,"s2") ; ExitShort("s1ts_본절",AtStop,EntryPrice-PriceScale*2,"s1ts") ; } If var2 <= EntryPrice-PriceScale*Profit Then // 수익도달시 TS { ExitShort("s1_익절",AtStop,var2+PriceScale*loss,"s1") ; //익절 ExitShort("s2_익절",AtStop,var2+PriceScale*loss,"s2") ; //익절 } If var2 <= EntryPrice-PriceScale*Profit Then // 수익도달시 TS { var4 = Highest(H,4); //최근 4개봉의 고가돌파시 청산 # If var2 >= var4 Then # { ExitShort("ss1_익절",AtStop,var4,"s1",1) ; //익절 ExitShort("ss2_익절",AtStop,var4,"s2",1) ; //익절 # } } If STrendUp==True Then //20일선꺽이면 ExitShort("s1ts_익절",OnClose,def,"s1ts") ; //익절TS if stime == 043000 or (stime > 043000 and stime[1] < 043000) then //장종료청산 ExitShort("sx_장종료"); } ClearDebug(); MessageLog("B%s,%s, S%s,%s,BE %.f,SE%.f,Mp=%.f,CE=%.f",LTrendUp,STrendUp,LTrendDn,STrendDn,LongEntryCount,ShortEntrycount,MarketPosition,CurrentEntries ); 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템 문의드립니다. > 안녕하세요 예스스탁입니다. 식 내용에 대해 추가로 여줘볼 내용이 있습니다. 현재 작성하신 식이 올리식 글과 다른부분이 있습니다 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 > 금의환향 님이 쓴 글입니다. > 제목 : 시스템 문의드립니다. > 안녕하세요? 시스템트레이딩 막 입문한 초보입니다. 처음으로 전략을 짜서 모의거래에 돌려봤는데 엉뚱한 결과가 나오네요. 검토하시고 수정 좀 부탁드립니다. 전략내용은 대략 다음과 같습니다. <진입> 추세방향판단 : 60이평선 우상향 매수만. 우하향 매도만 매수: 60,20이평선 우상향. 전봉이 음봉이고 5일선아래서 양봉전환시 매도: 60,20이평선 우하향. 전봉이 양봉이고 5일선위에서 음봉전환시 당일2회(07:00~16:00,16:00~04:30) 트레이딩 시작후 최초매수면 2개매수,최초매도면 2개매도 단타포지션-단타목표치도달시 TS청산, 신호시 반복 재진입 추세포지션-20일이평선 반전시 청산 <청산> 손절 : -10틱 본절 : 10틱 수익시 진입가+2틱으로 손실방지 청산 : 단기포지션- 20틱 수익시 TS 청산 추세포지션- 20이평선 방향전환시 청산 장종료전 04:30 포지션 모두 정리 [질의내용] 1. stop 이 잘안먹히고 본절,청산시 손실이 30~150틱이 나오는데 이유를 잘 모르겠습니다. 2. 장종료 모두 청산되어야 하는데 다음날켜보면 청산안된 포지션이 남아있는데 왜 그런지 모르겠습니다. 혹시 0430 이전에 프로그램 종료후 당일매매종료라 생각하고 컴퓨터를 꺼버리기도 하는데 그경우에 문제가 발생하나요? 3. if MarketPosition == 0 and LongEntryCount == 0 and // 첫매수 countif(C<O and C < Sma1,10) >= 1 and crossup(c,Sma1) and C > O Then { buy("b1",OnClose,def,1); buy("b1ts",OnClose,def,1); LongEntryCount = LongEntryCount +1 ; 위 진입식에서 봉 완성후 진입하니 장대봉일경우 손실이 크던데 이평선 돌파 순간에 진입하는 방법은 없나요? 그리고 countif 적용을 10봉이 아니라 당일 거래오픈후로 바꾸고 싶은데 어떻게 바꾸어야 하나요? 4. 한계좌에서 위의전략을 오일과 금 해외선물에 동시에 실행하면 문제가 생기나요? 초보라 질문이 많네요. 아래내을 바로 전략실행할 수 있게 손 좀 봐주시길 부탁드립니다. 감사합니다.