커뮤니티

문의_pointless

프로필 이미지
좌오비우오비
2024-08-03 15:09:14
658
글번호 226050
답변완료
<p>1. 게시판 답변글에다 시간청산내용을 추가해보았습니다. 내용이 맞는지 검토해주십시요. 2. 익절과 손절 내용 추가해주십시요.&nbsp; &nbsp;&nbsp;&nbsp;- 익절 내용 : 잔고가 +50,000원 되면 모두 청산 &nbsp;&nbsp;&nbsp;- 손절 내용 : 잔고가 -50,000원 되면 모두 청산&nbsp;&nbsp; 3. 한세트 진입하고 청산하면 그 다음 거래는 안한다는 내용을 추가해주십시요. 항상 고맙습니다. ***************************************************************************** function Main_OnStart() { &nbsp;&nbsp;&nbsp;&nbsp;Main.SetTimer(1, 5000);&nbsp;&nbsp;// 5초마다 타이머 이벤트 발생 &nbsp;&nbsp;&nbsp;&nbsp;Main.SetTimer(2, 60000);&nbsp;&nbsp;// 1분마다 타이머 이벤트 발생 } function Main_OnTimer(nEventID) { &nbsp;&nbsp;&nbsp;&nbsp;var d = new Date();&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds(); &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if (nEventID == 1) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (HHMMSS &gt;= 084600)&nbsp;&nbsp;// 오전 8시 46분 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.KillTimer(1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C1 = ""; CD1 = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C2 = ""; CD2 = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1 = ""; PD1 = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2 = ""; PD2 = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i = -Option1.lowersATM; i &lt;= Option1.uppersATM; i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Option1.GetCurrent(0, i) &lt;= 1.0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (CD1 == -1 || (CD1 &gt; 0 &amp;&amp; 1.0 - Option1.GetCurrent(0, i) &lt; CD1)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CD1 = 1.0 - Option1.GetCurrent(0, i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C1 = Option1.GetATMCallRecent(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Option1.GetCurrent(0, i) &lt;= 0.5) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (CD2 == -1 || (CD2 &gt; 0 &amp;&amp; 0.5 - Option1.GetCurrent(0, i) &lt; CD2)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CD2 = 0.5 - Option1.GetCurrent(0, i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C2 = Option1.GetATMCallRecent(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Option1.GetCurrent(1, -i) &lt;= 1.2) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (PD1 == -1 || (PD1 &gt; 0 &amp;&amp; 1.2 - Option1.GetCurrent(1, -i) &lt; PD1)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PD1 = 1.2 - Option1.GetCurrent(1, -i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1 = Option1.GetATMPutRecent(-i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Option1.GetCurrent(1, -i) &lt;= 0.5) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (PD2 == -1 || (PD2 &gt; 0 &amp;&amp; 0.5 - Option1.GetCurrent(1, -i) &lt; PD2)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PD2 = 0.5 - Option1.GetCurrent(1, -i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2 = Option1.GetATMPutRecent(-i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (C1 != "" &amp;&amp; C2 != "") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderSell(C1, 1, Option1.GetBid(C1, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderSell(C2, 1, Option1.GetBid(C2, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (P1 != "" &amp;&amp; P2 != "") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderSell(P1, 1, Option1.GetBid(P1, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderSell(P2, 1, Option1.GetBid(P2, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if (nEventID == 2) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 15시 청산 조건 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (HHMMSS &gt;= 150000 &amp;&amp; HHMMSS &lt; 150100) { // 15시 1분에 청산 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closePositions(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.KillTimer(2);&nbsp;&nbsp;// 타이머 2 종료 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} } function closePositions() { &nbsp;&nbsp;&nbsp;&nbsp;// Call 포지션 청산 &nbsp;&nbsp;&nbsp;&nbsp;if (C1 != "" &amp;&amp; C2 != "") { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderBuy(C1, 1, Option1.GetAsk(C1, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderBuy(C2, 1, Option1.GetAsk(C2, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;// Put 포지션 청산 &nbsp;&nbsp;&nbsp;&nbsp;if (P1 != "" &amp;&amp; P2 != "") { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderBuy(P1, 1, Option1.GetAsk(P1, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderBuy(P2, 1, Option1.GetAsk(P2, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;} }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-08-05 18:30:16

안녕하세요 예스스탁입니다. 시간청산 내용은 맞게 작성하셨습니다. 4개 종목의 손익이 +-5만이면 청산되게 추가해 드립니다. var entry = false; function Main_OnStart() { Main.SetTimer(1, 5000); // 5초마다 타이머 이벤트 발생 Main.SetTimer(2, 60000); // 1분마다 타이머 이벤트 발생 entry = false; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds(); if (nEventID == 1) { if (HHMMSS >= 084600 && entry == false) // 오전 8시 46분 { Main.KillTimer(1); C1 = ""; CD1 = -1; C2 = ""; CD2 = -1; P1 = ""; PD1 = -1; P2 = ""; PD2 = -1; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { if (Option1.GetCurrent(0, i) <= 1.0) { if (CD1 == -1 || (CD1 > 0 && 1.0 - Option1.GetCurrent(0, i) < CD1)) { CD1 = 1.0 - Option1.GetCurrent(0, i); C1 = Option1.GetATMCallRecent(i); } } if (Option1.GetCurrent(0, i) <= 0.5) { if (CD2 == -1 || (CD2 > 0 && 0.5 - Option1.GetCurrent(0, i) < CD2)) { CD2 = 0.5 - Option1.GetCurrent(0, i); C2 = Option1.GetATMCallRecent(i); } } if (Option1.GetCurrent(1, -i) <= 1.2) { if (PD1 == -1 || (PD1 > 0 && 1.2 - Option1.GetCurrent(1, -i) < PD1)) { PD1 = 1.2 - Option1.GetCurrent(1, -i); P1 = Option1.GetATMPutRecent(-i); } } if (Option1.GetCurrent(1, -i) <= 0.5) { if (PD2 == -1 || (PD2 > 0 && 0.5 - Option1.GetCurrent(1, -i) < PD2)) { PD2 = 0.5 - Option1.GetCurrent(1, -i); P2 = Option1.GetATMPutRecent(-i); } } } if (C1 != "" && C2 != "") { Account1.OrderSell(C1, 1, Option1.GetBid(C1, 5), 0); Account1.OrderSell(C2, 1, Option1.GetBid(C2, 5), 0); } if (P1 != "" && P2 != "") { Account1.OrderSell(P1, 1, Option1.GetBid(P1, 5), 0); Account1.OrderSell(P2, 1, Option1.GetBid(P2, 5), 0); } if (C1 != "" && C2 != "" && P1 != "" && P2 != "") { entry = true; } } } if (nEventID == 2) { if (entry == true && HHMMSS < 150000) { var sumPL = 0; Account1.SetBalance(C1,0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { sumPL = sumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } Account1.SetBalance(C2,0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { sumPL = sumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } Account1.SetBalance(P1,0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { sumPL = sumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } Account1.SetBalance(P2,0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { sumPL = sumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } if (sumPL*250000 >= 50000 or sumPL*250000 <= -50000) { closePositions(); Main.KillTimer(2); // 타이머 2 종료 } } // 15시 청산 조건 if (HHMMSS >= 150000 && HHMMSS < 150100) { closePositions(); Main.KillTimer(2); // 타이머 2 종료 } } } function closePositions() { // Call 포지션 청산 if (C1 != "" && C2 != "") { Account1.OrderBuy(C1, 1, Option1.GetAsk(C1, 5), 0); Account1.OrderBuy(C2, 1, Option1.GetAsk(C2, 5), 0); } // Put 포지션 청산 if (P1 != "" && P2 != "") { Account1.OrderBuy(P1, 1, Option1.GetAsk(P1, 5), 0); Account1.OrderBuy(P2, 1, Option1.GetAsk(P2, 5), 0); } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 매도수식 청산내용 추가 > 1. 게시판 답변글에다 시간청산내용을 추가해보았습니다. 내용이 맞는지 검토해주십시요. 2. 익절과 손절 내용 추가해주십시요. - 익절 내용 : 잔고가 +50,000원 되면 모두 청산 - 손절 내용 : 잔고가 -50,000원 되면 모두 청산 3. 한세트 진입하고 청산하면 그 다음 거래는 안한다는 내용을 추가해주십시요. 항상 고맙습니다. ***************************************************************************** function Main_OnStart() { Main.SetTimer(1, 5000); // 5초마다 타이머 이벤트 발생 Main.SetTimer(2, 60000); // 1분마다 타이머 이벤트 발생 } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds(); if (nEventID == 1) { if (HHMMSS >= 084600) // 오전 8시 46분 { Main.KillTimer(1); C1 = ""; CD1 = -1; C2 = ""; CD2 = -1; P1 = ""; PD1 = -1; P2 = ""; PD2 = -1; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { if (Option1.GetCurrent(0, i) <= 1.0) { if (CD1 == -1 || (CD1 > 0 && 1.0 - Option1.GetCurrent(0, i) < CD1)) { CD1 = 1.0 - Option1.GetCurrent(0, i); C1 = Option1.GetATMCallRecent(i); } } if (Option1.GetCurrent(0, i) <= 0.5) { if (CD2 == -1 || (CD2 > 0 && 0.5 - Option1.GetCurrent(0, i) < CD2)) { CD2 = 0.5 - Option1.GetCurrent(0, i); C2 = Option1.GetATMCallRecent(i); } } if (Option1.GetCurrent(1, -i) <= 1.2) { if (PD1 == -1 || (PD1 > 0 && 1.2 - Option1.GetCurrent(1, -i) < PD1)) { PD1 = 1.2 - Option1.GetCurrent(1, -i); P1 = Option1.GetATMPutRecent(-i); } } if (Option1.GetCurrent(1, -i) <= 0.5) { if (PD2 == -1 || (PD2 > 0 && 0.5 - Option1.GetCurrent(1, -i) < PD2)) { PD2 = 0.5 - Option1.GetCurrent(1, -i); P2 = Option1.GetATMPutRecent(-i); } } } if (C1 != "" && C2 != "") { Account1.OrderSell(C1, 1, Option1.GetBid(C1, 5), 0); Account1.OrderSell(C2, 1, Option1.GetBid(C2, 5), 0); } if (P1 != "" && P2 != "") { Account1.OrderSell(P1, 1, Option1.GetBid(P1, 5), 0); Account1.OrderSell(P2, 1, Option1.GetBid(P2, 5), 0); } } } if (nEventID == 2) { // 15시 청산 조건 if (HHMMSS >= 150000 && HHMMSS < 150100) { // 15시 1분에 청산 closePositions(); Main.KillTimer(2); // 타이머 2 종료 } } } function closePositions() { // Call 포지션 청산 if (C1 != "" && C2 != "") { Account1.OrderBuy(C1, 1, Option1.GetAsk(C1, 5), 0); Account1.OrderBuy(C2, 1, Option1.GetAsk(C2, 5), 0); } // Put 포지션 청산 if (P1 != "" && P2 != "") { Account1.OrderBuy(P1, 1, Option1.GetAsk(P1, 5), 0); Account1.OrderBuy(P2, 1, Option1.GetAsk(P2, 5), 0); } }