답변완료
수식작성 문의드립니다.
수고많으세요. 궁금한게 있어 질문드립니다.
먼저 수식을 적용하고, 매매를 해보고,
매매를 한 상태에서 수식을 적용해보았습니다.
청산이 되지 않는 경우가 있는데 왜 그런지 궁금합니다.
(수식)
var tEnable = true, BID,SID,Bnum,Snum;
function Main_OnStart()
{
Main.MessageLog("청산식 시작");
}
function Main_OnU*dateMarket(sItemCode, lU*dateID)
{
if (sItemCode == M1.code && lU*dateID == 20001 && tEnable == true) {
A1.SetBalanceItem(M1.code,0);
if (A1.Balance.profit > tProfit || A1.Balance.profit < tLoss) {
if (A1.Balance.position == 1 && tEnable == true) {
BID = A1.OrderBuy(A1.Balance.code, A1.Balance.count, 0, 1);
tEnable = false;
}
else if (A1.Balance.postion == 2 && tEnable == true) {
SID = A1.OrderSell(A1.Balance.code, A1.Balance.count, 0, 1);
tEnable = false;
}
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == BID)
Bnum = OrderResponse.orderNum;
else if(OrderResponse.orderID == SID)
Snum = OrderResponse.orderNum;
}
function Main_OnNotifyFill(NotifyFill)
{
if (NotifyFill.orderNum == Bnum) {
Main.MessageList("매도청산");
tEnable = true;
}
else if (NotifyFill.orderNum == Snum) {
Main.MessageList("매수청산");
tEnable = true;
}
}
2019-06-07
3258
글번호 224895
답변완료
확인및 수식 부탁드립니다.
안녕하세요
예스스팟을 이용하여 아래의 예스랭귀지 수식을 사용하고자 합니다.
* 아래의 기본적인 시스템수식을 예스스팟을 이용하여 실행하기 위해 아래부분을 추가한 스팟 수식을 부탁드립니다.
(1) 거래는 1계약을 기준으로 실행한다.
(2) 스팟 최초 실행후 미체결 상태가 있는경우, 미체결을 취소한다.
(3) 스팟실행후 매수포지션(잔고)이 있는 상태에서, (+15틱 이상 수익상태인 경우 즉시 청산하고 아닌경우는) 신호
가 매수 청산 신호가 발생하면 청산하고, 매수신호 또는 매도청산 신호인 경우 실행하지 않으며, 매도 신호인
경우 진입된 매수포지션을 청산하고, 새로 매도 1계약 진입한다.
(4) 3번에서 매도포지션 보유 경우도 같은 방식으로 처리한다.
(5) 진입신호시, 같은 포지션이 존재하는 경우, 추가 진입하지 않는다.(1계약)
(6) 신호발생후 미체결인 있는 경우, 30초후 1호가(유리호가) 정정주문하고, 2분후에도
미체결 상태이면 취소처리하고, 미체결에 대한 청산 또는 익절/손절 부분도 처리되지 않도록 설정한다.
(7) 진입후 익절(20틱)/손절(20틱) 청산 한다.
(8) 거래 시간을 18:00 ~ 23:00 까지로 제한
(9) 진입한 상태에서 손실 또는 수익이 증거금의 10% 이상 발생하는 경우 전량 청산 하고 당일 거래를 종료하도록 설정
항상 많은 도움에 감사드립니다.
// --------------------------------------------------------
// 시스템 수식 : GC-2060
// --------------------------------------------------------
Input : shortPeriod(5), midPeriod(20), longPeriod(60);
value1 = ma(C, shortPeriod);
value2 = ma(C, midPeriod);
value3 = ma(C, longPeriod);
# 매수
If CrossUP(value1, value2) Then
{
Buy();
}
# 매수청산
If CrossUP(value2, value3) Then
{
ExitLong();
}
# 매도
If CrossDown(value1, value2) Then
{
Sell();
}
# 매도청산
If CrossUP(value2, value3) Then
{
ExitShort();
}
// --------------------------------------------------------
감사합니다.
2019-05-29
3493
글번호 224879