커뮤니티

종목관계 없이 몇일 후 잔고 청산

프로필 이미지
팡팡
2018-11-12 21:45:02
2712
글번호 224647
답변완료
1.앞에 주신 1797번 답변은 매수는 되나 청산이 안되어 2.종목 선택하여 저장했다 청산 되는 수식이나 또는 청산 신호시 종목 관계없이 잔고 있으면 5계약식 5초 간격으로 청산되는 수식 원합니다. var CallOrderCode, PutOrderCode; var&nbsp;Direction,Code,BEcnt,BXcnt,SEcnt,SXcnt; var&nbsp;MaxEntryVol&nbsp;=&nbsp;5; var&nbsp;MaxExitVol; function&nbsp;Main_OnStart() { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("시작"); } function&nbsp;C1_OnRiseSignal(Signal) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Signal.signalKind&nbsp;==&nbsp;1&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("매수진입신호발생"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//내부파일에서&nbsp;DD와&nbsp;CC라는&nbsp;이름으로&nbsp;저장된&nbsp;값을&nbsp;가져와&nbsp;Direction,Code변수에&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;Main.GetUserValue("DD"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code&nbsp;=&nbsp;Main.GetUserValue("CC"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Direction이&nbsp;1이나&nbsp;-1이&nbsp;아닐때&nbsp;수행 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Direction&nbsp;!=&nbsp;1&nbsp;||&nbsp;Direction&nbsp;!=&nbsp;-1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code&nbsp;=&nbsp;Option.GetATMCallRecent(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;DD,CC라는&nbsp;이름으로&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("DD",&nbsp;Direction); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("CC",&nbsp;Code); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//매수주문 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var UNum = Option.uppersATM; var LNum = Option.lowersATM; //콜옵션중 1.0에 가장 가까운 종목 //콜옵션 모든 종목을 현재가-1.0을 해서 절대값을 취해 저장 var CallCode = new Array(UNum+LNum+1); var CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var AA = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < AA) { AA = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } A1.OrderBuy(CallOrderCode,&nbsp;1,&nbsp;Option.GetAskByCode(Code,2),&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEcnt&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1번&nbsp;타이머&nbsp;5초&nbsp;셋팅 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetTimer(1,5000); &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&nbsp;(Signal.signalKind&nbsp;==&nbsp;2&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("매수청산신호발생"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//내부파일에서&nbsp;DD와&nbsp;CC라는&nbsp;이름으로&nbsp;저장된&nbsp;값을&nbsp;가져와&nbsp;Direction,Code변수에&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;Main.GetUserValue("DD"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Code&nbsp;=&nbsp;Main.GetUserValue("CC"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Direction이&nbsp;1이면 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Direction&nbsp;==&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Direction을&nbsp;0으로&nbsp;초기화 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Direction&nbsp;=&nbsp;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;//내부파일에&nbsp;DD와&nbsp;CC에&nbsp;저장값도&nbsp;초기화 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("DD",&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.SetUserValue("CC",&nbsp;"&nbsp;"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//잔고를&nbsp;세팅 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A1.SetBalance(Code,&nbsp;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;&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&nbsp;(A1.Balance.count&nbsp;>&nbsp;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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//보유수량&nbsp;저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MaxExitVol&nbsp;=&nbsp;A1.Balance.count; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1계약&nbsp;매도주문 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A1.OrderSell(Code,1,Option.GetBidByCode(Code,&nbsp;2),&nbsp;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;BXcnt&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//보유수량이&nbsp;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;if&nbsp;(MaxExitVol&nbsp;>=&nbsp;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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//2번&nbsp;타이머&nbsp;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;Main.SetTimer(2,5000); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;중략
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-15 17:02:32

안녕하세요 예스스탁입니다. 1 Main.GetUserValue Main.SetUserValue 위 함수는 내부파일에 이름을 지정해 원하는 값을 저장하고 값을 호출하는 함수입니다. 내부파일은 프로그램 설치폴더안에 Spot폴더안에 UserValue.yuv 파일입니다. 스팟수식마다 내부파일이 만들어지는 것은 아니며 하나의 파일에 값이 적혀지게 되므로 전략간의 저장하는 이름이 달라야 합니다. 동일이름이 사용하면 원치않는 종목으로 주문이 집행되게 됩니다. 수식 작성에 유의하시기 바랍니다. 2 이전에 스팟에서 진입한 종목을 저장하려면 위 내파일에 저장하는 방법을 사용하셔야 합니다. 진입조건이 만족하면 내부파일에 이름을 지정해 종목코드를 적고 청산시에 해당 이름에서 저장된 종목코드를 가져와 해당 종목의 잔고가 있으면 청산하고 내부파일에 해당이름으로 저장된 값을 지우는 것입니다. 3 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. var CallOrderCode, PutOrderCode; var Direction,Code,BEcnt,BXcnt,SEcnt,SXcnt; var MaxEntryVol = 5; var MaxExitVol; function Main_OnStart() { Main.MessageList("시작"); } function C1_OnRiseSignal(Signal) { //매수신호가 발생하면 if (Signal.signalKind == 1 ) { Main.MessageList("매수진입신호발생"); //내부파일에 Code라는 이름으로 저정된 값을 가져와 EntryCode변수에 저장 EntryCode = Main.GetUserValue("Code"); //EntryCode변수에 값이 없으면 if (EntryCode == "") { //콜옵션중 1.0에 가장 가까운 종목을 찾음 //콜옵션 모든 종목을 현재가-1.0을 해서 절대값을 취해 저장 var UNum = Option.uppersATM; var LNum = Option.lowersATM; var CallCode = []; var CallPrice = []; for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var AA = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < AA) { AA = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //매수주문 A1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(CallOrderCode,2), 0); //내부파일에 Code라는 이름으로 CallOrderCode 저장 Main.SetUserValue("Code",CallOrderCode); BEcnt = 1; //1번 타이머 5초 셋팅 Main.SetTimer(1,5000); } } //매수청산신호가 발생하면 if (Signal.signalKind == 2 ) { Main.MessageList("매수청산신호발생"); //내부파일에 Code라는 이름으로 저정된 값을 가져와 EntryCode변수에 저장 EntryCode = Main.GetUserValue("CC"); //EntryCode에 값이 있으면 //이전에 매수해서 값이 저장되어 있는 상태이므로 //매도 수행 if (EntryCode != "") { //잔고를 세팅 A1.SetBalance(EntryCode, 0); //잔고수량이 있으면 if (A1.Balance.count > 0) { //보유수량 저장 MaxExitVol = A1.Balance.count; //1계약 매도주문 A1.OrderSell(Code,1,Option.GetBidByCode(Code, 2), 0); BXcnt = 1; //보유수량이 2계약 이상이면 if (MaxExitVol >= 2) { //2번 타이머 5초 셋팅 Main.SetTimer(2,5000); } } //청산이 동작했으므로 내부파일에 Code라는 이름으로 저장된 값은 지움 Main.SetUserValue("Code",""); } } } 즐거운 하루되세요 > 팡팡 님이 쓴 글입니다. > 제목 : 종목관계 없이 몇일 후 잔고 청산 > 1.앞에 주신 1797번 답변은 매수는 되나 청산이 안되어 2.종목 선택하여 저장했다 청산 되는 수식이나 또는 청산 신호시 종목 관계없이 잔고 있으면 5계약식 5초 간격으로 청산되는 수식 원합니다. var CallOrderCode, PutOrderCode; var&#160;Direction,Code,BEcnt,BXcnt,SEcnt,SXcnt; var&#160;MaxEntryVol&#160;=&#160;5; var&#160;MaxExitVol; function&#160;Main_OnStart() { &#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("시작"); } function&#160;C1_OnRiseSignal(Signal) { &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Signal.signalKind&#160;==&#160;1&#160;) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("매수진입신호발생"); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//내부파일에서&#160;DD와&#160;CC라는&#160;이름으로&#160;저장된&#160;값을&#160;가져와&#160;Direction,Code변수에&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Direction&#160;=&#160;Main.GetUserValue("DD"); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Code&#160;=&#160;Main.GetUserValue("CC"); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//Direction이&#160;1이나&#160;-1이&#160;아닐때&#160;수행 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Direction&#160;!=&#160;1&#160;||&#160;Direction&#160;!=&#160;-1) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Direction&#160;=&#160;1; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Code&#160;=&#160;Option.GetATMCallRecent(0); &#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//방향과&#160;종목코드를&#160;내부파일에&#160;DD,CC라는&#160;이름으로&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetUserValue("DD",&#160;Direction); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetUserValue("CC",&#160;Code); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//매수주문 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var UNum = Option.uppersATM; var LNum = Option.lowersATM; //콜옵션중 1.0에 가장 가까운 종목 //콜옵션 모든 종목을 현재가-1.0을 해서 절대값을 취해 저장 var CallCode = new Array(UNum+LNum+1); var CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-1.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var AA = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < AA) { AA = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } A1.OrderBuy(CallOrderCode,&#160;1,&#160;Option.GetAskByCode(Code,2),&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BEcnt&#160;=&#160;1; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//1번&#160;타이머&#160;5초&#160;셋팅 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetTimer(1,5000); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Signal.signalKind&#160;==&#160;2&#160;) &#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.MessageList("매수청산신호발생"); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//내부파일에서&#160;DD와&#160;CC라는&#160;이름으로&#160;저장된&#160;값을&#160;가져와&#160;Direction,Code변수에&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Direction&#160;=&#160;Main.GetUserValue("DD"); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Code&#160;=&#160;Main.GetUserValue("CC"); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//Direction이&#160;1이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(Direction&#160;==&#160;1) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//Direction을&#160;0으로&#160;초기화 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Direction&#160;=&#160;0; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//내부파일에&#160;DD와&#160;CC에&#160;저장값도&#160;초기화 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetUserValue("DD",&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetUserValue("CC",&#160;"&#160;"); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//잔고를&#160;세팅 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A1.SetBalance(Code,&#160;0);&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//잔고수량이&#160;있으면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(A1.Balance.count&#160;>&#160;0) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//보유수량&#160;저장 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MaxExitVol&#160;=&#160;A1.Balance.count; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//1계약&#160;매도주문 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A1.OrderSell(Code,1,Option.GetBidByCode(Code,&#160;2),&#160;0); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BXcnt&#160;=&#160;1; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//보유수량이&#160;2계약&#160;이상이면 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(MaxExitVol&#160;>=&#160;2) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//2번&#160;타이머&#160;5초&#160;셋팅 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main.SetTimer(2,5000); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;&#160;&#160;} &#160;중략