커뮤니티

수식 매도 조건 수정 부탁합니다.

프로필 이미지
10년후에
2016-10-13 11:41:39
109
글번호 102883
답변완료
안녕하세요 좋은 아침입니다. 다름이 아니라 아래 수식에서 수정좀 부탁드리고자 글 남깁니다. 수익실현과 손절을 두고 많은 고민을 했습니다. 수익실현이야 현재가로 주문을 넣어서 만약에 체결되지 않아도 가끔 모니터링 해서 매도가 가능할건데 만약 손절조건에 걸려들어 손절을 현재가로 넣게 되면 급락하는 상황에서는 체결되지 않아 큰손실로 이어질까봐 조건을 변경 하려고 합니다. 또한 수익실현도 딱 3% 오면 수익실현이 아닌 수익의 극대화를 위해 수정을 하려고 합니다. 1. 수익실현은 보통주문으로 현재가매도를 하고 싶으며, 손절은 시장가주문을 하고 싶습니다. 방법을 알려주시면 감사하겠습니다. 2. 수익실현 조건 변경(변수넣어주시면 감사하겠습니다, 봉미완성시 기준) - 매수평단가대비 3% 수익에서 잔고 전체물량중 50%프로 매도하고 - 6%프로 수익에서 나머지 물량 정리 - 만약 3% 수익에서 반절 매도 후에 6%에 도달하지 못하고 고점대비 -2% 떨어지면 나머지 물량 모두 정리(ex. 수익5%권에 왔다가 -2%되면 수익3% 내고 거래끝나게) 3. 그리고 변수 매수금액 240만 지금 설정되어 있는데 이게 체결되서 가격보면 잔고를 보게되면 240만원에 미치지 못합니다. 현재가 기준으로 240만원어치 수량이 주문 나가지면 좋겠습니다. >>>>> input : stdlen(120),매수금액(2400000); input : Per1(6),Per2(4),Per3(1),Per4(-3),Per5(-6),Per6(-9); input : Profit(3),Loss(-10); var1 = (highest(H,stdlen)+lowest(L,stdlen))/2; if ExitDate(1) != sdate and MarketPosition >= 0 then{ if L > var1*(1+Per1/100) Then buy("b1",atlimit,var1*(1+Per1/100),floor(매수금액/C)); if L > var1*(1+Per2/100) Then buy("b2",atlimit,var1*(1+Per2/100),floor(매수금액/C)); if L > var1*(1+Per3/100) Then buy("b3",atlimit,var1*(1+Per3/100),floor(매수금액/C)); if L > var1*(1+Per4/100) Then buy("b4",atlimit,var1*(1+Per4/100),floor(매수금액/C)); if L > var1*(1+Per5/100) Then buy("b5",atlimit,var1*(1+Per5/100),floor(매수금액/C)); if L > var1*(1+Per6/100) Then buy("b6",atlimit,var1*(1+Per6/100),floor(매수금액/C)); } if MarketPosition == 1 then{ ExitLong("BP",atLimit,AvgEntryPrice*(1+Profit/100)); ExitLong("BL",AtStop,AvgEntryPrice*(1+Loss/100)); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-10-13 13:22:18

안녕하세요 예스스탁입니다. 문의하신 내용 가능하지 않습니다. 수식은 수식코드안에 주문가격을 지정하는 기능이 없습니다. 수식코드는 신호발생만 담당하고 신호가 발생하면 시스템 트레이딩 설정창의 매매가격에 지정한 가격으로 주문이 집행됩니다. 2번에 올려주신 내용으로 신호가 발생하게 수식만 수정해서 올려드립니다. 수량은 현재 최근 종가기준으로 수량을 산출합니다. 최대한 근접하게 수정해 드립니다. input : stdlen(120),매수금액(2400000); input : Per1(6),Per2(4),Per3(1),Per4(-3),Per5(-6),Per6(-9); input : Profit1(3),Profit2(6),Loss(-10); var1 = (highest(H,stdlen)+lowest(L,stdlen))/2; if ExitDate(1) != sdate and MarketPosition >= 0 then{ if L > var1*(1+Per1/100) Then buy("b1",atlimit,var1*(1+Per1/100),floor(매수금액/(var1*(1+Per1/100)))); if L > var1*(1+Per2/100) Then buy("b2",atlimit,var1*(1+Per2/100),floor(매수금액/(var1*(1+Per2/100)))); if L > var1*(1+Per3/100) Then buy("b3",atlimit,var1*(1+Per3/100),floor(매수금액/(var1*(1+Per3/100)))); if L > var1*(1+Per4/100) Then buy("b4",atlimit,var1*(1+Per4/100),floor(매수금액/(var1*(1+Per4/100)))); if L > var1*(1+Per5/100) Then buy("b5",atlimit,var1*(1+Per5/100),floor(매수금액/(var1*(1+Per5/100)))); if L > var1*(1+Per6/100) Then buy("b6",atlimit,var1*(1+Per6/100),floor(매수금액/(var1*(1+Per6/100)))); } if MarketPosition == 1 then{ if MaxContracts == CurrentContracts Then ExitLong("BP1",atLimit,AvgEntryPrice*(1+Profit1/100),"",Floor(MaxContracts*0.5),1); if MaxContracts < CurrentContracts Then{ ExitLong("BP2",atLimit,AvgEntryPrice*(1+Profit2/100)); ExitLong("Btr",AtStop,highest(H,BarsSinceEntry)*0.98); } ExitLong("BL",AtStop,AvgEntryPrice*(1+Loss/100)); } 즐거운 하루되세요 > 10년후에 님이 쓴 글입니다. > 제목 : 수식 매도 조건 수정 부탁합니다. > 안녕하세요 좋은 아침입니다. 다름이 아니라 아래 수식에서 수정좀 부탁드리고자 글 남깁니다. 수익실현과 손절을 두고 많은 고민을 했습니다. 수익실현이야 현재가로 주문을 넣어서 만약에 체결되지 않아도 가끔 모니터링 해서 매도가 가능할건데 만약 손절조건에 걸려들어 손절을 현재가로 넣게 되면 급락하는 상황에서는 체결되지 않아 큰손실로 이어질까봐 조건을 변경 하려고 합니다. 또한 수익실현도 딱 3% 오면 수익실현이 아닌 수익의 극대화를 위해 수정을 하려고 합니다. 1. 수익실현은 보통주문으로 현재가매도를 하고 싶으며, 손절은 시장가주문을 하고 싶습니다. 방법을 알려주시면 감사하겠습니다. 2. 수익실현 조건 변경(변수넣어주시면 감사하겠습니다, 봉미완성시 기준) - 매수평단가대비 3% 수익에서 잔고 전체물량중 50%프로 매도하고 - 6%프로 수익에서 나머지 물량 정리 - 만약 3% 수익에서 반절 매도 후에 6%에 도달하지 못하고 고점대비 -2% 떨어지면 나머지 물량 모두 정리(ex. 수익5%권에 왔다가 -2%되면 수익3% 내고 거래끝나게) 3. 그리고 변수 매수금액 240만 지금 설정되어 있는데 이게 체결되서 가격보면 잔고를 보게되면 240만원에 미치지 못합니다. 현재가 기준으로 240만원어치 수량이 주문 나가지면 좋겠습니다. >>>>> input : stdlen(120),매수금액(2400000); input : Per1(6),Per2(4),Per3(1),Per4(-3),Per5(-6),Per6(-9); input : Profit(3),Loss(-10); var1 = (highest(H,stdlen)+lowest(L,stdlen))/2; if ExitDate(1) != sdate and MarketPosition >= 0 then{ if L > var1*(1+Per1/100) Then buy("b1",atlimit,var1*(1+Per1/100),floor(매수금액/C)); if L > var1*(1+Per2/100) Then buy("b2",atlimit,var1*(1+Per2/100),floor(매수금액/C)); if L > var1*(1+Per3/100) Then buy("b3",atlimit,var1*(1+Per3/100),floor(매수금액/C)); if L > var1*(1+Per4/100) Then buy("b4",atlimit,var1*(1+Per4/100),floor(매수금액/C)); if L > var1*(1+Per5/100) Then buy("b5",atlimit,var1*(1+Per5/100),floor(매수금액/C)); if L > var1*(1+Per6/100) Then buy("b6",atlimit,var1*(1+Per6/100),floor(매수금액/C)); } if MarketPosition == 1 then{ ExitLong("BP",atLimit,AvgEntryPrice*(1+Profit/100)); ExitLong("BL",AtStop,AvgEntryPrice*(1+Loss/100)); }