커뮤니티

확장챠트의 신호가...

프로필 이미지
파문일기
2016-06-15 18:29:36
1337
글번호 223928
답변완료
확장챠틀를 두개이상 만들어서 신호의 조건에 따라 진입, 청산을 하는데 두챠트의 신호가 각각 구분되어 나오게 하는 것을 검토해 주세요... 참고로 아래의 수식은 ChartEx6에 ChartEx5의 신호까지 겹쳐서 나오네요.. var Start, CallStart, PutStart; var Code1Vol; var Code2Vol, CodeVol; var OrderCode, OrderCode1; var OrderCode2; var Nth = 0; var Balnum, AccVol; var CallStart; var PutStart; var CallOrderCode; var PutOrderCode; var BuyNum,SellNum; var BuyVol,BuyFillVol,BuyID, BuyStep = 0,BuyPrice ; var BuyLimitPrice,BuyLimitEnd = false, BuyResponse = false; var SellVol,SellFillVol,SellID, SellStep = 0,SellPrice ; var SellLimitPrice,SellLimitEnd = false, SellResponse = false; var Expr1, Expr2; var CVit, PVit, CGoal, PGoal, Ma5;// var ChartEx5; var ChartEx6; //스팟 시작시에 function Main_OnStart() { Start = 0; CallStart = 0; PutStart = 0; OrderCode1 = Main.GetOrderCode( MarketData1.code);//ATM단위로 사용할때 Account1.SetBalanceItem(OrderCode1, 0); if (Account1.Balance.code == OrderCode1) { CodeVol = Account1.Balance.count ; } Main.MessageList("코 드: ",OrderCode1,"잔고:",CodeVol); Main.ReqMarketData(OrderCode1, 10,0); Main.MessageList("종목객체요청"); var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //9시 5분에 if (Start == 0 && HHMMSS >= 083000)// && HHMMSS >= 90030 { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (HHMMSS < 090000) { CallPrice[i+LNum] = Math.abs(Option.GetExpectedPrice(0, i)-2.0); } else if (HHMMSS >= 090000) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.0); } CallCode[i+LNum] = Option.GetATMCallRecent(i); } CC = 99999999; // CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum]; } if (CallOrderCode == CallCode[i+LNum]) { CallOrderCode1 = CallCode[i+LNum-1]; CallOrderCode2 = CallCode[i+LNum+1]; CallOrderCode3 = CallCode[i+LNum+2]; } } for (var ii = -UNum; ii <= LNum; ii++) { if (HHMMSS < 090000) { PutPrice[ii+UNum] = Math.abs(Option.GetExpectedPrice(1, ii)-2.0); } else if (HHMMSS >= 090000) { PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.0); } PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } PP = 99999999; // PutOrderCode = -1; for (var ii = -UNum; ii < LNum; ii++) { if (PutPrice[ii+UNum] <= PP) { PP = PutPrice[ii+UNum]; PutOrderCode = PutCode[ii+UNum]; } if (PutOrderCode == PutCode[ii+UNum]) { PutOrderCode1 = PutCode[ii+UNum-1]; PutOrderCode2 = PutCode[ii+UNum+1]; PutOrderCode3 = PutCode[ii+UNum+2]; //PutOrderCode4 = PutCode[ii+UNum+3]; } } Main.MessageList("콜",CallOrderCode ,"풋",PutOrderCode); //확장 차트객체 요청 var ChartSet1 = new ReqChartItem(CallOrderCode,60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var ChartSet2 = new ReqChartItem(PutOrderCode,60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); //시스템 설정 //var SystemInputSet = new Array(new YLInputVar("HP", OpHLPIn1),new YLInputVar("LP", OpHLPIn2)); var TradeSet = new SystemTradeInfo(TRADE_FIXCAPITAL,1, 10000000,1, // 자산 0.07, 0.07,CALCMETHOD_PERCENT, // 진입/청산 수수료 0.01, 0.01,CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ALL, // 피라미딩 설정여부 50, //1000, // 최대진입수량 4); // 최대진입횟수 //var StopSet = new SystemStopInfo(new StopEndOfDay(150300)); var SystemSet1 = new SystemInfo("Opover틱-단타data4추세",YL_TYPE_NORMAL,null,TradeSet,null); //var SystemSet2 = new SystemInfo("Opover틱-단타data4",YL_TYPE_NORMAL,null,TradeSet,null); //지표 설정 //지표명 MACD를 기간 10,20으로 설정해서 차트에 적용 I1 = new IndicatorInfo("옵션거래량마디_data4추세", YL_TYPE_NORMAL, null,null); var IndicatorSet = new Array(I1); //참조데이터 추가 var R11 = new ReqChartItem(PutOrderCode, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R12 = new ReqChartItem(CallOrderCode2, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R13 = new ReqChartItem(CallOrderCode1, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var ReferDataSet1 = new Array(R11,R12,R13); //참조데이터 추가 var R21 = new ReqChartItem(CallOrderCode, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R22 = new ReqChartItem(PutOrderCode2, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R23 = new ReqChartItem(PutOrderCode1, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var ReferDataSet2 = new Array(R21,R22,R23); //지정한 설정으로 챠트 생성을 요청 ChartEx5 = Main.ReqChartEx(ChartSet1, SystemSet1, IndicatorSet, ReferDataSet1); ChartEx6 = Main.ReqChartEx(ChartSet2, SystemSet1, IndicatorSet, ReferDataSet2); } } function Main_OnRcvChartEx(ChartEx) { if (ChartEx.GetCode(1) == CallOrderCode)//CallOrderCode == ChartEx.GetCode(1))// ChartEx.GetCode(1) == CallOrderCode) { ChartEx5 = ChartEx; CallStart = 1; Main.ReqMarketData(ChartEx5.GetCode(1), 20,0);//ATM단위로 사용할때 Main.MessageList("Cx코드",ChartEx5.GetCode(1)); } if (ChartEx.GetCode(1) == PutOrderCode)//PutOrderCode == ChartEx.GetCode(1))// ChartEx.GetCode(1) == PutOrderCode) { ChartEx6 = ChartEx; PutStart = 1; Main.ReqMarketData(ChartEx6.GetCode(1), 20,0);//ATM단위로 사용할때 Main.MessageList("Px코드",ChartEx6.GetCode(1)); } } function Main_OnRcvMarketData(MarketData) { Start = 1; Main.MessageList("종목객체수신",MarketData.code); //수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에 if (MarketData.code == OrderCode1) { OrderCode1 = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 Main.MessageList("종목객체생성완료 : ",OrderCode1); } if (MarketData.code == CallOrderCode) { CallOrderCode = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 Main.MessageList("종목객체생성완료 : ",CallOrderCode); } if (MarketData.code == PutOrderCode) { PutOrderCode = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 Main.MessageList("종목객체생성완료 : ",PutOrderCode); } } function Main_OnRiseSignal(ChartEx5,Signal) { //날자 및 시계계산 var d = new Date(); var HHMMSSTT = d.getHours()*10000000+d.getMinutes()*100000+d.getSeconds()*1000+d.getMilliseconds(); //CallStart = 2; CVit = C3.GetIndicatorData("중심가격3-7",1, 0);// PVit = C3.GetIndicatorData("중심가격3-7",2, 0);// CGoal = C3.GetIndicatorData("중심가격3-7",5, 0);// PGoal = C3.GetIndicatorData("중심가격3-7",6, 0);// Ma5 = C3.GetIndicatorData("중심가격3-7",13, 0);// if (ChartEx5.GetCode(1) == CallOrderCode && Signal.signalKind == 1) { Main.MessageList("CGoal",CGoal,HHMMSSTT); if ((CallStart == 1 && C3.GetClose(1, 0) >= CVit && C3.GetClose(1, 0) >= CGoal) || (CallStart == 1 && C3.GetClose(1, 0) > Ma5 && (C3.GetClose(1, 0) >= CVit || C3.GetClose(1, 0) >= CGoal))) { Main.MessageList("신호Ex11:",Signal.name,"가격",Signal.price,"시간",HHMMSSTT); BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), BuyVol, BuyPrice, 0); Main.MessageList("매수주문3 - ","주문아이디",BuyID,"주문가격",BuyPrice,"수량",BuyVol); Main.SetTimer(11, 60000);//60초 } else { } } } function Main_OnRiseSignal(ChartEx6,Signal) { //날자 및 시계계산 var d = new Date(); var HHMMSSTT = d.getHours()*10000000+d.getMinutes()*100000+d.getSeconds()*1000+d.getMilliseconds(); //CallStart = 2; CVit = C3.GetIndicatorData("중심가격3-7",1, 0);//C생명가반등 PVit = C3.GetIndicatorData("중심가격3-7",2, 0);//P생명가반등 CGoal = C3.GetIndicatorData("중심가격3-7",5, 0);//콜목 PGoal = C3.GetIndicatorData("중심가격3-7",6, 0);//풋목 Ma5 = C3.GetIndicatorData("중심가격3-7",13, 0);// if (ChartEx6.GetCode(1) == PutOrderCode && Signal.signalKind == 1) { Main.MessageList("PGoal",PGoal,HHMMSSTT); if ((PutStart == 1 && C3.GetClose(1, 0) <= PVit && C3.GetClose(1, 0) <= PGoal) || (PutStart == 1 && C3.GetClose(1, 0) < Ma5 && (C3.GetClose(1, 0) <= PVit || C3.GetClose(1, 0) <= PGoal))) { Main.MessageList("신호Ex21:",Signal.name,"가격",Signal.price,"시간",HHMMSSTT); SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), SellVol, SellPrice, 0); Main.MessageList("매도주문3","주문아이디",SellID,"주문가격",SellPrice,"수량",SellVol); Main.SetTimer(12, 60000);//60초 } else { } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-07-13 15:21:22

안녕하세요 예스스탁입니다. function Main_OnRiseSignal(ChartEx6,Signal) function Main_OnRiseSignal함수에서 ChartEx6와 같이 객체의 이름을 따로 지정하시는 것은 의미가 없습니다. 신호가 발생하면 해당 이름으로 차트정보가 담겨져 리턴됩니다. 즉 확장차트 객체는 개별적으로 이벤트가 있는 것이 아니고 function Main_OnRiseSignal로 통합해서 모든 신호를 받게 됩니다. 따로 이벤트가 존재하는 것은 일반차트객체 뿐입니다. 아래와 같이 이벤트는 하나만 사용하시고 신호가 발생하면 종목코드등으로 구별해서 스크립트 내용 작성해 사용하셔야 합니다. function Main_OnRiseSignal(ChartEx,Signal) { //날자 및 시계계산 var d = new Date(); var HHMMSSTT = d.getHours()*10000000+d.getMinutes()*100000+d.getSeconds()*1000+d.getMilliseconds(); CVit = C3.GetIndicatorData("중심가격3-7",1, 0);// PVit = C3.GetIndicatorData("중심가격3-7",2, 0);// CGoal = C3.GetIndicatorData("중심가격3-7",5, 0);// PGoal = C3.GetIndicatorData("중심가격3-7",6, 0);// Ma5 = C3.GetIndicatorData("중심가격3-7",13, 0);// if (ChartEx.GetCode(1) == CallOrderCode) { if (Signal.signalKind == 1) { Main.MessageList("CGoal",CGoal,HHMMSSTT); if ((CallStart == 1 && C3.GetClose(1, 0) >= CVit && C3.GetClose(1, 0) >= CGoal) || (CallStart == 1 && C3.GetClose(1, 0) > Ma5 && (C3.GetClose(1, 0) >= CVit || C3.GetClose(1, 0) >= CGoal))) { Main.MessageList("신호Ex11:",Signal.name,"가격",Signal.price,"시간",HHMMSSTT); BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), BuyVol, BuyPrice, 0); Main.MessageList("매수주문3 - ","주문아이디",BuyID,"주문가격",BuyPrice,"수량",BuyVol); Main.SetTimer(11, 60000);//60초 } else { } } } if (ChartEx.GetCode(1) == PutOrderCode) { if (Signal.signalKind == 1) { Main.MessageList("PGoal",PGoal,HHMMSSTT); if ((PutStart == 1 && C3.GetClose(1, 0) <= PVit && C3.GetClose(1, 0) <= PGoal) || (PutStart == 1 && C3.GetClose(1, 0) < Ma5 && (C3.GetClose(1, 0) <= PVit || C3.GetClose(1, 0) <= PGoal))) { Main.MessageList("신호Ex21:",Signal.name,"가격",Signal.price,"시간",HHMMSSTT); SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), SellVol, SellPrice, 0); Main.MessageList("매도주문3","주문아이디",SellID,"주문가격",SellPrice,"수량",SellVol); Main.SetTimer(12, 60000);//60초 } else { } } } } 즐거운 하루되세요 > 파문일기 님이 쓴 글입니다. > 제목 : 확장챠트의 신호가... > 확장챠틀를 두개이상 만들어서 신호의 조건에 따라 진입, 청산을 하는데 두챠트의 신호가 각각 구분되어 나오게 하는 것을 검토해 주세요... 참고로 아래의 수식은 ChartEx6에 ChartEx5의 신호까지 겹쳐서 나오네요.. var Start, CallStart, PutStart; var Code1Vol; var Code2Vol, CodeVol; var OrderCode, OrderCode1; var OrderCode2; var Nth = 0; var Balnum, AccVol; var CallStart; var PutStart; var CallOrderCode; var PutOrderCode; var BuyNum,SellNum; var BuyVol,BuyFillVol,BuyID, BuyStep = 0,BuyPrice ; var BuyLimitPrice,BuyLimitEnd = false, BuyResponse = false; var SellVol,SellFillVol,SellID, SellStep = 0,SellPrice ; var SellLimitPrice,SellLimitEnd = false, SellResponse = false; var Expr1, Expr2; var CVit, PVit, CGoal, PGoal, Ma5;// var ChartEx5; var ChartEx6; //스팟 시작시에 function Main_OnStart() { Start = 0; CallStart = 0; PutStart = 0; OrderCode1 = Main.GetOrderCode( MarketData1.code);//ATM단위로 사용할때 Account1.SetBalanceItem(OrderCode1, 0); if (Account1.Balance.code == OrderCode1) { CodeVol = Account1.Balance.count ; } Main.MessageList("코 드: ",OrderCode1,"잔고:",CodeVol); Main.ReqMarketData(OrderCode1, 10,0); Main.MessageList("종목객체요청"); var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //9시 5분에 if (Start == 0 && HHMMSS >= 083000)// && HHMMSS >= 90030 { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (HHMMSS < 090000) { CallPrice[i+LNum] = Math.abs(Option.GetExpectedPrice(0, i)-2.0); } else if (HHMMSS >= 090000) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.0); } CallCode[i+LNum] = Option.GetATMCallRecent(i); } CC = 99999999; // CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum]; } if (CallOrderCode == CallCode[i+LNum]) { CallOrderCode1 = CallCode[i+LNum-1]; CallOrderCode2 = CallCode[i+LNum+1]; CallOrderCode3 = CallCode[i+LNum+2]; } } for (var ii = -UNum; ii <= LNum; ii++) { if (HHMMSS < 090000) { PutPrice[ii+UNum] = Math.abs(Option.GetExpectedPrice(1, ii)-2.0); } else if (HHMMSS >= 090000) { PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.0); } PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } PP = 99999999; // PutOrderCode = -1; for (var ii = -UNum; ii < LNum; ii++) { if (PutPrice[ii+UNum] <= PP) { PP = PutPrice[ii+UNum]; PutOrderCode = PutCode[ii+UNum]; } if (PutOrderCode == PutCode[ii+UNum]) { PutOrderCode1 = PutCode[ii+UNum-1]; PutOrderCode2 = PutCode[ii+UNum+1]; PutOrderCode3 = PutCode[ii+UNum+2]; //PutOrderCode4 = PutCode[ii+UNum+3]; } } Main.MessageList("콜",CallOrderCode ,"풋",PutOrderCode); //확장 차트객체 요청 var ChartSet1 = new ReqChartItem(CallOrderCode,60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var ChartSet2 = new ReqChartItem(PutOrderCode,60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); //시스템 설정 //var SystemInputSet = new Array(new YLInputVar("HP", OpHLPIn1),new YLInputVar("LP", OpHLPIn2)); var TradeSet = new SystemTradeInfo(TRADE_FIXCAPITAL,1, 10000000,1, // 자산 0.07, 0.07,CALCMETHOD_PERCENT, // 진입/청산 수수료 0.01, 0.01,CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ALL, // 피라미딩 설정여부 50, //1000, // 최대진입수량 4); // 최대진입횟수 //var StopSet = new SystemStopInfo(new StopEndOfDay(150300)); var SystemSet1 = new SystemInfo("Opover틱-단타data4추세",YL_TYPE_NORMAL,null,TradeSet,null); //var SystemSet2 = new SystemInfo("Opover틱-단타data4",YL_TYPE_NORMAL,null,TradeSet,null); //지표 설정 //지표명 MACD를 기간 10,20으로 설정해서 차트에 적용 I1 = new IndicatorInfo("옵션거래량마디_data4추세", YL_TYPE_NORMAL, null,null); var IndicatorSet = new Array(I1); //참조데이터 추가 var R11 = new ReqChartItem(PutOrderCode, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R12 = new ReqChartItem(CallOrderCode2, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R13 = new ReqChartItem(CallOrderCode1, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var ReferDataSet1 = new Array(R11,R12,R13); //참조데이터 추가 var R21 = new ReqChartItem(CallOrderCode, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R22 = new ReqChartItem(PutOrderCode2, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var R23 = new ReqChartItem(PutOrderCode1, 60, CHART_PERIOD_TICK, 3000, CHART_REQCOUNT_BAR, false, false); var ReferDataSet2 = new Array(R21,R22,R23); //지정한 설정으로 챠트 생성을 요청 ChartEx5 = Main.ReqChartEx(ChartSet1, SystemSet1, IndicatorSet, ReferDataSet1); ChartEx6 = Main.ReqChartEx(ChartSet2, SystemSet1, IndicatorSet, ReferDataSet2); } } function Main_OnRcvChartEx(ChartEx) { if (ChartEx.GetCode(1) == CallOrderCode)//CallOrderCode == ChartEx.GetCode(1))// ChartEx.GetCode(1) == CallOrderCode) { ChartEx5 = ChartEx; CallStart = 1; Main.ReqMarketData(ChartEx5.GetCode(1), 20,0);//ATM단위로 사용할때 Main.MessageList("Cx코드",ChartEx5.GetCode(1)); } if (ChartEx.GetCode(1) == PutOrderCode)//PutOrderCode == ChartEx.GetCode(1))// ChartEx.GetCode(1) == PutOrderCode) { ChartEx6 = ChartEx; PutStart = 1; Main.ReqMarketData(ChartEx6.GetCode(1), 20,0);//ATM단위로 사용할때 Main.MessageList("Px코드",ChartEx6.GetCode(1)); } } function Main_OnRcvMarketData(MarketData) { Start = 1; Main.MessageList("종목객체수신",MarketData.code); //수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에 if (MarketData.code == OrderCode1) { OrderCode1 = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 Main.MessageList("종목객체생성완료 : ",OrderCode1); } if (MarketData.code == CallOrderCode) { CallOrderCode = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 Main.MessageList("종목객체생성완료 : ",CallOrderCode); } if (MarketData.code == PutOrderCode) { PutOrderCode = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 Main.MessageList("종목객체생성완료 : ",PutOrderCode); } } function Main_OnRiseSignal(ChartEx5,Signal) { //날자 및 시계계산 var d = new Date(); var HHMMSSTT = d.getHours()*10000000+d.getMinutes()*100000+d.getSeconds()*1000+d.getMilliseconds(); //CallStart = 2; CVit = C3.GetIndicatorData("중심가격3-7",1, 0);// PVit = C3.GetIndicatorData("중심가격3-7",2, 0);// CGoal = C3.GetIndicatorData("중심가격3-7",5, 0);// PGoal = C3.GetIndicatorData("중심가격3-7",6, 0);// Ma5 = C3.GetIndicatorData("중심가격3-7",13, 0);// if (ChartEx5.GetCode(1) == CallOrderCode && Signal.signalKind == 1) { Main.MessageList("CGoal",CGoal,HHMMSSTT); if ((CallStart == 1 && C3.GetClose(1, 0) >= CVit && C3.GetClose(1, 0) >= CGoal) || (CallStart == 1 && C3.GetClose(1, 0) > Ma5 && (C3.GetClose(1, 0) >= CVit || C3.GetClose(1, 0) >= CGoal))) { Main.MessageList("신호Ex11:",Signal.name,"가격",Signal.price,"시간",HHMMSSTT); BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), BuyVol, BuyPrice, 0); Main.MessageList("매수주문3 - ","주문아이디",BuyID,"주문가격",BuyPrice,"수량",BuyVol); Main.SetTimer(11, 60000);//60초 } else { } } } function Main_OnRiseSignal(ChartEx6,Signal) { //날자 및 시계계산 var d = new Date(); var HHMMSSTT = d.getHours()*10000000+d.getMinutes()*100000+d.getSeconds()*1000+d.getMilliseconds(); //CallStart = 2; CVit = C3.GetIndicatorData("중심가격3-7",1, 0);//C생명가반등 PVit = C3.GetIndicatorData("중심가격3-7",2, 0);//P생명가반등 CGoal = C3.GetIndicatorData("중심가격3-7",5, 0);//콜목 PGoal = C3.GetIndicatorData("중심가격3-7",6, 0);//풋목 Ma5 = C3.GetIndicatorData("중심가격3-7",13, 0);// if (ChartEx6.GetCode(1) == PutOrderCode && Signal.signalKind == 1) { Main.MessageList("PGoal",PGoal,HHMMSSTT); if ((PutStart == 1 && C3.GetClose(1, 0) <= PVit && C3.GetClose(1, 0) <= PGoal) || (PutStart == 1 && C3.GetClose(1, 0) < Ma5 && (C3.GetClose(1, 0) <= PVit || C3.GetClose(1, 0) <= PGoal))) { Main.MessageList("신호Ex21:",Signal.name,"가격",Signal.price,"시간",HHMMSSTT); SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), SellVol, SellPrice, 0); Main.MessageList("매도주문3","주문아이디",SellID,"주문가격",SellPrice,"수량",SellVol); Main.SetTimer(12, 60000);//60초 } else { } } }