커뮤니티

보완 부탁드리겠습니다.

프로필 이미지
엠제이
2012-09-21 21:06:41
367
글번호 54957
답변완료
아래 수식에 대해서 문의드립니다. 1분봉입니다. 파라미딩 : 다른신호만 허용 "아남전자"라는 종목에 대해서 9/21일에 매수를 하도록 했습니다. 해당 식을 돌려보면 매수11,매수12,매수13이 매수된후 수익1에서 일부 매도된후 주가가 계속 내려가서 끝나는데요 전일 봉의 일정 금액 아래로 내려오면 매수21~매수43까지 매수가 되야 될텐데 왜 매수가 안되는지 궁금합니다. 제가 구현하고 싶은 것은 매수11~43까지 당일에 한해서는 매수를 수행하며, 현재까지 매수된 부분에 대해서 수익이 발생한 경우에는 수익을 실현하며, 주가가 다시 하락시에 매수11~43에 올 경우 매수를 하고 싶습니다. 아남전자의 경우 매수11,12,13이 매수된후 수익1이 실현되고 매수21~43까지 하락된 가격에 따라서 매수가 되었으면 합니다. 아래 수식에 대해서 보완 부탁드리겠습니다. 늘 감사드립니다. Input : 투입금액(100000); Input : 매수일(20120921); var : 중간값1(0), 중간값2(0), 중간값3(0), 중간값4(0); var : 매수고가(0), 매도수량(0); var : 매수수량1(0), 매수수량2(0), 매수수량3(0), 매수수량4(0); var : 분할매수금액1(0), 분할매수금액2(0), 분할매수금액3(0), 분할매수금액4(0); 분할매수금액1 = (투입금액)/3; 분할매수금액2 = (투입금액*2)/3; 분할매수금액3 = (투입금액)/3; 분할매수금액4 = (투입금액*2)/3; if sdate == 매수일 then { 중간값2 = (DayClose(1) + DayLow(1))/2; 중간값1 = (DayClose(1) + 중간값2)/2; 중간값3 = (DayLow(1) + 중간값2)/2; 중간값4 = DayLow(1); if CodeCategory == 1 and BasePrice < 50000 Then { 매수수량1 = int(int(분할매수금액1/중간값1)/10)*10; 매수수량2 = int(int(분할매수금액2/중간값2)/10)*10; 매수수량3 = int(int(분할매수금액3/중간값3)/10)*10; 매수수량4 = int(int(분할매수금액4/중간값4)/10)*10; } Else { 매수수량1 = int(분할매수금액1/중간값1); 매수수량2 = int(분할매수금액2/중간값2); 매수수량3 = int(분할매수금액3/중간값3); 매수수량4 = int(분할매수금액4/중간값4); } } if (MarketPosition== 0 or (MarketPosition == 1 and countif(CurrentContracts < CurrentContracts[1],BarsSinceEntry) < 1)) Then { if sdate == 매수일 and stime < 144900 then { Buy("매수11", AtLimit, 중간값1+PriceScale, 매수수량1); Buy("매수12", AtLimit, 중간값1, 매수수량1); Buy("매수13", AtLimit, 중간값1-PriceScale, 매수수량1); Buy("매수21", AtLimit, 중간값2+PriceScale, 매수수량2); Buy("매수22", AtLimit, 중간값2, 매수수량2); Buy("매수23", AtLimit, 중간값2-PriceScale, 매수수량2); Buy("매수31", AtLimit, 중간값3+PriceScale, 매수수량3); Buy("매수32", AtLimit, 중간값3, 매수수량3); Buy("매수33", AtLimit, 중간값3-PriceScale, 매수수량3); Buy("매수41", AtLimit, 중간값4+PriceScale, 매수수량4); Buy("매수42", AtLimit, 중간값4, 매수수량4); Buy("매수43", AtLimit, 중간값4-PriceScale, 매수수량4); } } if MarketPosition == 1 then { if stime < 144900 then { if CurrentContracts > CurrentContracts[1] Then{ 매수고가 = H; if CodeCategory == 1 and BasePrice < 50000 Then 매도수량 = int(int(CurrentContracts*0.2)/10)*10; Else 매도수량 = int(CurrentContracts*0.2); } if H > 매수고가 Then 매수고가 = H; if 매수고가 < AvgEntryPrice*1.03 Then exitlong("수익1",atlimit,AvgEntryPrice*1.03,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.05 Then exitlong("수익2",atlimit,AvgEntryPrice*1.05,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.07 Then exitlong("수익3",atlimit,AvgEntryPrice*1.07,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.09 Then exitlong("수익4",atlimit,AvgEntryPrice*1.09,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.11 Then exitlong("수익5",atlimit,AvgEntryPrice*1.11,""); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-09-24 09:40:32

안녕하세요 예스스탁입니다. 진입식의 조건중 아래내용은 일부청산이 있을 경우 더이상 진입하지 않겠다는 내용입니다. 해당 내용 삭제하시면 됩니다. countif(CurrentContracts < CurrentContracts[1],BarsSinceEntry) < 1 즐거운 하루되세요 > 엠제이 님이 쓴 글입니다. > 제목 : 보완 부탁드리겠습니다. > 아래 수식에 대해서 문의드립니다. 1분봉입니다. 파라미딩 : 다른신호만 허용 "아남전자"라는 종목에 대해서 9/21일에 매수를 하도록 했습니다. 해당 식을 돌려보면 매수11,매수12,매수13이 매수된후 수익1에서 일부 매도된후 주가가 계속 내려가서 끝나는데요 전일 봉의 일정 금액 아래로 내려오면 매수21~매수43까지 매수가 되야 될텐데 왜 매수가 안되는지 궁금합니다. 제가 구현하고 싶은 것은 매수11~43까지 당일에 한해서는 매수를 수행하며, 현재까지 매수된 부분에 대해서 수익이 발생한 경우에는 수익을 실현하며, 주가가 다시 하락시에 매수11~43에 올 경우 매수를 하고 싶습니다. 아남전자의 경우 매수11,12,13이 매수된후 수익1이 실현되고 매수21~43까지 하락된 가격에 따라서 매수가 되었으면 합니다. 아래 수식에 대해서 보완 부탁드리겠습니다. 늘 감사드립니다. Input : 투입금액(100000); Input : 매수일(20120921); var : 중간값1(0), 중간값2(0), 중간값3(0), 중간값4(0); var : 매수고가(0), 매도수량(0); var : 매수수량1(0), 매수수량2(0), 매수수량3(0), 매수수량4(0); var : 분할매수금액1(0), 분할매수금액2(0), 분할매수금액3(0), 분할매수금액4(0); 분할매수금액1 = (투입금액)/3; 분할매수금액2 = (투입금액*2)/3; 분할매수금액3 = (투입금액)/3; 분할매수금액4 = (투입금액*2)/3; if sdate == 매수일 then { 중간값2 = (DayClose(1) + DayLow(1))/2; 중간값1 = (DayClose(1) + 중간값2)/2; 중간값3 = (DayLow(1) + 중간값2)/2; 중간값4 = DayLow(1); if CodeCategory == 1 and BasePrice < 50000 Then { 매수수량1 = int(int(분할매수금액1/중간값1)/10)*10; 매수수량2 = int(int(분할매수금액2/중간값2)/10)*10; 매수수량3 = int(int(분할매수금액3/중간값3)/10)*10; 매수수량4 = int(int(분할매수금액4/중간값4)/10)*10; } Else { 매수수량1 = int(분할매수금액1/중간값1); 매수수량2 = int(분할매수금액2/중간값2); 매수수량3 = int(분할매수금액3/중간값3); 매수수량4 = int(분할매수금액4/중간값4); } } if (MarketPosition== 0 or (MarketPosition == 1 and countif(CurrentContracts < CurrentContracts[1],BarsSinceEntry) < 1)) Then { if sdate == 매수일 and stime < 144900 then { Buy("매수11", AtLimit, 중간값1+PriceScale, 매수수량1); Buy("매수12", AtLimit, 중간값1, 매수수량1); Buy("매수13", AtLimit, 중간값1-PriceScale, 매수수량1); Buy("매수21", AtLimit, 중간값2+PriceScale, 매수수량2); Buy("매수22", AtLimit, 중간값2, 매수수량2); Buy("매수23", AtLimit, 중간값2-PriceScale, 매수수량2); Buy("매수31", AtLimit, 중간값3+PriceScale, 매수수량3); Buy("매수32", AtLimit, 중간값3, 매수수량3); Buy("매수33", AtLimit, 중간값3-PriceScale, 매수수량3); Buy("매수41", AtLimit, 중간값4+PriceScale, 매수수량4); Buy("매수42", AtLimit, 중간값4, 매수수량4); Buy("매수43", AtLimit, 중간값4-PriceScale, 매수수량4); } } if MarketPosition == 1 then { if stime < 144900 then { if CurrentContracts > CurrentContracts[1] Then{ 매수고가 = H; if CodeCategory == 1 and BasePrice < 50000 Then 매도수량 = int(int(CurrentContracts*0.2)/10)*10; Else 매도수량 = int(CurrentContracts*0.2); } if H > 매수고가 Then 매수고가 = H; if 매수고가 < AvgEntryPrice*1.03 Then exitlong("수익1",atlimit,AvgEntryPrice*1.03,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.05 Then exitlong("수익2",atlimit,AvgEntryPrice*1.05,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.07 Then exitlong("수익3",atlimit,AvgEntryPrice*1.07,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.09 Then exitlong("수익4",atlimit,AvgEntryPrice*1.09,"",매도수량,1); if 매수고가 < AvgEntryPrice*1.11 Then exitlong("수익5",atlimit,AvgEntryPrice*1.11,""); } }