커뮤니티
행복; 수식 작성 바랍니다
2014-02-14 13:23:57
201
글번호 72573
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
시스템식 작성 바랍니다
< 아래 > 의 시스템식에서 에러가 있습니다
===========< 아래 >===========================
If Date == 20140206 Then {
IF MarketPosition == 0 and stime < 112000 Then {
buy("b0x",AtStop,dayopen*(1+0.25/100),10);
}
If MarketPosition == 1 and stime < 112000 Then {
If CurrentContracts == 10 Then {
buy("b1x",AtStop,EntryPrice*(1+0.25/100),10);
ExitLong("el1x",AtStop,EntryPrice*(1-0.25/100),"",10,1);
}
If CurrentContracts == 20 Then {
buy("b2x",AtStop,EntryPrice*(1+0.5/100),10);
ExitLong("el2x",AtStop,EntryPrice,"",10,1);
}
If CurrentContracts == 30 Then {
buy("b3x",AtStop,EntryPrice*(1+0.75/100),10);
ExitLong("el3x",AtStop,EntryPrice*(1+0.25/100),"",10,1);
}
If CurrentContracts == 40 Then {
buy("b4x",AtStop,EntryPrice*(1+1/100),10);
ExitLong("el4x",AtStop,EntryPrice*(1+0.75/100),"",10,1);
}
}
If MarketPosition == 1 Then {
if stime >= 112000 Then {
ExitLong("b분할1",OnClose,def,"",Int(CurrentContracts*(1/3)),1);
} // 직전 잔고 30계약의 1/3 인 10계약을 청산하여 잔고는 20계약으로
if stime >= 130000 Then {
ExitLong("b분할2",OnClose,def,"",Int(CurrentContracts*(1/2)),1);
} // 직전 잔고 20계약의 1/2 인 10계약을 청산하여 잔고는 10계약으로
if stime >= 145000 Then {
ExitLong("b분할3");
} // 직전 잔고 10계약을 모두 청산하여 잔고는 0계약으로
}
}
==================================================================
======= 시스템식 < 아래 >의 조건은 ===============================
대상; 연결선물지수
주기; 10틱
일자; 2014년 2월 6일
진입&청산 수량; 1회당 10계약
진입&청산 시간; 11시 20분 이전에는
- 시초가 기준으로 0.25% 상승하면 buy 하고
- 최초진입가(entryprice) 기준으로 0.25% 상승할 때마다 추가로 buy 한다
- buy 하다가 0.25% 하락할 때마다 exitlong 한다
분할 청산 기간; 11시 20분 이후
- 분할 청산할 계약 수; 30계약( 11시13분18초에 10계약 buy 하여 30계약이 됨)
- 분할 청산 회수; 3회
- 1회당 분할 청산 계약 수; 10계약
- 1차 분할 청산 시점; 11시 20분 (10계약 청산 후 잔고는 20계약)
- 2차 분할 청산 시점; 13시 (10계약 청산 후 잔고는 10계약)
- 3차 분할 청산 시점; 14시 50분 (10계약 청산 후 잔고는 0계약)
====================================================================
그러나 성과보고서에 의하면
3회에 나누어 청산하는 계약수가
1차 분할; 20계약
2차 분할; 5계약
3차 분할; 5계약 입니다
무엇이 잘못되었는지요?
바로잡아 주시기 바랍니다
수고하십시요^^
답변 1
예스스탁 예스스탁 답변
2014-02-17 09:56:28
안녕하세요
예스스탁입니다.
최대 5회 진입이므로 아래와 같이 수정해 사용하시면 됩니다.
If Date == 20140206 Then {
IF MarketPosition == 0 and stime < 112000 Then {
buy("b1x",AtStop,dayopen*(1+0.25/100),10);
}
If MarketPosition == 1 and stime < 112000 Then {
If MaxContracts == CurrentContracts Then{
if CurrentContracts == 10 Then
buy("b2x",AtStop,dayopen*(1+0.50/100),10);
If CurrentContracts == 20 Then
buy("b3x",AtStop,dayopen*(1+0.75/100),10);
If CurrentContracts == 30 Then
buy("b4x",AtStop,dayopen*(1+1.00/100),10);
If CurrentContracts == 40 Then
buy("b5x",AtStop,dayopen*(1+1.25/100),10);
}
if CurrentContracts == 50 Then
ExitLong("el5_1x",AtStop,dayopen*(1+1.00/100),"",10,1);
if CurrentContracts == 40 Then
ExitLong("el5_2x",AtStop,dayopen*(1+0.75/100),"",10,1);
if CurrentContracts == 30 Then
ExitLong("el5_3x",AtStop,dayopen*(1+0.50/100),"",10,1);
if CurrentContracts == 20 Then
ExitLong("el5_4x",AtStop,dayopen*(1+0.25/100),"",10,1);
if CurrentContracts == 10 Then
ExitLong("el5_5x",AtStop,dayopen,"",10,1);
}
If MarketPosition == 1 and stime >= 112000 Then {
if stime > 112000 and Condition1 == false Then{
Condition1 = true;
ExitLong("b분할1",OnClose,def,"",Int(CurrentContracts*(1/3)),1);
}
if stime > 130000 and Condition2 == false Then{
Condition2 = true;
ExitLong("b분할2",OnClose,def,"",Int(CurrentContracts*(1/2)),1);
}
if stime > 145000 and Condition3 == false Then {
Condition3 = true;
ExitLong("b분할3");
}
}
}
if MarketPosition != 1 Then{
Condition1 = false;
Condition2 = False;
Condition3 = false;
}
2월 6일의 경우 아래와 같이 신호가 발생합니다
9:01:47에 시초가 대비 0.25%상승해 첫진입 (CurrentContracts 10)
9:03:01에 시초가 대비 0.50%상승해 두번째 진입 (CurrentContracts 20)
9:34:18에 시초가 대비 0.75%상승해 세번째 진입 (CurrentContracts 30)
10:11:03에 시초가 대비 0.50%까지 하락해 10계약 청산 (CurrentContracts 20)
11:20:00에 1/3 청산 (CurrentContracts 14)
13:00:05에 1/2 청산 (CurrentContracts 7)
14:50:02에 전량 청산 (CurrentContracts 0)
즐거운 하루되세요
> 행복한가방 님이 쓴 글입니다.
> 제목 : 행복; 수식 작성 바랍니다
> 한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
시스템식 작성 바랍니다
< 아래 > 의 시스템식에서 에러가 있습니다
===========< 아래 >===========================
If Date == 20140206 Then {
IF MarketPosition == 0 and stime < 112000 Then {
buy("b0x",AtStop,dayopen*(1+0.25/100),10);
}
If MarketPosition == 1 and stime < 112000 Then {
If CurrentContracts == 10 Then {
buy("b1x",AtStop,EntryPrice*(1+0.25/100),10);
ExitLong("el1x",AtStop,EntryPrice*(1-0.25/100),"",10,1);
}
If CurrentContracts == 20 Then {
buy("b2x",AtStop,EntryPrice*(1+0.5/100),10);
ExitLong("el2x",AtStop,EntryPrice,"",10,1);
}
If CurrentContracts == 30 Then {
buy("b3x",AtStop,EntryPrice*(1+0.75/100),10);
ExitLong("el3x",AtStop,EntryPrice*(1+0.25/100),"",10,1);
}
If CurrentContracts == 40 Then {
buy("b4x",AtStop,EntryPrice*(1+1/100),10);
ExitLong("el4x",AtStop,EntryPrice*(1+0.75/100),"",10,1);
}
}
If MarketPosition == 1 Then {
if stime >= 112000 Then {
ExitLong("b분할1",OnClose,def,"",Int(CurrentContracts*(1/3)),1);
} // 직전 잔고 30계약의 1/3 인 10계약을 청산하여 잔고는 20계약으로
if stime >= 130000 Then {
ExitLong("b분할2",OnClose,def,"",Int(CurrentContracts*(1/2)),1);
} // 직전 잔고 20계약의 1/2 인 10계약을 청산하여 잔고는 10계약으로
if stime >= 145000 Then {
ExitLong("b분할3");
} // 직전 잔고 10계약을 모두 청산하여 잔고는 0계약으로
}
}
==================================================================
======= 시스템식 < 아래 >의 조건은 ===============================
대상; 연결선물지수
주기; 10틱
일자; 2014년 2월 6일
진입&청산 수량; 1회당 10계약
진입&청산 시간; 11시 20분 이전에는
- 시초가 기준으로 0.25% 상승하면 buy 하고
- 최초진입가(entryprice) 기준으로 0.25% 상승할 때마다 추가로 buy 한다
- buy 하다가 0.25% 하락할 때마다 exitlong 한다
분할 청산 기간; 11시 20분 이후
- 분할 청산할 계약 수; 30계약( 11시13분18초에 10계약 buy 하여 30계약이 됨)
- 분할 청산 회수; 3회
- 1회당 분할 청산 계약 수; 10계약
- 1차 분할 청산 시점; 11시 20분 (10계약 청산 후 잔고는 20계약)
- 2차 분할 청산 시점; 13시 (10계약 청산 후 잔고는 10계약)
- 3차 분할 청산 시점; 14시 50분 (10계약 청산 후 잔고는 0계약)
====================================================================
그러나 성과보고서에 의하면
3회에 나누어 청산하는 계약수가
1차 분할; 20계약
2차 분할; 5계약
3차 분할; 5계약 입니다
무엇이 잘못되었는지요?
바로잡아 주시기 바랍니다
수고하십시요^^