커뮤니티

수식 부탁합니다

프로필 이미지
팡팡
2021-07-07 21:51:07.0
2574
글번호 225513
답변완료
수정해 주신 식은 매도는 되나 청산(매수)이 전혀되지 않습니다. 다음식은 수정해 주신 2253 입니다. var EntryTime = 103000; var ExitTime = 144500; var MaxEnryVol = 10; var Entry,Exit,CurrentVol; var CSV,PSV,CSX,PSX; var CallOrderCode,PutOrderCode; function Main_OnStart() { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Main.MessageList(HHMMSS,"Start"); Entry = true; if (HHMMSS >= EntryTime) { Entry = false; } Exit = true; if (HHMMSS >= ExitTime) { Exit = false; } if (Entry == true || Exit == true) { Main.MessageList(HHMMSS,"1번 타이머동작"); Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { if (Entry == true && HHMMSS >= EntryTime) { //양매도종목 CallOrderCode = Option.GetATMCallRecent(0); PutOrderCode = Option.GetATMPutRecent(0); Main.SetUserValue("SellDate",YYYYMMDD); Main.SetUserValue("CallOrderCode",CallOrderCode); Main.SetUserValue("PutOrderCode",PutOrderCode); Entry = false; if (ExitTime > EntryTime) Main.KillTimer(1); Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0); CurrentVol = 1; Main.SetTimer(2, 5000); } if (Exit == true && HHMMSS >= ExitTime) { Exit = false; if (ExitTime > EntryTime) Main.KillTimer(1); var SellDate = Main.GetUserValue("SellDate") if (YYYYMMDD == SellDate) { CallOrderCode = Main.GetUserValue("CallOrderCode"); PutOrderCode = Main.GetUserValue("PutOrderCode"); if (CallOrderCode != "") { Account1.SetBalance(CallOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) CSV = Account1.Balance.count; else CSV = 0; if (PSV > 0) { Main.SetTimer(3, 5000); CSX = 1; Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } } if (PutOrderCode != "") { Account1.SetBalance(PutOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) PSV = Account1.Balance.count; else PSV = 0; if (PSV > 0) { Main.SetTimer(4, 5000); PSX = 1; Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } } } } } if (nEventID == 2) { CurrentVol = CurrentVol+1; if (CurrentVol <= MaxEnryVol) { Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutCode, 1, Option.GetBid(PutCode, 2), 0); } else { Main.KillTimer(2); } } if (nEventID == 3) { CSX = CSX+1; if (CSX <= CSV) { Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } else { Main.KillTimer(3); } } if (nEventID == 4) { PSX = PSX+1; if (PSX <= PSV) { Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } else { Main.KillTimer(4); } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-08-19 10:21:52.0

안녕하세요 예스스탁입니다. 변수가 잘못적혀진 부분이 있어 수정했습니다. var EntryTime = 101700; var ExitTime = 102000; var MaxEnryVol = 10; var Entry,Exit,CurrentVol; var CSV,PSV,CSX,PSX; var CallOrderCode,PutOrderCode; function Main_OnStart() { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Main.MessageList(HHMMSS,"Start"); Entry = true; if (HHMMSS >= EntryTime) { Entry = false; } Exit = true; if (HHMMSS >= ExitTime) { Exit = false; } if (Entry == true || Exit == true) { Main.MessageList(HHMMSS,"1번 타이머동작"); Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { if (Entry == true && HHMMSS >= EntryTime) { Main.MessageList(HHMMSS,"진입시작"); //양매도종목 CallOrderCode = Option.GetATMCallRecent(0); PutOrderCode = Option.GetATMPutRecent(0); Main.SetUserValue("SellDate",YYYYMMDD); Main.SetUserValue("CallOrderCode",CallOrderCode); Main.SetUserValue("PutOrderCode",PutOrderCode); Entry = false; if (ExitTime > EntryTime) Main.KillTimer(1); Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0); CurrentVol = 1; Main.SetTimer(2, 5000); } if (Exit == true && HHMMSS >= ExitTime) { Exit = false; if (ExitTime > EntryTime) Main.KillTimer(1); var SellDate = Main.GetUserValue("SellDate") Main.MessageList(HHMMSS,"청산시작",YYYYMMDD,SellDate); if (YYYYMMDD == SellDate) { CallOrderCode = Main.GetUserValue("CallOrderCode"); PutOrderCode = Main.GetUserValue("PutOrderCode"); if (CallOrderCode != "") { Account1.SetBalance(CallOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) CSV = Account1.Balance.count; else CSV = 0; if (CSV > 0) { Main.SetTimer(3, 5000); CSX = 1; Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } } if (PutOrderCode != "") { Account1.SetBalance(PutOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) PSV = Account1.Balance.count; else PSV = 0; if (PSV > 0) { Main.SetTimer(4, 5000); PSX = 1; Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } } } } } if (nEventID == 2) { CurrentVol = CurrentVol+1; if (CurrentVol <= MaxEnryVol) { Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0); } else { Main.KillTimer(2); } } if (nEventID == 3) { CSX = CSX+1; if (CSX <= CSV) { Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } else { Main.KillTimer(3); } } if (nEventID == 4) { PSX = PSX+1; if (PSX <= PSV) { Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } else { Main.KillTimer(4); } } } 즐거운 하루되세요 > 팡팡 님이 쓴 글입니다. > 제목 : 수식 부탁합니다 > 수정해 주신 식은 매도는 되나 청산(매수)이 전혀되지 않습니다. 다음식은 수정해 주신 2253 입니다. var EntryTime = 103000; var ExitTime = 144500; var MaxEnryVol = 10; var Entry,Exit,CurrentVol; var CSV,PSV,CSX,PSX; var CallOrderCode,PutOrderCode; function Main_OnStart() { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Main.MessageList(HHMMSS,"Start"); Entry = true; if (HHMMSS >= EntryTime) { Entry = false; } Exit = true; if (HHMMSS >= ExitTime) { Exit = false; } if (Entry == true || Exit == true) { Main.MessageList(HHMMSS,"1번 타이머동작"); Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { if (Entry == true && HHMMSS >= EntryTime) { //양매도종목 CallOrderCode = Option.GetATMCallRecent(0); PutOrderCode = Option.GetATMPutRecent(0); Main.SetUserValue("SellDate",YYYYMMDD); Main.SetUserValue("CallOrderCode",CallOrderCode); Main.SetUserValue("PutOrderCode",PutOrderCode); Entry = false; if (ExitTime > EntryTime) Main.KillTimer(1); Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0); CurrentVol = 1; Main.SetTimer(2, 5000); } if (Exit == true && HHMMSS >= ExitTime) { Exit = false; if (ExitTime > EntryTime) Main.KillTimer(1); var SellDate = Main.GetUserValue("SellDate") if (YYYYMMDD == SellDate) { CallOrderCode = Main.GetUserValue("CallOrderCode"); PutOrderCode = Main.GetUserValue("PutOrderCode"); if (CallOrderCode != "") { Account1.SetBalance(CallOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) CSV = Account1.Balance.count; else CSV = 0; if (PSV > 0) { Main.SetTimer(3, 5000); CSX = 1; Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } } if (PutOrderCode != "") { Account1.SetBalance(PutOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) PSV = Account1.Balance.count; else PSV = 0; if (PSV > 0) { Main.SetTimer(4, 5000); PSX = 1; Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } } } } } if (nEventID == 2) { CurrentVol = CurrentVol+1; if (CurrentVol <= MaxEnryVol) { Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutCode, 1, Option.GetBid(PutCode, 2), 0); } else { Main.KillTimer(2); } } if (nEventID == 3) { CSX = CSX+1; if (CSX <= CSV) { Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } else { Main.KillTimer(3); } } if (nEventID == 4) { PSX = PSX+1; if (PSX <= PSV) { Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } else { Main.KillTimer(4); } } }