커뮤니티

질문입니다.

프로필 이미지
jacob라
2015-10-02 13:55:11
2222
글번호 223678
답변완료
안녕하세요. 질문이 있습니다. 파일을 첨부하려고 했지만 마땅치 않아 맨아래에 코드복사하여 올리겠습니다. function C1_OnRiseSignal(Signal) { 여기에서 'Signal.count'란 걸 썼습니다. } function Main_OnOrderResponse(OrderResponse) { 그 후에 이곳에서 MesssageList안에 'Signal.count'를 넣었는데, Signal이 not define 되었다고 나옵니다. } function Main_OnNotifyFill(NotifyFill) { 이곳도 마찬가지로 MesssageList안에 'Signal.count'를 넣었는데, Signal이 not define 되었다고 나옵니다. } Signal.count를 다른 함수안에서도 사용할 수 있는 방법이 없을까요? 그리고, 하나 더 질문이 있는데 혹시 MessageList안에서 +와 ,의 쓰임은 어떤 차이가 있나요? 답변 부탁드리겠습니다. [코드] var Start; var fillcountSum = 0; function Main_OnStart() { Main.MessageList("시작",getTHHMMSS()); //잔고, 미체결수량 확인 사용자함수 BalanceAndUnfill(); Start = 0; } function C1_OnRiseSignal(Signal) { var dayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 0); var dayma2 = C2.GetIndicatorData("이동평균 5_20_60", 2, 0); var dayma3 = C2.GetIndicatorData("이동평균 5_20_60", 3, 0); var predayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 1); var slowK = C2.GetIndicatorData("Stochastics", 1, 0); if (Signal.signalKind == 1 && dayma1 > dayma2 && dayma2 > dayma3 && dayma1 > predayma1 && slowK >= 50) { Position = 1; BID = A1.OrderBuy(Signal.code, Signal.count, SSE.Ask(2), 0); Start = 1; Main.MessageList("신호완성/", Signal.signalKind, ".매수주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", BID, "]"); } if (Signal.signalKind == 2 && Start == 1) { Position = -1; SID = A1.OrderSell(Signal.code, Signal.count, SSE.Bid(2), 0); Main.MessageList("신호완성/", Signal.signalKind, ".매도주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", SID, "]"); } } //각 경우에 주문 응답 function Main_OnOrderResponse(OrderResponse) { fillcountSum = 0; if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매수주문응답:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[0]" , " 주문식별번호[", BID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매도주문응답:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[0]" , " 주문식별번호[", SID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } } //각 경우에 주문 체결 function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매수주문체결:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } if (Position == -1 && NotifyFill.orderNum == SNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매도주문체결:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } }
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2015-10-02 17:02:01

안녕하세요 예스스탁입니다. 1. 이벤트가 발생해서 리턴된 객체는 그 이벤트에서만 해당 객체에서 직접 값을 가져올수 있습니다. 다른 이벤트에서 사용하시기 위해서는 전역변수에 저장한 후에 해당 변수로 지정해서 값을 불러와 사용해야 합니다. 2. Main.MessageList에 / +를 사용한 것은 단지 출력되는 값을 시각적으로 더 확연히 보기 위해서 임의의 기호를 앞에 붙인것일 뿐입니다. ,는 출력값을 다수를 지정할수 있는데 출력되는 값의 구분인자 입니다. Main.MessageList(값1,값2,값3,값4); 값1이 100이고 값2는 200, 값3은 300, 값4는 400이면 기본적으로는 아래와 같이 출력됩니다. 100 200 300 400 이것을 좀더 시각적으로 구분해 보기 위해 /나+,[]를 이용해 /100/200/300/400 으로 보이게 한다던가 [100] [200] [300] [400] [+100+] [+200+] [+300+] [+400+] 로 출력되게 하는 것입니다. 큰 의미가 있는 부분은 아니고 사용여부도 사용자의 기호에 맞게 사용하시면 되는 부분입니다. 3. 아래 전역변수 Sig로 처리했습니다. var Start; var fillcountSum = 0; var Sig; function Main_OnStart() { Main.MessageList("시작",getTHHMMSS()); //잔고, 미체결수량 확인 사용자함수 BalanceAndUnfill(); Start = 0; } function C1_OnRiseSignal(Signal) { var dayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 0); var dayma2 = C2.GetIndicatorData("이동평균 5_20_60", 2, 0); var dayma3 = C2.GetIndicatorData("이동평균 5_20_60", 3, 0); var predayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 1); var slowK = C2.GetIndicatorData("Stochastics", 1, 0); Sig = Signal; if (Signal.signalKind == 1 && dayma1 > dayma2 && dayma2 > dayma3 && dayma1 > predayma1 && slowK >= 50) { Position = 1; BID = A1.OrderBuy(Signal.code, Signal.count, SSE.Ask(2), 0); Start = 1; Main.MessageList("신호완성/", Signal.signalKind, ".매수주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", BID, "]"); } if (Signal.signalKind == 2 && Start == 1) { Position = -1; SID = A1.OrderSell(Signal.code, Signal.count, SSE.Bid(2), 0); Main.MessageList("신호완성/", Signal.signalKind, ".매도주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", SID, "]"); } } //각 경우에 주문 응답 function Main_OnOrderResponse(OrderResponse) { fillcountSum = 0; if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매수주문응답:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[0]" , " 주문식별번호[", BID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매도주문응답:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[0]" , " 주문식별번호[", SID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } } //각 경우에 주문 체결 function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매수주문체결:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } if (Position == -1 && NotifyFill.orderNum == SNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매도주문체결:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } } 즐거운 하루되세요 > jacob라 님이 쓴 글입니다. > 제목 : 질문입니다. > 안녕하세요. 질문이 있습니다. 파일을 첨부하려고 했지만 마땅치 않아 맨아래에 코드복사하여 올리겠습니다. function C1_OnRiseSignal(Signal) { 여기에서 'Signal.count'란 걸 썼습니다. } function Main_OnOrderResponse(OrderResponse) { 그 후에 이곳에서 MesssageList안에 'Signal.count'를 넣었는데, Signal이 not define 되었다고 나옵니다. } function Main_OnNotifyFill(NotifyFill) { 이곳도 마찬가지로 MesssageList안에 'Signal.count'를 넣었는데, Signal이 not define 되었다고 나옵니다. } Signal.count를 다른 함수안에서도 사용할 수 있는 방법이 없을까요? 그리고, 하나 더 질문이 있는데 혹시 MessageList안에서 +와 ,의 쓰임은 어떤 차이가 있나요? 답변 부탁드리겠습니다. [코드] var Start; var fillcountSum = 0; function Main_OnStart() { Main.MessageList("시작",getTHHMMSS()); //잔고, 미체결수량 확인 사용자함수 BalanceAndUnfill(); Start = 0; } function C1_OnRiseSignal(Signal) { var dayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 0); var dayma2 = C2.GetIndicatorData("이동평균 5_20_60", 2, 0); var dayma3 = C2.GetIndicatorData("이동평균 5_20_60", 3, 0); var predayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 1); var slowK = C2.GetIndicatorData("Stochastics", 1, 0); if (Signal.signalKind == 1 && dayma1 > dayma2 && dayma2 > dayma3 && dayma1 > predayma1 && slowK >= 50) { Position = 1; BID = A1.OrderBuy(Signal.code, Signal.count, SSE.Ask(2), 0); Start = 1; Main.MessageList("신호완성/", Signal.signalKind, ".매수주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", BID, "]"); } if (Signal.signalKind == 2 && Start == 1) { Position = -1; SID = A1.OrderSell(Signal.code, Signal.count, SSE.Bid(2), 0); Main.MessageList("신호완성/", Signal.signalKind, ".매도주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", SID, "]"); } } //각 경우에 주문 응답 function Main_OnOrderResponse(OrderResponse) { fillcountSum = 0; if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매수주문응답:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[0]" , " 주문식별번호[", BID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매도주문응답:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[0]" , " 주문식별번호[", SID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } } //각 경우에 주문 체결 function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매수주문체결:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } if (Position == -1 && NotifyFill.orderNum == SNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매도주문체결:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } }
프로필 이미지

jacob라

2015-10-04 17:51:43

많은 도움 되었습니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 질문입니다. > 안녕하세요 예스스탁입니다. 1. 이벤트가 발생해서 리턴된 객체는 그 이벤트에서만 해당 객체에서 직접 값을 가져올수 있습니다. 다른 이벤트에서 사용하시기 위해서는 전역변수에 저장한 후에 해당 변수로 지정해서 값을 불러와 사용해야 합니다. 2. Main.MessageList에 / +를 사용한 것은 단지 출력되는 값을 시각적으로 더 확연히 보기 위해서 임의의 기호를 앞에 붙인것일 뿐입니다. ,는 출력값을 다수를 지정할수 있는데 출력되는 값의 구분인자 입니다. Main.MessageList(값1,값2,값3,값4); 값1이 100이고 값2는 200, 값3은 300, 값4는 400이면 기본적으로는 아래와 같이 출력됩니다. 100 200 300 400 이것을 좀더 시각적으로 구분해 보기 위해 /나+,[]를 이용해 /100/200/300/400 으로 보이게 한다던가 [100] [200] [300] [400] [+100+] [+200+] [+300+] [+400+] 로 출력되게 하는 것입니다. 큰 의미가 있는 부분은 아니고 사용여부도 사용자의 기호에 맞게 사용하시면 되는 부분입니다. 3. 아래 전역변수 Sig로 처리했습니다. var Start; var fillcountSum = 0; var Sig; function Main_OnStart() { Main.MessageList("시작",getTHHMMSS()); //잔고, 미체결수량 확인 사용자함수 BalanceAndUnfill(); Start = 0; } function C1_OnRiseSignal(Signal) { var dayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 0); var dayma2 = C2.GetIndicatorData("이동평균 5_20_60", 2, 0); var dayma3 = C2.GetIndicatorData("이동평균 5_20_60", 3, 0); var predayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 1); var slowK = C2.GetIndicatorData("Stochastics", 1, 0); Sig = Signal; if (Signal.signalKind == 1 && dayma1 > dayma2 && dayma2 > dayma3 && dayma1 > predayma1 && slowK >= 50) { Position = 1; BID = A1.OrderBuy(Signal.code, Signal.count, SSE.Ask(2), 0); Start = 1; Main.MessageList("신호완성/", Signal.signalKind, ".매수주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", BID, "]"); } if (Signal.signalKind == 2 && Start == 1) { Position = -1; SID = A1.OrderSell(Signal.code, Signal.count, SSE.Bid(2), 0); Main.MessageList("신호완성/", Signal.signalKind, ".매도주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", SID, "]"); } } //각 경우에 주문 응답 function Main_OnOrderResponse(OrderResponse) { fillcountSum = 0; if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매수주문응답:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[0]" , " 주문식별번호[", BID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매도주문응답:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[0]" , " 주문식별번호[", SID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } } //각 경우에 주문 체결 function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매수주문체결:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } if (Position == -1 && NotifyFill.orderNum == SNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매도주문체결:", getTHHMMSS() , "주문수량[" + Sig.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } } 즐거운 하루되세요 > jacob라 님이 쓴 글입니다. > 제목 : 질문입니다. > 안녕하세요. 질문이 있습니다. 파일을 첨부하려고 했지만 마땅치 않아 맨아래에 코드복사하여 올리겠습니다. function C1_OnRiseSignal(Signal) { 여기에서 'Signal.count'란 걸 썼습니다. } function Main_OnOrderResponse(OrderResponse) { 그 후에 이곳에서 MesssageList안에 'Signal.count'를 넣었는데, Signal이 not define 되었다고 나옵니다. } function Main_OnNotifyFill(NotifyFill) { 이곳도 마찬가지로 MesssageList안에 'Signal.count'를 넣었는데, Signal이 not define 되었다고 나옵니다. } Signal.count를 다른 함수안에서도 사용할 수 있는 방법이 없을까요? 그리고, 하나 더 질문이 있는데 혹시 MessageList안에서 +와 ,의 쓰임은 어떤 차이가 있나요? 답변 부탁드리겠습니다. [코드] var Start; var fillcountSum = 0; function Main_OnStart() { Main.MessageList("시작",getTHHMMSS()); //잔고, 미체결수량 확인 사용자함수 BalanceAndUnfill(); Start = 0; } function C1_OnRiseSignal(Signal) { var dayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 0); var dayma2 = C2.GetIndicatorData("이동평균 5_20_60", 2, 0); var dayma3 = C2.GetIndicatorData("이동평균 5_20_60", 3, 0); var predayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 1); var slowK = C2.GetIndicatorData("Stochastics", 1, 0); if (Signal.signalKind == 1 && dayma1 > dayma2 && dayma2 > dayma3 && dayma1 > predayma1 && slowK >= 50) { Position = 1; BID = A1.OrderBuy(Signal.code, Signal.count, SSE.Ask(2), 0); Start = 1; Main.MessageList("신호완성/", Signal.signalKind, ".매수주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", BID, "]"); } if (Signal.signalKind == 2 && Start == 1) { Position = -1; SID = A1.OrderSell(Signal.code, Signal.count, SSE.Bid(2), 0); Main.MessageList("신호완성/", Signal.signalKind, ".매도주문:", getTHHMMSS() , "주문수량[", Signal.count, "] 주문식별번호[", SID, "]"); } } //각 경우에 주문 응답 function Main_OnOrderResponse(OrderResponse) { fillcountSum = 0; if (Position == 1 && OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매수주문응답:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[0]" , " 주문식별번호[", BID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } if (Position == -1 && OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; Main.MessageList("OnOrdRes_매도주문응답:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[0]" , " 주문식별번호[", SID, "]", " 주문번호[" , OrderResponse.orderNum, "]"); } } //각 경우에 주문 체결 function Main_OnNotifyFill(NotifyFill) { if (Position == 1 && NotifyFill.orderNum == BNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매수주문체결:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } if (Position == -1 && NotifyFill.orderNum == SNum) { fillcountSum = fillcountSum + NotifyFill.fillCount; Main.MessageList("OnNotify_매도주문체결:", getTHHMMSS() , "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum , "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호[" , NotifyFill.orderNum, "]"); } }