예스스탁
예스스탁 답변
2016-11-09 10:37:51
안녕하세요
예스스탁입니다.
1
수식에 동일이벤트가 여러번 사용되어 있습니다.
이벤트는 하나씩만 사용하셔야 합니다.
하나의 수식에 동일이벤트가 여러개 이면 가장 아래쪽 이벤트의 내용만 동작합니다.
2
매수진입후/매도진입후 타이머가
5분경과하면 종료됩니다.
종료가 되면 이후에 동작하는 타이머가 없으므로
동시호가를 체크할수 없습니다.
시간 체크는 다른 타이머를 두어 체크하게 하셔야 합니다.
3
아래 내용 참고하셔서 수정보완하시기 바랍니다.
var Tcnt1,Tcnt2;
function Main_OnStart()
{
//99번 타이머,10초 간격
Main.SetTimer(99,10000);
}
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt1 = 0;
}
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//2번 타이머 1초 셋팅
Main.SetTimer(2, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt2 = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt1 = Tcnt1+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt1 == 290)
{
Main.KillTimer(1);
}
}
//2번타이머
if (nEventID == 2)
{
//카운트가 1씩 증가
Tcnt2 = Tcnt2+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt2 == 290)
{
Main.KillTimer(1);
}
}
//15시 36분에 잔고에 포지션 있으면 청산
if (nEventID == 99 && HHMMSS >= 153600)
{
//타이머 모두 종료
Main.KillTimer(1);
Main.KillTimer(2);
Main.KillTimer(99);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
즐거운 하루되세요
> 궁금궁금123 님이 쓴 글입니다.
> 제목 : 수식을 만들었는데 에러가 납니다.
> 제가 만들어봤는데 에러가 나고 주문이 안됩니다.
1. 매수(도)신호가 나오면 신호가로 매수(도) 주문이 1계약 들어가고 그 뒤로 5분간 1초에 한번씩 매수(도)주문이 반복해서 들어감(1계약 -> 1계약 -> 1계약 계속적으로 5분간 반복 주문)
2. 동시호가에 잔고가 있으면 시장가 청산
현재 신호가로 주문이 잘 반복적으로 주문되지도 않고 시장가로 청산도 안됩니다. 어디가 문제인가요? 수정 부탁드립니다. 감사합니다.
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
//15시 36분에 잔고에 포지션 있으면 청산
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//15시 36분 이후
if (nEventID == 1 && HHMMSS >= 153600)
{
//타이머 종료
Main.KillTimer(1);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
궁금궁금123
2016-12-02 09:32:58
ReferenceError: Signal is not defined
이 에러가 나면서 처음 1계약만 주문이 들어가고 그 뒤로 주문이 들어가지 않습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식을 만들었는데 에러가 납니다.
> 안녕하세요
예스스탁입니다.
1
수식에 동일이벤트가 여러번 사용되어 있습니다.
이벤트는 하나씩만 사용하셔야 합니다.
하나의 수식에 동일이벤트가 여러개 이면 가장 아래쪽 이벤트의 내용만 동작합니다.
2
매수진입후/매도진입후 타이머가
5분경과하면 종료됩니다.
종료가 되면 이후에 동작하는 타이머가 없으므로
동시호가를 체크할수 없습니다.
시간 체크는 다른 타이머를 두어 체크하게 하셔야 합니다.
3
아래 내용 참고하셔서 수정보완하시기 바랍니다.
var Tcnt1,Tcnt2;
function Main_OnStart()
{
//99번 타이머,10초 간격
Main.SetTimer(99,10000);
}
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt1 = 0;
}
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//2번 타이머 1초 셋팅
Main.SetTimer(2, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt2 = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt1 = Tcnt1+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt1 == 290)
{
Main.KillTimer(1);
}
}
//2번타이머
if (nEventID == 2)
{
//카운트가 1씩 증가
Tcnt2 = Tcnt2+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt2 == 290)
{
Main.KillTimer(1);
}
}
//15시 36분에 잔고에 포지션 있으면 청산
if (nEventID == 99 && HHMMSS >= 153600)
{
//타이머 모두 종료
Main.KillTimer(1);
Main.KillTimer(2);
Main.KillTimer(99);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
즐거운 하루되세요
> 궁금궁금123 님이 쓴 글입니다.
> 제목 : 수식을 만들었는데 에러가 납니다.
> 제가 만들어봤는데 에러가 나고 주문이 안됩니다.
1. 매수(도)신호가 나오면 신호가로 매수(도) 주문이 1계약 들어가고 그 뒤로 5분간 1초에 한번씩 매수(도)주문이 반복해서 들어감(1계약 -> 1계약 -> 1계약 계속적으로 5분간 반복 주문)
2. 동시호가에 잔고가 있으면 시장가 청산
현재 신호가로 주문이 잘 반복적으로 주문되지도 않고 시장가로 청산도 안됩니다. 어디가 문제인가요? 수정 부탁드립니다. 감사합니다.
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
//15시 36분에 잔고에 포지션 있으면 청산
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//15시 36분 이후
if (nEventID == 1 && HHMMSS >= 153600)
{
//타이머 종료
Main.KillTimer(1);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
예스스탁
예스스탁 답변
2016-12-06 14:57:14
안녕하세요
예스스탁입니다.
추가주문의 주문가격이 잘못되어 있어 수정했습니다.
var Tcnt1,Tcnt2,BP,SP;
function Main_OnStart()
{
//99번 타이머,10초 간격
Main.SetTimer(99,10000);
}
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
BP = Signal.price;
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt1 = 0;
}
//매도진입신호 발생
if (Signal.signalKind == 3)
{
SP = Signal.price;
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//2번 타이머 1초 셋팅
Main.SetTimer(2, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt2 = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt1 = Tcnt1+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, BP,0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt1 == 290)
{
Main.KillTimer(1);
}
}
//2번타이머
if (nEventID == 2)
{
//카운트가 1씩 증가
Tcnt2 = Tcnt2+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, SP,0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt2 == 290)
{
Main.KillTimer(2);
}
}
//15시 36분에 잔고에 포지션 있으면 청산
if (nEventID == 99 && HHMMSS >= 153600)
{
//타이머 모두 종료
Main.KillTimer(1);
Main.KillTimer(2);
Main.KillTimer(99);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
즐거운 하루되세요
> 궁금궁금123 님이 쓴 글입니다.
> 제목 : Re : Re : 이 수식도 에러가 납니다.
> ReferenceError: Signal is not defined
이 에러가 나면서 처음 1계약만 주문이 들어가고 그 뒤로 주문이 들어가지 않습니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식을 만들었는데 에러가 납니다.
> 안녕하세요
예스스탁입니다.
1
수식에 동일이벤트가 여러번 사용되어 있습니다.
이벤트는 하나씩만 사용하셔야 합니다.
하나의 수식에 동일이벤트가 여러개 이면 가장 아래쪽 이벤트의 내용만 동작합니다.
2
매수진입후/매도진입후 타이머가
5분경과하면 종료됩니다.
종료가 되면 이후에 동작하는 타이머가 없으므로
동시호가를 체크할수 없습니다.
시간 체크는 다른 타이머를 두어 체크하게 하셔야 합니다.
3
아래 내용 참고하셔서 수정보완하시기 바랍니다.
var Tcnt1,Tcnt2;
function Main_OnStart()
{
//99번 타이머,10초 간격
Main.SetTimer(99,10000);
}
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt1 = 0;
}
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//2번 타이머 1초 셋팅
Main.SetTimer(2, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt2 = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt1 = Tcnt1+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt1 == 290)
{
Main.KillTimer(1);
}
}
//2번타이머
if (nEventID == 2)
{
//카운트가 1씩 증가
Tcnt2 = Tcnt2+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt2 == 290)
{
Main.KillTimer(1);
}
}
//15시 36분에 잔고에 포지션 있으면 청산
if (nEventID == 99 && HHMMSS >= 153600)
{
//타이머 모두 종료
Main.KillTimer(1);
Main.KillTimer(2);
Main.KillTimer(99);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
즐거운 하루되세요
> 궁금궁금123 님이 쓴 글입니다.
> 제목 : 수식을 만들었는데 에러가 납니다.
> 제가 만들어봤는데 에러가 나고 주문이 안됩니다.
1. 매수(도)신호가 나오면 신호가로 매수(도) 주문이 1계약 들어가고 그 뒤로 5분간 1초에 한번씩 매수(도)주문이 반복해서 들어감(1계약 -> 1계약 -> 1계약 계속적으로 5분간 반복 주문)
2. 동시호가에 잔고가 있으면 시장가 청산
현재 신호가로 주문이 잘 반복적으로 주문되지도 않고 시장가로 청산도 안됩니다. 어디가 문제인가요? 수정 부탁드립니다. 감사합니다.
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매수진입신호 발생
if (Signal.signalKind == 1)
{
//매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
var Tcnt;
function Chart1_OnRiseSignal(Signal)
{
//매도진입신호 발생
if (Signal.signalKind == 3)
{
//매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
//1번 타이머 1초 셋팅
Main.SetTimer(1, 1000);
//타이머 동작 카운트 값은 초기값 0
Tcnt = 0;
}
}
//타이머 동작
function Main_OnTimer(nEventID)
{
//1번타이머
if (nEventID == 1)
{
//카운트가 1씩 증가
Tcnt = Tcnt+1;
//타이머 동작시마다 주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0);
// 4분 50초가 290초 이므로 카운트가 290번이 되면 1번 타이머 종료
if (Tcnt == 290)
{
Main.KillTimer(1);
}
}
}
//15시 36분에 잔고에 포지션 있으면 청산
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//15시 36분 이후
if (nEventID == 1 && HHMMSS >= 153600)
{
//타이머 종료
Main.KillTimer(1);
Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0);
//매수포지션이면
if (Account1.Balance.position == 1)
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
//매도포지션이면
if (Account1.Balance.position == 2)
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}