예스스탁
예스스탁 답변
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, "]");
}
}