예스스탁
예스스탁 답변
2018-05-10 14:19:43
안녕하세요
예스스탁입니다.
1
수식내에 ReqMarketData는 어떤 용도인지 모르겠습니다.
차트에서 신호가 발생하면 MarketData1로 주문이 집행되고 있습니다.
이미 주문낸 종목에 대해 객체(MarketData1)가 있으므로
해당 종목에 대해 별도로 객체를 요청하실 필요가 없습니다.
이미 존재하는 종목객체에 대해 반복적으로 요청도 가능하지 않습니다.
2
올려주신 내용이면 호가공백에 의한 미체결이 아닌
매수/매도 5호가로 주문을 집행했는데 호가에 공백이 있어
해당 가격이 없어 주문이 거부되는 것을 막고자 하시는것 같습니다.
신호발생시와 정정주문시 호가공백제외하고
가격지정되게 내용 추가해 드립니다.
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
ORDER_VOL = 1;
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~5
for (var i = 1; i <= 5; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 && MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 && MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
}
//미체결 정정주문
var Onum;
var OCode;
var OKind;
function Main_OnOrderResponse(OrderResponse)
{
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
Main.SetTimer(1, 5000);//5초 타이머
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Account1.SetUnfillOrderNumber(ONum);
if (Account1.Unfill.count > 0)
{
Main.ReqMarketData(OCode,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
if (MarketData.code == ONum)
{
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~2
for (var i = 1; i <= 2; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 && MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 && MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
Account1.SetUnfillOrderNumber(ONum)
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, BidPrice);
}
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, AskPrice);
}
Main.RemoveMarketData(Object);
}
}
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수식 오류 수정 부탁 드림니다.
> 안녕하세요.
연결선물을 미니선물 예스스팟 신호 적용 아래수식 오류 수정 부탁 드립니다.
메인신호 호가공백 미체결 발생시 정정주문 체결이 안되네요.
수정한 부분 주석 부탁 드립니다.
감사합니다.
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
ORDER_VOL = 1;
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
if (Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
if (Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
}
//미체결 정정주문
var Onum;
var OCode;
var OKind;
function Main_OnOrderResponse(OrderResponse)
{
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
Main.SetTimer(1, 5000);//5초 타이머
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Account1.SetUnfillOrderNumber(ONum);
if (Account1.Unfill.count > 0)
{
Main.ReqMarketData(OCode,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
if (MarketData.code == ONum)
{
Account1.SetUnfillOrderNumber(ONum)
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, MarketData.Bid(2));
}
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, MarketData.Ask(2));
}
Main.RemoveMarketData(Object);
}
}
dandy
2018-05-10 09:28:27
안녕하세요
수정해주신 아래 수식을 예스스팟에 적용할경우 스팟 에러메세지가 나타나네요.
스팟 차트에 적용해 보시고 수식점검 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 오류 수정 부탁 드림니다.
>
안녕하세요
예스스탁입니다.
1
수식내에 ReqMarketData는 어떤 용도인지 모르겠습니다.
차트에서 신호가 발생하면 MarketData1로 주문이 집행되고 있습니다.
이미 주문낸 종목에 대해 객체(MarketData1)가 있으므로
해당 종목에 대해 별도로 객체를 요청하실 필요가 없습니다.
이미 존재하는 종목객체에 대해 반복적으로 요청도 가능하지 않습니다.
2
올려주신 내용이면 호가공백에 의한 미체결이 아닌
매수/매도 5호가로 주문을 집행했는데 호가에 공백이 있어
해당 가격이 없어 주문이 거부되는 것을 막고자 하시는것 같습니다.
신호발생시와 정정주문시 호가공백제외하고
가격지정되게 내용 추가해 드립니다.
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
ORDER_VOL = 1;
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~5
for (var i = 1; i <= 5; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 and MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 and MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
}
//미체결 정정주문
var Onum;
var OCode;
var OKind;
function Main_OnOrderResponse(OrderResponse)
{
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
Main.SetTimer(1, 5000);//5초 타이머
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Account1.SetUnfillOrderNumber(ONum);
if (Account1.Unfill.count > 0)
{
Main.ReqMarketData(OCode,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
if (MarketData.code == ONum)
{
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~2
for (var i = 1; i <= 2; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 and MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 and MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
Account1.SetUnfillOrderNumber(ONum)
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, BidPrice);
}
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, AskPrice);
}
Main.RemoveMarketData(Object);
}
}
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수식 오류 수정 부탁 드림니다.
> 안녕하세요.
연결선물을 미니선물 예스스팟 신호 적용 아래수식 오류 수정 부탁 드립니다.
메인신호 호가공백 미체결 발생시 정정주문 체결이 안되네요.
수정한 부분 주석 부탁 드립니다.
감사합니다.
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
ORDER_VOL = 1;
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
if (Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
if (Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
}
//미체결 정정주문
var Onum;
var OCode;
var OKind;
function Main_OnOrderResponse(OrderResponse)
{
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
Main.SetTimer(1, 5000);//5초 타이머
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Account1.SetUnfillOrderNumber(ONum);
if (Account1.Unfill.count > 0)
{
Main.ReqMarketData(OCode,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
if (MarketData.code == ONum)
{
Account1.SetUnfillOrderNumber(ONum)
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, MarketData.Bid(2));
}
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, MarketData.Ask(2));
}
Main.RemoveMarketData(Object);
}
}
예스스탁
예스스탁 답변
2018-05-10 10:19:12
안녕하세요
예스스탁입니다.
수정한 식입니다.
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
Main.MessageList(Signal.signalKind);
ORDER_VOL = 1;
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~5
for (var i = 1; i <= 5; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 && MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 && MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
}
//미체결 정정주문
var Onum;
var OCode;
var OKind;
function Main_OnOrderResponse(OrderResponse)
{
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
Main.SetTimer(1, 5000);//5초 타이머
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Account1.SetUnfillOrderNumber(ONum);
if (Account1.Unfill.count > 0)
{
Main.ReqMarketData(OCode,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
if (MarketData.code == ONum)
{
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~2
for (var i = 1; i <= 2; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 && MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 && MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
Account1.SetUnfillOrderNumber(ONum)
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, BidPrice);
}
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, AskPrice);
}
Main.RemoveMarketData(Object);
}
}
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : Re : Re : 수식 오류 수정 부탁 드림니다.
> 안녕하세요
수정해주신 아래 수식을 예스스팟에 적용할경우 스팟 에러메세지가 나타나네요.
스팟 차트에 적용해 보시고 수식점검 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 오류 수정 부탁 드림니다.
>
안녕하세요
예스스탁입니다.
1
수식내에 ReqMarketData는 어떤 용도인지 모르겠습니다.
차트에서 신호가 발생하면 MarketData1로 주문이 집행되고 있습니다.
이미 주문낸 종목에 대해 객체(MarketData1)가 있으므로
해당 종목에 대해 별도로 객체를 요청하실 필요가 없습니다.
이미 존재하는 종목객체에 대해 반복적으로 요청도 가능하지 않습니다.
2
올려주신 내용이면 호가공백에 의한 미체결이 아닌
매수/매도 5호가로 주문을 집행했는데 호가에 공백이 있어
해당 가격이 없어 주문이 거부되는 것을 막고자 하시는것 같습니다.
신호발생시와 정정주문시 호가공백제외하고
가격지정되게 내용 추가해 드립니다.
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
ORDER_VOL = 1;
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~5
for (var i = 1; i <= 5; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 and MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 and MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, BidPrice, 0);
}
if (Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, AskPrice, 0);
}
}
//미체결 정정주문
var Onum;
var OCode;
var OKind;
function Main_OnOrderResponse(OrderResponse)
{
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
Main.SetTimer(1, 5000);//5초 타이머
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Account1.SetUnfillOrderNumber(ONum);
if (Account1.Unfill.count > 0)
{
Main.ReqMarketData(OCode,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
if (MarketData.code == ONum)
{
var AskPrice = MarketData1.current;
var BidPrice = MarketData1.current;
//루프 1~2
for (var i = 1; i <= 2; i++)
{
//호가가 존재하는 가격만 대상으로 현재가~매도5호가 중 가장 큰값
if (MarketData1.Ask(i) > 0 and MarketData1.Ask(i) > AskPrice)
{
AskPrice = MarketData1.Ask(i);
}
//호가가 존재하는 가격만 대상으로 현재가~매수5호가 중 가장 작은값
if (MarketData1.Bid(i) > 0 and MarketData1.Bid(i) < BidPrice)
{
BidPrice = MarketData1.Bid(i);
}
}
Account1.SetUnfillOrderNumber(ONum)
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, BidPrice);
}
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, AskPrice);
}
Main.RemoveMarketData(Object);
}
}
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수식 오류 수정 부탁 드림니다.
> 안녕하세요.
연결선물을 미니선물 예스스팟 신호 적용 아래수식 오류 수정 부탁 드립니다.
메인신호 호가공백 미체결 발생시 정정주문 체결이 안되네요.
수정한 부분 주석 부탁 드립니다.
감사합니다.
//차트에서 신호발생
function Chart1_OnRiseSignal(Signal)
{
ORDER_VOL = 1;
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
if (Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Bid(5), 0);
}
if (Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), ORDER_VOL * Signal.count, MarketData1.Ask(5), 0);
}
}
//미체결 정정주문
var Onum;
var OCode;
var OKind;
function Main_OnOrderResponse(OrderResponse)
{
ONum = OrderResponse.orderNum;
OCode = OrderResponse.code;
OKind = OrderResponse.orderKind;
Main.SetTimer(1, 5000);//5초 타이머
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.KillTimer(1);
Account1.SetUnfillOrderNumber(ONum);
if (Account1.Unfill.count > 0)
{
Main.ReqMarketData(OCode,0,0);
}
}
}
function Main_OnRcvMarketData(MarketData)
{
var Object = MarketData;
if (MarketData.code == ONum)
{
Account1.SetUnfillOrderNumber(ONum)
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
{
Account1.OrderReplacePrice(ONum, MarketData.Bid(2));
}
if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
{
Account1.OrderReplacePrice(ONum, MarketData.Ask(2));
}
Main.RemoveMarketData(Object);
}
}
dandy
2018-05-10 13:55:53
dandy 님에 의해 삭제된 답변입니다.
예스스탁
예스스탁 답변
2018-05-10 14:12:57
안녕하세요
예스스탁입니다.
예스스팟은 자바스크립트언어가 탑제되어 있고
기본적으로 코딩을 하실수 있어야 사용이 가능합니다.
수식답변도 기본적으로 가이드만 제공해 드립니다.완성된 내용이 아닙니다.
메시지처리와 같은 부분은 기본적인 코딩이고 해당 부분은 사용자분이 처리하셔야 합니다.
즐거운 하루되세요