input : 총투자금(4500000), period1(20); var : L10(0),cnt(0),sum(0),count(0); sum = 0; for count = 1 to Period1{ sum = sum + max(abs(dayclose(count+1)-DayHigh(count)),abs(Dayclose(count+1)-DayLow(count)),abs(dayhigh(count)-daylow(count))); } value1 = sum/period1; #일간 20 ATR value2 = int(총투자금*0.01)/(value1*3); value6 = 167000; #박스권상단 value7 = 159400; #박스권귀속 value8 = 163000; #전일 기준 10일 최저가 L10 = DayLow(1); for cnt = 1 to 10{ if DayLow(cnt) < L10 Then L10 = DayLow(cnt); } if MarketPosition == 0 and stime < 150000 and sdate >= 20100701 and ExitDate(1) != sdate Then{ if H <= value6 Then# 매수가격대 돌파시 매수. buy("first박스권이탈매수",AtStop,value6+PriceScale,value2); } #진입이 있을 때마다 value3에 value1저장 value4에 해당봉 고가저장 if MarketPosition == 1 and CurrentEntries > CurrentEntries[1] Then{ value3 = value1; value4 = H; } if MarketPosition == 1 and ExitDate(1) != sdate and countif(L < value8,BarsSinceEntry) < 1 Then{ if CurrentEntries == 1 Then{ buy("중간피라미딩",AtStop,H[BarsSinceEntry]+value3+PriceScale,value2); } if CurrentEntries == 2 Then{ buy("마지막피라미딩",AtStop,value4+value3+PriceScale,value2); } } if MarketPosition == 1 and ExitDate(1) != sdate then{ #진입이후에 한번만 value8을 하향하면 진입 if CurrentEntries == 1 and countif(L < value8,BarsSinceEntry) < 1 Then buy("b1",atlimit,value8,value2); #저가가 value8을 하향한적이 있을 경우(즉 b1이 진입한적이 있고),value6+value1을 상향하면 매수 if CurrentEntries == 2 and countif(L <= value8,BarsSinceEntry) >= 1 and H < value6+value1 Then buy("b2",atlimit,value6+value1,value2); } if MarketPosition == 1 Then{ if L >= L10-PriceScale Then# 부등호가 반대이어야 L7-PriceScale 위에 있다가 내려가면 청산입니다. exitlong("신저가",AtStop,L10-PriceScale); if L >= value4-value3*3 then # value4-value3*3 위에 있다가 내려가면 청산입니다. exitlong("변동성",AtStop,value4-value3*3); if L >= value6-value3*3 Then exitlong("손실청산",atstop,value6-value3*3); #박스권하향하면 청산. if L >= value7 Then exitlong("박스권귀속",atstop,value7-pricescale); #박스권하향하면 청산. }