안녕하십니까.
항상 친절하신 답변 감사드립니다.
미체결, 미결제가 없는 상태에서만 신규매수진입이 되도록 하기 위해 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;
}
}
대단히 감사합니다!