커뮤니티

729번 답변에 대한 추가 질문

프로필 이미지
오토
2014-01-13 13:09:22
878
글번호 222777
답변완료
안녕하세요. ^^ 답변 주신 내용은 주식매매에서 트레일링 인데요. 손절부분에 lowest 함수를 이용해서 추가를 하고 싶은데... 여러방법을 찾아봤지만.. 답이 안나와서 글을 남깁니다. ㅠㅠ A = 10일간의 평균 변동폭 B = 당일고가 - 진입가 C = 진입가 - (A - B) C값을 손절가격으로 할려는데... 잘 안되네요. 부탁드립니다. ^^
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-01-22 17:27:14

안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. var Nth = 0; var ItemCode = new Array(200); var ItemObject = new Array(200); var ItemHigh = new Array(200); var ItemRange = new Array(200); var Bnum; function Main_OnStart() { Nth = 0; Bnum = Account1.GetTheNumberOfBalances() Main.MessageList("잔고종목수",Bnum); if (Bnum > 0) { //계좌의 잔고리스트에서 첫번째 잔고 셋팅 Account1.SetBalanceIndex(Nth);//잔고는 순번이 0부터 시작 //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //1번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 20,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } } //요청한 종목객체 수신되면 function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체수신",MarketData.code); //수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에 if (MarketData.code == ItemCode[Nth]) { ItemObject[Nth] = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 ItemHigh[Nth] = 0; //ItemHigh의 [Nth]방의 값을 0으로 셋팅 (이후 최고값 계산해 저장할 변수) //최근 10일간 평균 변동폭 계산해서 저 var sum = 0; for (var j = 1; j <= 10; j++) { sum = sum+ (ItemObject[Nth].GetPrevHigh(j)-ItemObject[Nth].GetPrevLow(j)); } ItemRange[Nth] = sum/10; Main.MessageList(Nth,"번째","종목객체생성완료 : ",ItemObject[Nth].code); //순번은 1 증가 Nth = Nth+1; //종목객체 수신완료되면 다음 종목 종목객체 요청 if (Bnum > 0) { //계좌의 잔고리스트에서 다음 순번 잔고 셋팅 Account1.SetBalanceIndex(Nth); //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //Nth번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 20,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } } } //잔고에 종목이 추가된다면 function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID) //*삭제 { if (sAccntNum == Account1.number && lUp*dateID == 30001) //*삭제 { Nth = Nth+1; //1번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code,20,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목객체요청",Account1.Balance.code); } } //종목객체 시세 업데이트 function Main_OnUp*dateMarket(sItemCode, lUp*dateID)// *제거 { //편입된 종목수 만&#53380;만 수행 for (var i = 0; i < Nth; i++) { if (ItemObject[i].code == sItemCode && lUp*dateID == 20001)// *제거 { Main.MessageList("-----------------------------------------------"); Main.MessageList(ItemObject[i].code,"업데이트"); //잔고셋팅 Account1.SetBalanceItem(ItemObject[i].code,0); //종목편입 이후의 최고가 계산 if (ItemObject[i].current > ItemHigh[i]) { ItemHigh[i] = ItemObject[i].current; } //매수잔고 if (Account1.Balance.position == 2) { //현재가가 평균단가 대비 10%이상 상승하면 목표이익 매도 if (ItemObject[i].current >= Account1.Balance.avgUnitCost*1.10) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("수익청산 : ",ItemObject[i].code,"종목객체삭제"); } // 현재가가 평균단가 대비 5%이상 하락하면 손절매도 if (ItemObject[i].current <= Account1.Balance.avgUnitCost-(ItemRange[i]-(ItemObject[i].high - Account1.Balance.avgUnitCost))) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("손절청산 : ",ItemObject[i].code,"종목객체삭제"); } //현재가가 평균단가 대비 7% 이상 상승후 평균단가+5%까지 하락하면 매도주문 if (ItemHigh[i] >= Account1.Balance.avgUnitCost*1.07 && ItemObject[i].current <= Account1.Balance.avgUnitCost*1.05) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count, 0,1); //주문 후 해당 종목객체 삭제 Main.RemoveMarketData(ItemObject[i]); Main.MessageList("TR청산 : ",ItemObject[i].code,"종목객체삭제"); } } Main.MessageList("-----------------------------------------------"); Main.MessageList("종 목 : ",ItemObject[i].code); Main.MessageList("평균단가 : ",Account1.Balance.avgUnitCost); Main.MessageList("현 재 가 : ",ItemObject[i].current); Main.MessageList("진입최고 : ",ItemHigh[i]); } } } 즐거운 하루되세요 > 오토 님이 쓴 글입니다. > 제목 : 729번 답변에 대한 추가 질문 > 안녕하세요. ^^ 답변 주신 내용은 주식매매에서 트레일링 인데요. 손절부분에 lowest 함수를 이용해서 추가를 하고 싶은데... 여러방법을 찾아봤지만.. 답이 안나와서 글을 남깁니다. ㅠㅠ A = 10일간의 평균 변동폭 B = 당일고가 - 진입가 C = 진입가 - (A - B) C값을 손절가격으로 할려는데... 잘 안되네요. 부탁드립니다. ^^