시스템트레이딩온라인강좌 (2012) ( 제 2 강 : 시스템전략 ) 하이투자증권
목차 01 시스템전략개발과정 02 시스템전략의구성 03 시스템전략유형 04 추세추종형전략예 05 역추세추종전략예 06 변동성돌파전략예 07 비가격데이터전략예 08 합성전략예
01 시스템전략개발과정 사전준비 정보수집단계시스템전략수립단계시스템검증 / 평가단계시스템개선단계 매매대상시장선택 매매대상종목선택 시스템트레이딩툴선택 테스트데이터기간선택 시간주기선택 전략백테스트 시스템트레이딩설정 매매신호의확인 시스템평가 성능보고서분석 포트폴리오분석 전략유형 추세추종형, 역추세추종형 포지션트레이딩, 데이트레이딩 리버스전략, 비리버스전략 진입규칙과청산규칙 지표, 패턴을이용한전략 필터, 재진입 시스템전략코딩 랭귀지작성 전략작성검증 최적화 최적변수추출 과최적화의금지 전진분석 고정식과회전식전진분석 전진효율
02 시스템전략의구성 시스템전략의구성 진입규칙 -신규로포지션을보유하는시점과방법을정하는규칙 -시스템전략의유형에따라서진입규칙을선택 필터기법 -속임수신호를피하고진입의정확성을높이고자하는기법 청산규칙 -기술적지표를이용한청산, 손익한도관리청산 -손실한도의설정방법과범위 재진입규칙 -청산후시장이원래의방향으로진행될때의진입 -목표수익청산이나추적청산후에사용 구분 방향성확인필터 추세확인필터 변동성확인필터 매매시간제어필터 매매횟수제어필터 < 필터의사용예 > 필터내용현재봉종가가당일시가보다클경우만매수당일시가가전일고가보다클경우만매수당일최고가가전일최고가보다클경우만매수현재봉종가가 20봉최고가보다클경우만매수 swinglow저점이직전보다높을때만매수매수호가잔량이매도호가잔량보다클경우만매수현재가가피봇기준선위일경우만매수 20일이동평균선이상승중일경우만매수 5, 20, 60일이동평균선정배열일경우만매수 ADX지표가상승중일경우만진입 ADX지표가 40 미만일경우만진입단기 ATR이장기 ATR보다작은경우만매수볼린져밴드폭이축소된상태에서만매수당일시가-당일최저가의폭이 X 미만일경우만매수 14시 30분이후에는진입금지 11시이후에는리버스진입금지청산후일정봉이내에서는진입금지당일 1회만거래당일내동일방향진입금지수익거래청산시에는리버스진입금지손절청산발생시당일추가진입금지큰수익발생시다음거래진입금지
03 시스템전략유형 시스템전략유형의선택 추세추종형전략, 역추세추종형전략, 변동성돌파전략, 비가격전략, 합성전략 포지션트레이딩, 데이트레이딩 리버스전략, 비리버스전략 추세추종형전략 특징 : 낮은승률과높은평균손익비, 추세에의존적 지표 : 이동평균선, macd, Sona, ADX 와 DMI, 파라볼릭, TRIX
03 시스템전략유형 역추세추종형전략 특징 : 높은승률과낮은평균손익비, 박스권매매에유리 지표 : 스토캐스틱, RSI, 심리도, CCI, 지지선과저항선, 전고점전저점 주의점 : 추세지표를이용했다고꼭추세시스템이되는것은아니며마찬가지로역추세지표를이용했다고꼭역추세시스템이되는것은아님
03 시스템전략유형 변동성돌파전략 특징 : 높은승률과낮은평균손익비, 가격의급등락을이용한전략 지표 : ATR, 볼린져밴드, 표준편차, 전일고가와저가의폭, 일간갭, 디마크, 피봇, 특정시간동안의변동폭
03 시스템전략유형 비가격데이터전략 내용 : 가격이외의데이터를이용한전략 비가격데이터 : 거래량, 거래대금, 호가잔량, 호가건수, 미결제약정, 투자주체별매매현황, 프로그램매매현황 주의점 : 1) 가격이외의데이터를이용하여전략을작성한다는점 2) 우연히가격과상관성이높은데이터가추출될수있다는점 합성전략 내용 : 여러개의전략을하나의전략으로합성 ( 전략유형간합성 ) 특징 : 전략유형간합성으로전체구간의손익변동성을완화시킬수있음 주의점 : 과최적화의위험성, 신호간충돌문제, 개별전략의특징상실
04 추세추종형전략예 지수이동평균선교차전략 // 수수료 0.005, 슬리피지 0.025pt input : P1(10), p2(100); // 10, 1000 if CrossUp( ema(c,p1), ema(c,p2) ) Then buy(); if CrossDown( ema(c,p1), ema(c,p2) ) Then sell(); SetStopEndofday(1504);
04 추세추종형전략예 스토캐스틱 K_D 교차전략 input : p1(50), p2(40), p3(30); //1200, 100, 100 var : stok(0), stod(0); stok = StochasticsK(p1,p2); stod = StochasticsD(p1,p2,p3); if CrossUp(stoK, stod) Then buy(); if CrossDown(stoK, stod) Then sell(); SetStopEndofday(1504);
05 역추세추종전략예 다이버젼스전략 (Advance Decline Divergence) [ 지표식 ] Inputs: Len(4); var1 = ema( (C - O) / (H - L) * Volume, len); plot1(var1); [ 시스템식은아래사이트참조 ] http://blog.naver.com/chartist/30101176292
06 변동성돌파전략예 30MBO 응용 input : starttime(90000), endtime(93500), AtrMult(4.5); Var1 = TimeHigh(startTime,endTime); Var2 = TimeLow(startTime,endTime); if stime < 143000 and stime > endtime and EntriesToday(date) < 1 then { if bids > asks * 2 then buy("b", AtStop, Var1); if bids < asks / 2 then Sell("S", AtStop, Var2); If marketposition <> 0 Then { exitlong("el_ 추적 ATR",Atstop,Highest(H,BarsSinceEntry+1)- ATR(30)*AtrMult); exitshort("es_ 추적 ATR",Atstop, Lowest(L,BarsSinceEntry+1)+ATR(30)*AtrMult); If stime > 142000 Then { If Ema(C,2) < Ema(C,10) Then ExitLong("EL2", AtStop, Lowest(L,3)); If Ema(C,2) >= Ema(C,10) Then ExitShort("ES2", AtStop, Highest(H,3)); SetStopEndofday(1504);
06 변동성돌파전략예 일간변동성돌파전략 input : Mult(0.35),AtrLen(3.2); var1 = (dayhigh(1)-daylow(1))*mult; Condition1= date==exitdate(1) And marketposition(1)==1; Condition2= date==exitdate(1) And marketposition(1)==-1; If stime < 150000 Then { If Condition1==False and MarketPosition <> 1 Then { If dayopen> dayclose(1)+0.3 Then buy(" 매수 1",Atstop,dayOpen+var1); If Condition2==False and MarketPosition <> -1 Then { If dayopen<dayclose(1)-0.3 Then sell(" 매도 4",Atstop,dayOpen-var1); If marketposition<>0 Then { exitlong(" 매수청산 ",Atstop,highest(high,barssinceentry+1)-atr(20)*AtrLen); exitshort(" 매도청산 ",Atstop,lowest(low,barssinceentry+1)+atr(20)*AtrLen); Setstopendofday(1504);
07 비가격데이터전략예 다우지수참조전략 Input : BAMult(1.8); #data2 : 다우존스산업지수일봉 Condition1 = data2(c) > data2(c[1]); If DayIndex == 0 Then { If Condition1 == False Then Buy(); If condition1 == True Then Sell(); SetStopEndofday(1504);
08 합성전략예 피봇합성전략 Input : BarEntNum(20), AtrMult1(5.5), AtrMult2(3.5); Var : 피봇 (0), 저항 1(0), 저항 2(0), 지지 1(0), 지지 2(0); 피봇 = (DayHigh(1)+DayLow(1)+DayClose(1))/3;; 저항 1 = 2 * 피봇 -DayLow(1); 저항 2 = 피봇 + DayHigh(1)-DayLow(1); 지지 1 = 2 * 피봇 - DayHigh(1); 지지 2 = 피봇 - DayHigh(1)+DayLow(1); If EntriesToday(Date) < 1 Then { If CrossUp(C, 저항 2) Then Buy(" 추세매수 "); If CrossDown(C, 지지 2) Then Sell(" 추세매도 "); If CrossUp(C, 지지 1) and DayLow<=DayLow(1) Then Buy(" 역추세매수 "); If CrossDown(C, 저항 1) and dayhigh >= dayhigh(1) Then Sell(" 역추세매도 "); If MarketPosition <> 0 Then { ExitLong("EL1", AtStop, Highest(H, BarsSinceEntry+1)-ATR(30)*AtrMult1); ExitShort("ES1", AtStop, Lowest(L, BarsSinceEntry+1)+ATR(30)*AtrMult1); SetStoploss(2, PercentStop); SetStopEndofday(150400);
시스템전략참조사이트 http://blog.naver.com/chartist 수고하셨습니다!