답변완료
시험적용시 체결가가 0으로 뜨며 예비신호시 주문방법
이제 갓 배운 초보로 간단한 수식을 만들어서 테스트 중입니다.
1. 예스스팟으로 간단한 전략을 작성해서 시험적용을 해봤는데. 신호를 받아서 주문이 나가긴 하는데 체결가가 0으로 뜨는 이유는 뭘까요? 원래 그런건지 제가 뭘 잘못한건지요^^
2. 예스랭귀지로 시스템을 만들어서 매매신호가 뜨면 예스스팟으로 매매주문이 나가게 했는데
제가 알기로 예스랭귀지는 봉이 완성되야 주문이 나가지만 예스스팟은 예비 신호만 떠도 주문이 나가는 걸로 알고 있는데 테스트 해보니 똑같이 봉이 완성되니까 주문이 나가더라고요.
아래 수식으로 만들었는데 예스스팟도 봉이 완성되야 주문이 나가는 건가요?
if (Signal.signalKind == 3 ) //Sell신호를 받은 경우
{
Start = 1;
A1.OrderSell(Code2, Vol, 0, 1);
A1.OrderBuy(Code1, Vol, 0, 1);
Main.MessageLog("1매수,2매도");
}
이렇게 만들었습니다~
2015-09-17
2054
글번호 223655
답변완료
미체결정정 복수개의 차트 적용방법 문의
안녕하세요 매번도움 감사드립니다.
아래와 같은 미체결발생시 주문정정 하는 코드를 검색하였습니다
아래코드를 3개의차트에 적용하는 코드 부탁 드립니다.
(각 차트에서 매수매도 신호발생시 각 차트종목의 주문 미체결에 따른 정정주문)
-------------------------아래-----------------------
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);
            //Onum주문번호 미체결 셋팅
            Account1.SetUnfillOrderNumber(ONum);
            //미체결로 남아 있으면
            if (Account1.Unfill.count > 0)
            {
                  //종목객체 요청
                  Main.ReqMarketData(OCode,0,0);                  
            }
      }
}
//종목객체 수신
function Main_OnRcvMarketData(MarketData)
{
      var Object = MarketData;
      //수신받은 종목객체가 Onum과 같으면
    if (MarketData.code == ONum)
      {
            Account1.SetUnfillOrderNumber(ONum);
            //수량이 남아 있고 매도주문이면 매수2호가로 정정
            if (Account1.Unfill.count > 0 && Account1.Unfill.position == 1)
            {
                  Account1.OrderReplacePrice(ONum, MarketData.Bid(2));
            }
            //수량이 남아 있고 매수주문이면 매도2호가로 정정
            if (Account1.Unfill.count > 0 && Account1.Unfill.position == 2)
            {
                  Account1.OrderReplacePrice(ONum, MarketData.Ask(2));
            }
            //사용이 끝났으므로 수신받은 종목객체는 삭제
            Main.RemoveMarketData(Object);
      }
}
2015-09-16
2135
글번호 223654
답변완료
스팟으로 집입횟수 제한
안녕하세요~ 언제나 한결같은 답변 감사드립니다.
예스랭귀지가 아닌 스팟으로 진입횟수를 제한하고 싶습니다.
게시물 살펴보니 "GetUserValue"를 사용해서 제한한다고 나와있던데
아래 샘플 스팟수식은 선물신호발생시 미니선물 거래하는 예제입니다.
당일 스팟 진입청산을 3회로 제한하고 싶습니다. 부탁드립니다.
=================================================================
function Main_OnStart()
{
Main.MessageList("시작");
T = 0;
}
function Chart1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
T = 1;
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),1,MarketData1.Ask(5), 0);
}
if (T == 1 && Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1,MarketData1.Bid(5), 0);
}
if (Signal.signalKind == 3)
{
T = -1;
Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1,MarketData1.Bid(5), 0);
}
if (T == -1 && Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),1,MarketData1.Ask(5), 0);
}
}
=======================================================================
답변 부탁드립니다. ~
2015-09-06
2079
글번호 223647
답변완료
잔고 청산
다음과 같이 선물과 옵션에 대한 잔고청산 로직에 문제점이 있는지요?
if ( lUpd*teID == 20001 && SellCond == 6
&& sItemCode == M1.code && M1.current >= BP )
{
A1.SetBalanceItem(Putcode,0);
if (A1.Balance.count > 0 && A1.Balance.position == 2 )
{
SellCond = 0;
Main.MessageList("SellCond:" ,SellCond);
A1.OrderSell(Putcode, A1.Balance.count, 0, 1);
}
}
if ( lUpd*teID == 20001 && SellCond == 6
&& sItemCode == M1.code && M1.current >= BP )
{
A1.SetBalanceItem(Main.GetOrderCode(M1.code),0);
if (A1.Balance.position == 1 )
{
SellCond = 0;
Main.MessageList("SellCond:" ,SellCond);
A1.OrderBuy(Main.GetOrderCode(M1.code), A1.Balance.count, M1.Ask(5), 0);
}
}
2015-09-04
2085
글번호 223646
답변완료
추가 수식문의드립니다.
아래 당일 고가 답변 감사드립니다.
조금 추가해서 질문드리자면
"현재가가 당일고가를 돌파하면 매수하라"는 식도 아래와 같이 동일하게 사용하면 되는지요?
감사합니다.
function Chart1_OnRiseSignal(Signal)
{
//차트에서 매수신호 발생하고 현재가가 당일최고가이면
if (Signal.signalKind == 1 && MarketData1.current == MarketData1.high )
{
//매도5호가로 1계약 매수
Account1.OrderBuy(Main.GetOrderCode(Signal.Code),1,MarketData1.Ask(5),0);
}
//차트에서 매도신호 발생하고 현재가가 당일최저가이면
if (Signal.signalKind == 1 && MarketData1.current == MarketData1.low )
{
//매수5호가로 1계약 매도
Account1.OrderSell(Main.GetOrderCode(Signal.Code),2,MarketData1.Bid(5),0);
}
}
2015-09-02
1982
글번호 223644