커뮤니티

문의 올립니다.

프로필 이미지
즐겁게
2013-09-08 01:26:11
802
글번호 222565
답변완료
안녕하십니까. 항상 친절하신 답변 감사드립니다. 미체결, 미결제가 없는 상태에서만 신규매수진입이 되도록 하기 위해 Step이라는 변수를 설정해서 이용하고자 하는데, 아래의 소스에서 보듯이, Q&A 예문 등에서 일반적으로 보이는 바와 같이, 함수 바깥에서 Step을 선언해 주고, function Main_OnStart() 에서 초기값 0을 대입해 주고, function Chart1_OnRiseSignal(Signal) 에서, 이 값이 0일 경우에만 매수진입 주문이 나갈 수 있도록 하였는데, function Chart1_OnRiseSignal(Signal) 속의 { } 속 맨 처음에 MessageLog로 이 Step의 값을 체크해 보면, 0이 아니라 undefined로 나옵니다. 어떤 부분을 제가 잘못한 건지, 어떻게 고쳐야 하는 건지 알려 주시면 대단히 감사하겠습니다. ((아래 소스는, 간단히 볼 수 있게 하기 위해, 다른 거 다 지우고 Step과 직결되는 것들만 남겨 보았습니다)) var ID_1B; var Step; function Main_OnStart() { Step = 0; Main.MessageLog("OnStart / Step = "+Step+" / Signal.name = "+Signal.name+" / Signal.price ="+Signal.price); } // 차트에서 매수신호 발생 function Chart1_OnRiseSignal(Signal) { // Main.MessageLog("OnRiseSignal / Step = "+Step+" / Signal.name = "+Signal.name+" / Signal.price ="+Signal.price); // 여기서 이미 Step은 undefined로 나옴... if (Step == 0 && Signal.name == "1B") { var ChartCode = Main.GetOrderCode(Chart1.GetCode(1)); var P_1B = Signal.price; var ID_1B = Account1.OrderBuy(ChartCode, Signal.count, P_1B, 0); var Step = 1; } } 대단히 감사합니다!
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2013-09-11 15:21:14

안녕하세요 예스스탁입니다. 수식에 보시면 step변수가 전역변수로 선언된 후 function Chart1_OnRiseSignal(Signal) 이벤트에서 조건만족하면 다시 지역변수로 변경이 됩니다. 아래와 같이 var 키워드를 없애 계속 전역변수로 사용하시면 됩니다. if (Step == 0 && Signal.name == "1B") { var ChartCode = Main.GetOrderCode(Chart1.GetCode(1)); var P_1B = Signal.price; var ID_1B = Account1.OrderBuy(ChartCode, Signal.count, P_1B, 0); Step = 1; } 즐거운 하루되세요 > 즐겁게 님이 쓴 글입니다. > 제목 : 문의 올립니다. > 안녕하십니까. 항상 친절하신 답변 감사드립니다. 미체결, 미결제가 없는 상태에서만 신규매수진입이 되도록 하기 위해 Step이라는 변수를 설정해서 이용하고자 하는데, 아래의 소스에서 보듯이, Q&A 예문 등에서 일반적으로 보이는 바와 같이, 함수 바깥에서 Step을 선언해 주고, function Main_OnStart() 에서 초기값 0을 대입해 주고, function Chart1_OnRiseSignal(Signal) 에서, 이 값이 0일 경우에만 매수진입 주문이 나갈 수 있도록 하였는데, function Chart1_OnRiseSignal(Signal) 속의 { } 속 맨 처음에 MessageLog로 이 Step의 값을 체크해 보면, 0이 아니라 undefined로 나옵니다. 어떤 부분을 제가 잘못한 건지, 어떻게 고쳐야 하는 건지 알려 주시면 대단히 감사하겠습니다. ((아래 소스는, 간단히 볼 수 있게 하기 위해, 다른 거 다 지우고 Step과 직결되는 것들만 남겨 보았습니다)) var ID_1B; var Step; function Main_OnStart() { Step = 0; Main.MessageLog("OnStart / Step = "+Step+" / Signal.name = "+Signal.name+" / Signal.price ="+Signal.price); } // 차트에서 매수신호 발생 function Chart1_OnRiseSignal(Signal) { // Main.MessageLog("OnRiseSignal / Step = "+Step+" / Signal.name = "+Signal.name+" / Signal.price ="+Signal.price); // 여기서 이미 Step은 undefined로 나옴... if (Step == 0 && Signal.name == "1B") { var ChartCode = Main.GetOrderCode(Chart1.GetCode(1)); var P_1B = Signal.price; var ID_1B = Account1.OrderBuy(ChartCode, Signal.count, P_1B, 0); var Step = 1; } } 대단히 감사합니다!
프로필 이미지

즐겁게

2013-09-11 15:32:57

대단히 감사합니다!