커뮤니티
수식 부탁드립니다.
2015-05-25 14:02:09
165
글번호 86377
안녕하십니까? 매번 성의있는 답변 감사드립니다.
예스랭귀지로 롤오버가 불가능하다는 것은 알았습니다.
그렇다면 롤오버를 수동으로 한다는 가정하에 아래와 같은 식이 가능한지요?
예를들어 5월물을 진입해서 보유중인데,
1.
매월 25일 15시에 강제 청산 하도록 하는 식.
2.
6월물에 수동으로 진입합니다.
그런데 5월물 시가 100을 기준으로 매수 진입했다고 치고,
현재 200 까지 올랐고 160 이 될 경우 트레일링스톱하기로 했는데,
5월 25일 15시 까지 160 까지 떨어지지 않고 180 쯤에 그냥 강제청산 했습니다.
그래서 6월물에 수동으로 175에 바로 매수진입 했습니다.
하지만 기존의 규칙대로 160 이 되면 트레일링 스톱 하기로 합니다.
그래서 아래의 기존의 식에 entryprice 나 nextbaropen 따위에
숫자 100 을 그대로 집어 넣는게 가능한지요?
그래서 매수 진입 자체는 수동으로 했지만,
수식에서는 100 * 1.01 로 이미 진입 보유한 상태로 알아서,
트레일링스탑 신호가 뜨면 청산을 하게 되는 것입니다.
즉,
원래 기존의 식에 의하면 매일 16시 시가를 기준으로 하는데,
롤오버 한 최초의 순간에는 직접 입력한 기준 시가인 100을 씁니다.
그리고 이 직접 100 을 써준 식이 1회라도 청산을 하게 되면
(손절에 걸리건 익절에 걸리건)
앞으로 그 6월물이 끝나기 전까지는 다시는 사용하지 않도록 하고,
그 이후부터는 다시 원래 쓰던 아래 기존의 식을 쓰도록 가능한지요?
요약해서 말씀 드리면,
25일 15시 5월물의 모든 포지션 강제청산.
6월 25 일에 보유 포지션 수동으로 매수 진입.
아래의 식에 나오는 기준 시가 100 을 직접 숫자로 써줌.(이렇게 해도 가능한지?)
수식은 현재 보유하고 있는 것으로 알고 트레일링 스톱이나 손절이 걸림.
이 때 시가 100 이라고 기준점을 직접 써 준 부분은 이렇게 1회만 절에 걸리면
더 이상 쓰지 않음.
그리고 이후 부터 기존의 식을 다시 씀.
input : N(1);
var : loss(0);
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
var1 = O;
Loss = 0;
}
if MarketPosition == 0 and CurrentContracts < CurrentContracts[1] and
(IsExitName("bx",1) == true or IsExitName("sx",1) == true) Then
loss = loss+1;
if MarketPosition == 0 and stime == 155000 Then
buy("b",AtStop,round(NextBarOpen*1.01,3));
if MarketPosition == 0 and stime == 155000 Then
sell("s",AtStop,round(NextBarOpen*0.99,3));
if loss < N then{
if MarketPosition == 0 and NextBarOpen <= round(var1*1.01,3) Then
buy("b1",AtStop,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen > round(var1*1.01,3) Then
buy("b2",Atlimit,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen >= round(var1*0.99,3) Then
sell("s1",AtStop,round(var1*0.99,3));
if MarketPosition == 0 and NextBarOpen < round(var1*0.99,3) Then
sell("s2",AtLimit,round(var1*0.99,3));
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,round(EntryPrice*0.99,3));
if MarketPosition == -1 Then
ExitShort("sx",AtStop,round(EntryPrice*1.01,3));
답변 1
예스스탁 예스스탁 답변
2015-05-26 13:57:05
안녕하세요
예스스탁입니다.
1.
var1 = int(sdate%100);
if var1 == 25 and (stime == 150000 or (stime > 150000 and stime[1] < 150000)) Then{
ExitLong();
ExitShort();
}
2.
시스템은 수동진입여부를 알수가 없습니다.
차트상 진입신호에 따라 진입가격을 인지합니다.
또한 식상에서 위 1번식으로 지정일 지정청산을 하면 차트상 무포지션입니다.
진입상태가 아니므로 이후에 신호상 진입이 발생하기 전까지는
청산신호도 발생할수가 없습니다.
전화주시기 바랍니다.(02-3453-1060)
즐거운 하루되세요
> spek 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다.
>
안녕하십니까? 매번 성의있는 답변 감사드립니다.
예스랭귀지로 롤오버가 불가능하다는 것은 알았습니다.
그렇다면 롤오버를 수동으로 한다는 가정하에 아래와 같은 식이 가능한지요?
예를들어 5월물을 진입해서 보유중인데,
1.
매월 25일 15시에 강제 청산 하도록 하는 식.
2.
6월물에 수동으로 진입합니다.
그런데 5월물 시가 100을 기준으로 매수 진입했다고 치고,
현재 200 까지 올랐고 160 이 될 경우 트레일링스톱하기로 했는데,
5월 25일 15시 까지 160 까지 떨어지지 않고 180 쯤에 그냥 강제청산 했습니다.
그래서 6월물에 수동으로 175에 바로 매수진입 했습니다.
하지만 기존의 규칙대로 160 이 되면 트레일링 스톱 하기로 합니다.
그래서 아래의 기존의 식에 entryprice 나 nextbaropen 따위에
숫자 100 을 그대로 집어 넣는게 가능한지요?
그래서 매수 진입 자체는 수동으로 했지만,
수식에서는 100 * 1.01 로 이미 진입 보유한 상태로 알아서,
트레일링스탑 신호가 뜨면 청산을 하게 되는 것입니다.
즉,
원래 기존의 식에 의하면 매일 16시 시가를 기준으로 하는데,
롤오버 한 최초의 순간에는 직접 입력한 기준 시가인 100을 씁니다.
그리고 이 직접 100 을 써준 식이 1회라도 청산을 하게 되면
(손절에 걸리건 익절에 걸리건)
앞으로 그 6월물이 끝나기 전까지는 다시는 사용하지 않도록 하고,
그 이후부터는 다시 원래 쓰던 아래 기존의 식을 쓰도록 가능한지요?
요약해서 말씀 드리면,
25일 15시 5월물의 모든 포지션 강제청산.
6월 25 일에 보유 포지션 수동으로 매수 진입.
아래의 식에 나오는 기준 시가 100 을 직접 숫자로 써줌.(이렇게 해도 가능한지?)
수식은 현재 보유하고 있는 것으로 알고 트레일링 스톱이나 손절이 걸림.
이 때 시가 100 이라고 기준점을 직접 써 준 부분은 이렇게 1회만 절에 걸리면
더 이상 쓰지 않음.
그리고 이후 부터 기존의 식을 다시 씀.
input : N(1);
var : loss(0);
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
var1 = O;
Loss = 0;
}
if MarketPosition == 0 and CurrentContracts < CurrentContracts[1] and
(IsExitName("bx",1) == true or IsExitName("sx",1) == true) Then
loss = loss+1;
if MarketPosition == 0 and stime == 155000 Then
buy("b",AtStop,round(NextBarOpen*1.01,3));
if MarketPosition == 0 and stime == 155000 Then
sell("s",AtStop,round(NextBarOpen*0.99,3));
if loss < N then{
if MarketPosition == 0 and NextBarOpen <= round(var1*1.01,3) Then
buy("b1",AtStop,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen > round(var1*1.01,3) Then
buy("b2",Atlimit,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen >= round(var1*0.99,3) Then
sell("s1",AtStop,round(var1*0.99,3));
if MarketPosition == 0 and NextBarOpen < round(var1*0.99,3) Then
sell("s2",AtLimit,round(var1*0.99,3));
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,round(EntryPrice*0.99,3));
if MarketPosition == -1 Then
ExitShort("sx",AtStop,round(EntryPrice*1.01,3));
다음글
이전글