커뮤니티

문의

프로필 이미지
좌오비우오비
2024-11-19 11:52:32.0
377
글번호 226155
답변완료
요청내용은 2가지 입니다. 1. 아래 수식은 "084500 부터" 시세감시와 계산을 통해 진입합니다. 이 수식을 "차트에서 sell 신호가 나오면" 그때부터 시세감시와 계산을 하는 수식으로 변경하고 싶습니다. 084500 작동 내용은 삭제하여 주십시요. 2. 오후 3시 15분에 손절 또는 익절이 안된 상태로 미결제 콜풋 한쌍이 남아있을 때 청산하는 수식 추가해 주십시요. 항상 고맙습니다. ********************************************************************************* var ID1,ID2,num1,num2; var Entry,CallCode,PutCode; var Xvol1,Xvol2; function Main_OnStart() { Main.MessageList("Start"); Main.SetTimer(1, 5000); Entry = 0; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 84500) { var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0); var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0)); if (Entry == 0 && sum <= 20 && diff <= 0.10) { Entry = sum; CallCode = Option1.GetATMCallRecent(0); PutCode = Option1.GetATMPutRecent(0); ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0); ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0); Xvo11 = 1; Xvo12 = 1; } if (Entry > 0 && (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) || (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1)) { if (Xvol1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xvol1 = Xvol1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xvol2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xvol2 = Xvol2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xvol1 > 0) { Account1.OrderSell(CallCode, Xvol1, Option1.GetBid(CallCode, 5), 0); } if (Xvol2 > 0) { Account1.OrderSell(PutCode, Xvol2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == ID1) { num1 = OrderResponse.orderNum; } if (OrderResponse.orderID == ID2) { num2 = OrderResponse.orderNum; } }
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2024-12-12 09:10:53.0

안녕하세요 예스스탁입니다. var ID1,ID2,num1,num2; var Entry,CallCode,PutCode; var Xv1,Xv2; function Main_OnStart() { Main.MessageList("Start"); Entry = 0; } //차트에서 신호발생 function Chart1_OnRiseSignal(Signal) { //sell신호이면 if (Signal.signalKind == 3) { //타이머 동작 Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 84500) { var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0); var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0)); if (Entry == 0 && sum <= 20 && diff <= 0.10) { Entry = sum; CallCode = Option1.GetATMCallRecent(0); PutCode = Option1.GetATMPutRecent(0); ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0); ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0); Xv1 = 1; Xv2 = 1; } if (Entry > 0 && HHMMSS < 151500 && (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) || (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1)) { if (Xv1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xv1 = Xv1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xv2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xv2 = Xv2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xv1 > 0) { Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0); } if (Xv2 > 0) { Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } //15시15분이면 if (Entry > 0 && HHMMSS >= 85500) { Main.MessageList("청산") if (Xv1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xv1 = Xv1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xv2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xv2 = Xv2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xv1 > 0) { Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0); } if (Xv2 > 0) { Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == ID1) { num1 = OrderResponse.orderNum; } if (OrderResponse.orderID == ID2) { num2 = OrderResponse.orderNum; } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 문의 > 요청내용은 2가지 입니다. 1. 아래 수식은 "084500 부터" 시세감시와 계산을 통해 진입합니다. 이 수식을 "차트에서 sell 신호가 나오면" 그때부터 시세감시와 계산을 하는 수식으로 변경하고 싶습니다. 084500 작동 내용은 삭제하여 주십시요. 2. 오후 3시 15분에 손절 또는 익절이 안된 상태로 미결제 콜풋 한쌍이 남아있을 때 청산하는 수식 추가해 주십시요. 항상 고맙습니다. ********************************************************************************* var ID1,ID2,num1,num2; var Entry,CallCode,PutCode; var Xvol1,Xvol2; function Main_OnStart() { Main.MessageList("Start"); Main.SetTimer(1, 5000); Entry = 0; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 84500) { var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0); var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0)); if (Entry == 0 && sum <= 20 && diff <= 0.10) { Entry = sum; CallCode = Option1.GetATMCallRecent(0); PutCode = Option1.GetATMPutRecent(0); ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0); ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0); Xvo11 = 1; Xvo12 = 1; } if (Entry > 0 && (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) || (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1)) { if (Xvol1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xvol1 = Xvol1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xvol2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xvol2 = Xvol2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xvol1 > 0) { Account1.OrderSell(CallCode, Xvol1, Option1.GetBid(CallCode, 5), 0); } if (Xvol2 > 0) { Account1.OrderSell(PutCode, Xvol2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == ID1) { num1 = OrderResponse.orderNum; } if (OrderResponse.orderID == ID2) { num2 = OrderResponse.orderNum; } }
프로필 이미지

예스스탁 예스스탁 답변

2024-12-12 09:13:58.0

안녕하세요 예스스탁입니다. var ID1,ID2,num1,num2; var Entry,CallCode,PutCode; var Xv1,Xv2; function Main_OnStart() { Main.MessageList("Start"); Entry = 0; } //차트에서 신호발생 function Chart1_OnRiseSignal(Signal) { //sell신호이면 if (Signal.signalKind == 3) { //타이머 동작 Main.SetTimer(1, 5000); } //exitshort신호이면 if (Signal.signalKind == 4) { if (Entry > 0 && HHMMSS < 151500) { if (Xv1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xv1 = Xv1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xv2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xv2 = Xv2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xv1 > 0) { Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0); } if (Xv2 > 0) { Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 84500) { var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0); var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0)); if (Entry == 0 && sum <= 20 && diff <= 0.10) { Entry = sum; CallCode = Option1.GetATMCallRecent(0); PutCode = Option1.GetATMPutRecent(0); ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0); ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0); Xv1 = 1; Xv2 = 1; } //15시15분이면 if (Entry > 0 && HHMMSS >= 85500) { Main.MessageList("청산") if (Xv1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xv1 = Xv1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xv2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xv2 = Xv2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xv1 > 0) { Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0); } if (Xv2 > 0) { Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == ID1) { num1 = OrderResponse.orderNum; } if (OrderResponse.orderID == ID2) { num2 = OrderResponse.orderNum; } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의 > 안녕하세요 예스스탁입니다. var ID1,ID2,num1,num2; var Entry,CallCode,PutCode; var Xv1,Xv2; function Main_OnStart() { Main.MessageList("Start"); Entry = 0; } //차트에서 신호발생 function Chart1_OnRiseSignal(Signal) { //sell신호이면 if (Signal.signalKind == 3) { //타이머 동작 Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 84500) { var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0); var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0)); if (Entry == 0 && sum <= 20 && diff <= 0.10) { Entry = sum; CallCode = Option1.GetATMCallRecent(0); PutCode = Option1.GetATMPutRecent(0); ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0); ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0); Xv1 = 1; Xv2 = 1; } if (Entry > 0 && HHMMSS < 151500 && (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) || (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1)) { if (Xv1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xv1 = Xv1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xv2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xv2 = Xv2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xv1 > 0) { Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0); } if (Xv2 > 0) { Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } //15시15분이면 if (Entry > 0 && HHMMSS >= 85500) { Main.MessageList("청산") if (Xv1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xv1 = Xv1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xv2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xv2 = Xv2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xv1 > 0) { Account1.OrderSell(CallCode, Xv1, Option1.GetBid(CallCode, 5), 0); } if (Xv2 > 0) { Account1.OrderSell(PutCode, Xv2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == ID1) { num1 = OrderResponse.orderNum; } if (OrderResponse.orderID == ID2) { num2 = OrderResponse.orderNum; } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 문의 > 요청내용은 2가지 입니다. 1. 아래 수식은 "084500 부터" 시세감시와 계산을 통해 진입합니다. 이 수식을 "차트에서 sell 신호가 나오면" 그때부터 시세감시와 계산을 하는 수식으로 변경하고 싶습니다. 084500 작동 내용은 삭제하여 주십시요. 2. 오후 3시 15분에 손절 또는 익절이 안된 상태로 미결제 콜풋 한쌍이 남아있을 때 청산하는 수식 추가해 주십시요. 항상 고맙습니다. ********************************************************************************* var ID1,ID2,num1,num2; var Entry,CallCode,PutCode; var Xvol1,Xvol2; function Main_OnStart() { Main.MessageList("Start"); Main.SetTimer(1, 5000); Entry = 0; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 84500) { var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0); var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0)); if (Entry == 0 && sum <= 20 && diff <= 0.10) { Entry = sum; CallCode = Option1.GetATMCallRecent(0); PutCode = Option1.GetATMPutRecent(0); ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0); ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0); Xvo11 = 1; Xvo12 = 1; } if (Entry > 0 && (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) || (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1)) { if (Xvol1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xvol1 = Xvol1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xvol2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xvol2 = Xvol2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xvol1 > 0) { Account1.OrderSell(CallCode, Xvol1, Option1.GetBid(CallCode, 5), 0); } if (Xvol2 > 0) { Account1.OrderSell(PutCode, Xvol2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == ID1) { num1 = OrderResponse.orderNum; } if (OrderResponse.orderID == ID2) { num2 = OrderResponse.orderNum; } }