커뮤니티

예스스팟 Q&A

답변완료

수식 수정부탁합니다

뭐가 문제일까요? 당일 14:30분에 매도 진입은 잘 되는데 다음날 매수 청산이 13:30분에 안됩니다. var CallOrderCode,PutOrderCode; var Entry, Exit; function Main_OnStart() { Entry = false; Exit = false; Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { if (nEventID <= 1) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //14시 30분 if (Entry == false && HHMMSS >= 143000 ) { Entry = true; //차트가 무포지션 if (Chart1.GetOpenContracts() == 0) { Main.SetUserValue("CallOrderCode", ""); Main.SetUserValue("PutOrderCode", ""); } //차트가 매수유지봉 if (Chart1.GetOpenContracts() > 0) { Main.MessageList("--------------------------------------------"); Main.MessageList("매수신호유지"); var UNum = Option.uppersATM; var LNum = Option.lowersATM; //콜옵션중 3.0에 가장 가까운 종목 //콜옵션 모든 종목을 현재가-3.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)-3.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var CC = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //풋옵션중 3.0에 가장 가까운 종목 //풋옵션 모든 종목을 현재가-3.0을 해서 절대값을 취해 저장 var PutCode = new Array(UNum+LNum+1); var PutPrice = new Array(UNum+LNum+1); for (var i = -UNum; i <= LNum; i++) { PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-3.0); PutCode[i+UNum] = Option.GetATMPutRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var PP = 99999999; PutOrderCode = ""; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] < PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } //종목을 찾았으면 if (CC < 99999999 && PP < 99999999) { Account1.OrderSell(PutOrderCode1, Vo1, Option.GetBid(PutOrderCode, 3), 0); Account1.OrderSell(CallOrderCode, Vo1, Option.GetBid(CallOrderCode, 3), 0); Main.SetUserValue("PutOrderCode", PutOrderCode); Main.SetUserValue("CallOrderCode", CallOrderCode); =================== 중 략 ========================================================= //13시 30분 if (Exit == false && HHMMSS >= 133000 ) { Exit = true; //내부파일의 값을 가져와 변수에 저장 var PreDayCall = Main.GetUserValue("CallOrderCode"); var PreDayPut = Main.GetUserValue("PutOrderCode"); //PreDayCall에 값이 있으면 if (PreDayCall != "") { //잔고셋팅후 매도포지션이면 청산하고 //내부파일의 값을 빈공간으로 만듬 Account1.SetBalanceItem(PreDayCall,0) if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, 0, 1); Main.SetUserValue("CallOrderCode", ""); } } //PreDayPut에 값이 있으면 if (PreDayPut != "") { //잔고셋팅후 매도포지션이면 청산하고 //내부파일의 값을 빈공간으로 만듬 Account1.SetBalanceItem(PreDayPut,0) if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, 0, 1); Main.SetUserValue("PutOrderCode", ""); } } //모두 수행후 값을 빈공간으로 만듬 Main.SetUserValue("CallOrderCode", ""); Main.SetUserValue("PutOrderCode", ""); }
프로필 이미지
팡팡
2015-11-03
2320
글번호 223704

지나리 님에 의해서 삭제되었습니다.

프로필 이미지
지나리
2015-11-02
1
글번호 223703
답변완료

DDE 와 관련해서 확인을 부탁드립니다

안녕하세요 DDE 와 관련해서 확인을 부탁드립니다. 1. DDE 객체의 속성을 코드 상에서 설정이 불가능한 것 같습니다 스크립트 속성 화면에서 설정하는 것은 적용이 되지만, 아래처럼 코드 상에서 직접 속성값을 설정하면 적용되지 않습니다. (Read 만 가능하고 Write 는 불가능) DDE1.service = "DDEServ"; DDE1.topic = "Data"; 코드 상으로는 속성 변경이 안되는지 궁금합니다. 2. DDE 객체의 OnRcvItem 함수가 동작이 안되는 것 같습니다. 검증을 위해, 예스스팟 이외에 별도의 DDE 클라이언트를 함께 사용해서 테스트를 해봤습니다. 1. Excel 테스트 A1 셀의 값을 가져오기 위해 그림 1 처럼 DDE1 객체 속성에서 Service 를 EXCEL, Topic 을 지정한 후 DDE1.Request("R1C1") 를 실행했지만, 그림 1 의 디버깅 화면처럼, DDE 객체의 OnRcvItem 함수가 실행되지 않았습니다. (Topic 설정은 "C:Test.xls" 과 "[Test.xls]sheet1" 두 가지를 해봤습니다) 엑셀 파일은 문제가 없었는데, 그림 2 처럼 다른 DDE Client 프로그램을 이용해서 테스트했을 때는 정상적으로 값이 조회되었기 때문입니다. 2. DDE 서버를 이용한 테스트 원인을 찾기 위해, 그림 3 처럼 별도의 DDE 서버 프로그램을 가지고 확인한 결과 예스스팟에서 보낸 Request 가 정상적으로 수신되었고, 이에 대한 응답으로 Item 데이타를 전송하는 것까지는 확인했습니다. 하지만 DDE 객체의 OnRcvItem 함수는 마찬가지로 실행되지 않았는데, (그림 3 처럼, DDE 클라이언트를 가지고 확인했을 때는 정상적으로 값이 조회되었습니다) DDE 서버쪽에서 정상적으로 데이타를 전송해서, OnRcvItem 함수가 실행이 안되는 것 같은데, 확인을 부탁드립니다. 3. 참고로 2 번 테스트에 사용한 코드를 보입니다. var Count; function GetCurrentTime() { d = new Date(); return d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); } function Main_OnStart() { Main.MessageLog("시작 - " + GetCurrentTime()); // 1 초마다 DDE Request 요청 Count = 0; Main.SetTimer(1, 1000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.MessageLog("타이머 - " + GetCurrentTime()); // String1 아이템 요청 (정상적인 리턴값은 "123" 의 문자열) DDE1.Request("String1"); if (++Count >= 3) { Main.KillTimer(1); } } } function DDE1_OnRcvItem(sItem, sData) { Main.MessageLog("OnRcvItem"); }
프로필 이미지
날빛2
2015-10-30
2502
글번호 223702
답변완료

예스스팟 관련 문의

안녕하세요! 늘 도와주심에 감사드리며 두 가지 질문이 있습니다 1. 예스스팟 사용시 아래와 같이 초기 포지션을 확인해보면 매도 보유시에도 Position이 1로 확인됩니다. 코드상 문제가 있는건가요? function Main_OnStart() { Main.MessageLog("시작"); ordCode = Main.GetOrderCode(MarketData1.code); Position = 0; itemNum = Account1.GetTheNumberOfBalances(); for(var i = 0; i < itemNum; i++) { //순서대로 잔고셋팅 Account1.SetBalanceIndex(i); if (Account1.Balance.code == ordCode) { Position = Account1.Balance.position; balCount = Account1.Balance.count; } } Main.MessageLog("시작시 종목:"+ordCode+" 현재 포지션:"+Position+" 갯수:"+balCount); } 2. 예스스팟 수식을 수정후 예스스팟을 작동시키면 수식을 수정하기 전에 있던 코드에 있던 오류에 대해 계속 오류가 발생합니다. 즉, 오류를 수정하고 나서도 해당 오류에 대해 계속 표시가 되는데 예스스팟을 삭제했다가 다시 시작을 반복하다 보면 어느 순간 오류가 사라집니다. 무엇이 문제인가요? 감사합니다.
프로필 이미지
빌딩오너
2015-10-29
2362
글번호 223701
답변완료

수식 요청 드립니다.

안녕하세요. 아래 수식 요청 드립니다. 1. 코스피 200 선물 5EA 당일청산 시스템을 예스스팟을 이용 미니선물 5계약으로 동일계좌로 거래할경우 동일계좌의 당일손실제한(외부변수), 당월손실제한(외부변수) 예스스팟 수식 부탁드립니다. 2. 계좌가 다를경우에도 당일손실제한(외부변수), 당월손실제한(외부변수) 가능한지 예스스팟수식 부탁드립니다. 감사합니다.
프로필 이미지
dandy
2015-10-26
2244
글번호 223698
답변완료

예스스팟 수식 문의 드립니다.

차트에서 매수 신호가 발생했을 때 비율을 활용하여 분산진입할 예정인데, 처음 매수 때는 총 금액의 25%를 진입하고 두번 째 매수는 해당 매수 평균단가에서 -10%가 되기 바로 전의 호가에서 첫 매수 때 체결된 주문과 같은량을 매수하고 세번 째 매수는 첫번째와 두번째 때 매수된 종목 평균단가에서, 똑같이 -10%가 되기 바로 전의 호가에서 지금까지 체결된 주문과 같은량을 매수 하는 시스템을 만들고 싶습니다. 즉 전량이 체결 된다고 가정할 때, 잔고의 25% 25% 50% 이런 식으로 주문이 들어가도록 하고 싶습니다. 또 14시 정각에 들어간 매수 주문을 전량 취소하고 14시 45분에 포지션에 있는 수량을 전부 청산하는 시스템을 만들고 싶습니다. 도움 부탁드립니다.
프로필 이미지
대가북극곰
2015-10-25
2109
글번호 223697
답변완료

GetOpenContracts() 질문 드립니다.

안녕하세요 Help 파일에 보면 설 명 : 미청산수량을 반환합니다. 매수면 양수, 매도면 음수로 리턴됩니다. 1보다 크면 매수를 1보다 작으면 매도 포지션 상태임을 나타냅니다. 반 환 값 : 정수 이렇게 되어 있는데 이해가 되지 않는 부분이 있습니다. 아래 내용과 같이 표현 될것 같은데 GetOpenContracts() == 0 미청산이 없다 GetOpenContracts() >= 1 매수수량 1개 이상이다. GetOpenContracts() <= -1 매도수량 1개 이상이다. 그렇다면 () 안에는 제가 매수 또는 매도한 종목의 스크립트 객체명이 들어가야 하는것인가요? 아니면 계좌이름이 들어가야 하는건가요? 그리고 만약 각기 다른 시스템으로 인해 해당 종목에 매수 1개약 매도 1개약이 각각 들어가 있다면 0으로 표시될것 같은데 이문제는 어떤가요? Help 파일에 내용이 너무 간략해 자세한 내용이 필요합니다. 도와주세요.
프로필 이미지
자유를찾아
2015-10-24
2041
글번호 223696
답변완료

수식 문의 드립니다

1. 계좌에 잔고가 있으면 15시 4분이나 15분 6분에(현재가의 선물은 3% 옵션은 30% +(매도청산) 혹은 -(매수청산)가격으로)청산되는 스팟식 부탁드립니다.정규선물옵션과 미니선물옵션 한꺼번에 가능하면 스팟식 하나로..아니면 분리해서 부탁드려요^^ 2. 아래 스팟식을 차트에서 나오는 진입 수량으로 진입되도록 수정 부탁드립니다.예스차트에서 피라미딩 진입하는데... 차트 진입수량만큼 피라미딩 진입하고.. 청산도 차트 청산수량만큼(피라미딩포함) 되는지요? function Main_OnStart() { Main.MessageList("시작"); T = 0; } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { T = 1; Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),1,MarketData1.Ask(5), 0); } if (T == 1 && Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1,MarketData1.Bid(5), 0); } if (Signal.signalKind == 3) { T = -1; Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1,MarketData1.Bid(5), 0); } if (T == -1 && Signal.signalKind == 4) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),1,MarketData1.Ask(5), 0); } } 3 아래 로직에서 주문호가가 없을때 오류가 나지 않도록 진입 청산 부분 수정 부탁드립니다.. 그리고 진입했던 종목이 청산되는지 확인부탁드리고,, 아니면 진입했던 종목이 청산되도록 수정부탁드립니다. 차트 진입수량만큼 피라미딩 진입하고.. 청산도 차트 청산수량만큼(피라미딩포함) 되는지요? var Start = 0; var BC; var BP; var Bcount; var SC; var SP; var Scount; var upv = 1.7; var dnv = 0.7; function Main_OnStart() { Start = 0; Main.MessageList("시작",Start); } function Chart1_OnRiseSignal(Signal) { //차트에서 매수신호 발생 if (Signal.signalKind == 1) { //1.0~2.0사이 중 가장 큰 가격을 가지는 종목을 찾음 //ATM위 행사가 갯수 var UNum = Option.uppersATM; //ATM아래 행사가 갯수 var LNum = Option.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 var CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 var CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 var PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 var PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(0, i) >= dnv && Option.GetCurrent(0, i) <= upv) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//0.7~1.7 사이가 아니면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var i = -UNum; i <= LNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(1, i) >= dnv && Option.GetCurrent(1, i) <= upv ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[i+UNum] = Option.GetCurrent(1, i); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[i+UNum] = Option.GetATMPutRecent(i); } else //2.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[i+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[i+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 var CC = -1; var CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] > CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 var PP = -1; var PutOrderCode = -1; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] > PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } if (CC > 0 && PP > 0) { Start = 1; BC = CallOrderCode; BP = PutOrderCode; Bcount = Signal.count; Account1.OrderBuy(BC,Bcount,Option.GetAskByCode(BC,3),0); Account1.OrderBuy(BP,Bcount,Option.GetAskByCode(BP,3),0); } } //차트에서 매수청산신호 발생 if (Start == 1 && Signal.signalKind == 2) { Start = 0; Account1.OrderSell(BC,Bcount,Option.GetBidByCode(BC,3),0); Account1.OrderSell(BP,Bcount,Option.GetBidByCode(BP,3),0); } //차트에서 매도신호 발생 if (Signal.signalKind == 3) { //ATM위 행사가 갯수 var UNum = Option.uppersATM; //ATM아래 행사가 갯수 var LNum = Option.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 var CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 var CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 var PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 var PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(0, i) >= dnv && Option.GetCurrent(0, i) <= upv) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//0.7~1.7 사이가 아니면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var i = -UNum; i <= LNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(1, i) >= dnv && Option.GetCurrent(1, i) <= upv ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[i+UNum] = Option.GetCurrent(1, i); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[i+UNum] = Option.GetATMPutRecent(i); } else //2.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[i+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[i+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 var CC = -1; var CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] > CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 var PP = -1; var PutOrderCode = -1; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] > PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } if (CC > 0 && PP > 0) { Start = -1; SC = CallOrderCode; SP = PutOrderCode; Scount = Signal.count; Account1.OrderSell(SC,Scount,Option.GetBidByCode(SC,3),0); Account1.OrderSell(SP,Scount,Option.GetBidByCode(SP,3),0); } } //차트에서 매도청산신호 발생 if (Start == -1 && Signal.signalKind == 4) { Start = 0; Account1.OrderBuy(SC,Scount,Option.GetAskByCode(SC,3),0); Account1.OrderBuy(SP,Scount,Option.GetAskByCode(SP,3),0); } }
프로필 이미지
무명
2015-10-16
2107
글번호 223691

가이츠 님에 의해서 삭제되었습니다.

프로필 이미지
가이츠
2015-10-16
20
글번호 223690
답변완료

[질문]종목검색후 매매수식오류.조회대상아닙니다.

아래 수식은 "종목검색"이후 매매방식의 수식을 그대로 가져왔는데 Main.ReqChartEx(C1,S1); --> 여기서 오류가 나옵니다. TypeError: "undefined"는 조회대상이 아닙니다 1. 무엇이 잘못되었나요? 2. 종목검색후 --> 차트생성에서 차트가 화면에 팝업?으로 나오는건지요? 아니면 차트보기를 클릭해야만 차트를 볼 수 있는건지요? 3. 파워종목검색의 경우 실시간으로 종목이 신규로 나오는 것이 아닌지요? 검색을 클릭하면 그때 다시 종목이 신규로 업데이트 됩니다. 무엇이 문제인가요? 참고로 위 오류가 뜨지만, 차트보기 누르면 주식 매수/매도 매매가 진행됩니다.. var List; var ListCnt; var ReqCount; //스팟 첫 실행시 function Main_OnStart() { // 파워종목검색의 test Search라는 이름의 사용자검색조건 검색 요청 Main.ReqPowerSearch("test Search") } //종목검색 완료되어 리스트(검색된 종목코드) 수신 function Main_OnRcvItemList(aItemList, nCount) { //검색된 종목코드를 저장 List = aItemList; //검색된 종목수 저장 ListCnt = nCount; Main.SetTimer(1,2000);//2 타이머 ReqCount = 0; } function Main_OnTimer(nEventID) { //2초 단위로 한종목씩 차트 생성 if (nEventID == 1) { //요청이 검색된 종목수 만큼 되었으면 터이머 종료 if (ReqCount == ListCnt) Main.KillTimer(1); //ReqCount번째 종목요청 //종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청 //차트설정 : 연결선물,1분봉,5000개, 수정주가X, 갭보정X var C1 = new ReqChartItem(List[ReqCount],1,CHART_PERIOD_DAILY,5000,CHART_REQCOUNT_BAR,false,false); //시스템 설정 var S1 = new SystemInfo("Stochastics K_D"); //C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성 Main.ReqChartEx(C1,S1); ReqCount = ReqCount+1;//요청횟수 1증가 } } #생성된 차트에서 신호가 발생하면 function Main_OnRiseSignal(ChartEx, Signal) { //매수신호 발생하면 매수주문 if (Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1); } //청산신호 발생하면 매도주문 if (Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1); } }
프로필 이미지
만들레영토
2015-10-13
2234
글번호 223689