커뮤니티

부탁드립니다.

프로필 이미지
너무조아
2016-12-23 13:53:52
1984
글번호 224072
답변완료
1.아래 수식에서는 현재 1계약의 포지션이 있는경우 반대포지션으로의 1계약 진입을 위하여는, 청산과 진입을 위하여 2계약 (VV = 2;) 이 동시에 주문체결하게 됩니다. 이를 5초간의 시간차를 두고 1계약씩 주문체결 되도록 수식을 변경 하여 주시면 감사 하겠습니다. 2. 매수 미완성신호발생을 IncompleteSignal.signalKind == 1 로 매도 미완성신호발생을 IncompleteSignal.signalKind == 3 으로 하면 미완성신호가 없는 경우의 표기는 IncompleteSignal.signalKind == 0 으로 하면 되나요? var T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(KP.code); } function C1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("미완성신호발생/" + IncompleteSignal.signalKind); A1.SetBalance(Main.GetOrderCode(IncompleteSignal.code)) if ((A1.Balance.position == 1 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 1) { T = 1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(1,10000); } if ( A1.Balance.position == 1 && IncompleteSignal.signalKind == 3) { T = 0; Main.KillTimer(1); Main.SetTimer(2,10000); } if ((A1.Balance.position == 2 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 3) { T = -1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(2,10000); } if (A1.Balance.position == 2 && IncompleteSignal.signalKind == 1) { T = 0; Main.KillTimer(2); Main.SetTimer(1,10000); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && T == 1) { Main.KillTimer(1); A1.OrderBuy(KP.code, VV, KP.Ask(5),2); Main.MessageLog("매수진입"); } if (nEventID == 1 && T == 0) { Main.KillTimer(1); Main.MessageLog("중복매수진입금지"); } if (nEventID == 2 && T == -1) { Main.KillTimer(2); A1.OrderSell(KP.code, VV, KP.Bid(5),2); Main.MessageLog("매도진입"); } if (nEventID == 2 && T == 0) { Main.KillTimer(2); Main.MessageLog("중복매도진입금지"); } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-12-29 15:56:51

안녕하세요 예스스탁입니다. 1. var T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(KP.code); } function C1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("미완성신호발생/" + IncompleteSignal.signalKind); A1.SetBalance(Main.GetOrderCode(IncompleteSignal.code)) if ((A1.Balance.position == 1 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 1) { T = 1; if (A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(1,10000); } if ( A1.Balance.position == 1 && IncompleteSignal.signalKind == 3) { T = 0; Main.KillTimer(1); Main.SetTimer(2,10000); } if ((A1.Balance.position == 2 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 3) { T = -1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(2,10000); } if (A1.Balance.position == 2 && IncompleteSignal.signalKind == 1) { T = 0; Main.KillTimer(2); Main.SetTimer(1,10000); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && T == 1) { Main.MessageLog("매수진입"); Main.KillTimer(1); if (VV >= 1 && VV <= 2) { A1.OrderBuy(KP.code, 1, KP.Ask(5),2); } if (VV == 2) { Main.SetTimer(11,5000); } } if (nEventID == 1 && T == 0) { Main.KillTimer(1); Main.MessageLog("중복매수진입금지"); } if (nEventID == 2 && T == -1) { Main.MessageLog("매도진입"); Main.KillTimer(2); if (VV >= 1 && VV <= 2) { A1.OrderSell(KP.code, 1, KP.Bid(5),2); } if (VV == 2) { Main.SetTimer(22,5000); } } if (nEventID == 2 && T == 0) { Main.KillTimer(2); Main.MessageLog("중복매도진입금지"); } if (nEventID == 11) { Main.KillTimer(11); A1.OrderBuy(KP.code, 1, KP.Ask(5),2); } if (nEventID == 22) { Main.KillTimer(22); A1.OrderSell(KP.code, 1, KP.Bid(5),2); } } 2 자바스크립트는 이벤트 중심의 언어입니다. 어떤 이벤트가 발생하면 어떤 이벤트인지 정보를 확인하는 작업을 하게 됩니다. IncompleteSignal.signalKind는 function C1_OnRiseIncompleteSignal(IncompleteSignal)이벤트가 발생할때만 실행됩니다. 이벤트가 없으면 해당 이벤트 안의 로직은 수행하지 않습니다. 즉 미완성 신호가 발생할때만 값이 전달되고 이벤트 안의 로직이 수행되므로 이벤트가 IncompleteSignal.signalKind는 0을 가질수 없습니다. 즐거운 하루되세요 > 너무조아 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 1.아래 수식에서는 현재 1계약의 포지션이 있는경우 반대포지션으로의 1계약 진입을 위하여는, 청산과 진입을 위하여 2계약 (VV = 2;) 이 동시에 주문체결하게 됩니다. 이를 5초간의 시간차를 두고 1계약씩 주문체결 되도록 수식을 변경 하여 주시면 감사 하겠습니다. 2. 매수 미완성신호발생을 IncompleteSignal.signalKind == 1 로 매도 미완성신호발생을 IncompleteSignal.signalKind == 3 으로 하면 미완성신호가 없는 경우의 표기는 IncompleteSignal.signalKind == 0 으로 하면 되나요? var T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(KP.code); } function C1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("미완성신호발생/" + IncompleteSignal.signalKind); A1.SetBalance(Main.GetOrderCode(IncompleteSignal.code)) if ((A1.Balance.position == 1 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 1) { T = 1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(1,10000); } if ( A1.Balance.position == 1 && IncompleteSignal.signalKind == 3) { T = 0; Main.KillTimer(1); Main.SetTimer(2,10000); } if ((A1.Balance.position == 2 || A1.Balance.position == 0) && IncompleteSignal.signalKind == 3) { T = -1; if(A1.Balance.position == 0) VV = 1; else VV = 2; Main.SetTimer(2,10000); } if (A1.Balance.position == 2 && IncompleteSignal.signalKind == 1) { T = 0; Main.KillTimer(2); Main.SetTimer(1,10000); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && T == 1) { Main.KillTimer(1); A1.OrderBuy(KP.code, VV, KP.Ask(5),2); Main.MessageLog("매수진입"); } if (nEventID == 1 && T == 0) { Main.KillTimer(1); Main.MessageLog("중복매수진입금지"); } if (nEventID == 2 && T == -1) { Main.KillTimer(2); A1.OrderSell(KP.code, VV, KP.Bid(5),2); Main.MessageLog("매도진입"); } if (nEventID == 2 && T == 0) { Main.KillTimer(2); Main.MessageLog("중복매도진입금지"); } }