커뮤니티

한번 진입후 여러번 분할 청산시

프로필 이미지
brucehan
2010-08-14 18:30:58
669
글번호 31579
답변완료
한번 진입후 여러번 분할하여 청산시 동일한 청산이름으로 분할하여 청산이 안되나요? 예를 들면 input : 매수일자(20100108), 매매기준가(0),매도대상수량(100), 분할스텝수(5), 분할폭_퍼센트(1); var :거래기준가(0), 매매수량(0), 매도잔량(0), 비중(0), 찌꺼기(0), stp(1), check_price(0), max_stp(1); if date == 매수일자 then { if MarketPosition() <> 1 then { max_stp = 분할스텝수; if max_stp > 5 then max_stp = 5; else if max_stp < 1 then max_stp = 1; buy("매수1", OnClose, DEF, 매도대상수량); 매도잔량 = 매도대상수량; if 매매기준가 == 0 then 거래기준가 = C; else 거래기준가 = 매매기준가; } } if date >= 매수일자 and stp <= max_stp then { if max_stp == 2 then { if stp==1 then {비중=0.7; check_price= 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중 = 0.3; ; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } else if max_stp == 3 then { if stp == 1 then { 비중 = 0.5; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 2 then { 비중 = 0.3; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중 = 0.2; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } else if max_stp == 4 then { if stp == 1 then { 비중=0.4; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 2 then { 비중=0.3; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp==3 then { 비중 = 0.2; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중=0.1; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } else if max_stp == 5 then { if stp == 1 then { 비중 = 0.4; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 2 then { 비중 = 0.3; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 3 then { 비중 = 0.15; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 4 then { 비중 = 0.1; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중 = 0.05; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } if c > check_price /*and c[1] <= check_price*/ then { if stp == max_stp then 매매수량 = int(매도잔량/10)*10; else 매매수량 = int(매도대상수량*비중/10)*10; exitlong("청산#", OnClose, DEF, "", 매매수량, 1); stp = stp + 1; 매도잔량 = 매도잔량 - 매매수량; } } 의 경우 처음 한번만 청산되고 그 후는 청산이 안되는데요. 제가 코딩을 잘못 한 것인가요? 부탁드립니다. 꾸벅!!!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2010-08-16 10:35:57

안녕하세요 예스스탁입니다. 청산함수는 하나의 거래에서 한번식만 발동됩니다. 그러므로 분할청산하실 경우에는 경우의 수에 맞게 청산함수가 있어야 발동가능합니다. ex) 3번 분할청산 --> 청산함수 3개 즐거운 하루되세요 > brucehan 님이 쓴 글입니다. > 제목 : 한번 진입후 여러번 분할 청산시 > 한번 진입후 여러번 분할하여 청산시 동일한 청산이름으로 분할하여 청산이 안되나요? 예를 들면 input : 매수일자(20100108), 매매기준가(0),매도대상수량(100), 분할스텝수(5), 분할폭_퍼센트(1); var :거래기준가(0), 매매수량(0), 매도잔량(0), 비중(0), 찌꺼기(0), stp(1), check_price(0), max_stp(1); if date == 매수일자 then { if MarketPosition() <> 1 then { max_stp = 분할스텝수; if max_stp > 5 then max_stp = 5; else if max_stp < 1 then max_stp = 1; buy("매수1", OnClose, DEF, 매도대상수량); 매도잔량 = 매도대상수량; if 매매기준가 == 0 then 거래기준가 = C; else 거래기준가 = 매매기준가; } } if date >= 매수일자 and stp <= max_stp then { if max_stp == 2 then { if stp==1 then {비중=0.7; check_price= 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중 = 0.3; ; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } else if max_stp == 3 then { if stp == 1 then { 비중 = 0.5; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 2 then { 비중 = 0.3; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중 = 0.2; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } else if max_stp == 4 then { if stp == 1 then { 비중=0.4; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 2 then { 비중=0.3; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp==3 then { 비중 = 0.2; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중=0.1; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } else if max_stp == 5 then { if stp == 1 then { 비중 = 0.4; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 2 then { 비중 = 0.3; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 3 then { 비중 = 0.15; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else if stp == 4 then { 비중 = 0.1; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } else { 비중 = 0.05; check_price = 거래기준가*(1+분할폭_퍼센트*stp/100); } } if c > check_price /*and c[1] <= check_price*/ then { if stp == max_stp then 매매수량 = int(매도잔량/10)*10; else 매매수량 = int(매도대상수량*비중/10)*10; exitlong("청산#", OnClose, DEF, "", 매매수량, 1); stp = stp + 1; 매도잔량 = 매도잔량 - 매매수량; } } 의 경우 처음 한번만 청산되고 그 후는 청산이 안되는데요. 제가 코딩을 잘못 한 것인가요? 부탁드립니다. 꾸벅!!!