커뮤니티
보내주신 수식대로 하니까 다르게 되네요... 확인 부탁드려요
2018-09-12 10:52:10
239
글번호 121987
첨부 차트는 쿠르드오일입니다.
조건:
1.일봉 5<10<20(역배열)이 아닐때 유효
2.매수 조건 : RSI(14)<25 & 전일/전전일 보다 낮은 때마다 매수(총 10계약)
3.매수 청산 : RSI(14)>70 전량 청산
4.매도 조건 : RSI(14)>80 & 전일/전전일 보다 높을 때마다 매도(총 10계약)
5.매도 청산 : RSI(14)>20 전량 청산
해당 조건의 수식은 다음과 같습니다.(알려주신 식)
input : P1(5),P2(10),P3(20);
var : count(0);
var : sumV1(0),sumV2(0),sumV3(0);
var : mav1(0),mav2(0),mav3(0),T(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3{
if count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumV2 = sumV2+DayClose(count);
if count < P3 Then
sumV3 = sumV3+DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
maV3 = sumV3 / P3;
if mav1 > mav2 and mav2 > mav3 Then
T = 1;
Else if mav1 < mav2 and mav2 < mav3 Then
T = -1;
Else
T = 0;
var1 = RSI(14);
if T >= 0 then
{
if var1 <= 25 and C < C[1] and C < C[2] and C < C[3] and
(MarketPosition <= 0 or (MarketPosition == 1 and MaxContracts < 10)) Then
buy("매수",OnClose,def,1);
}
if MarketPosition == 1 and var1 >= 70 Then
exitlong("매수청산");
if T >= 0 then
{
if var1 >= 80 and C > C[1] and C > C[2] and C > C[3] and
(MarketPosition <= 0 or (MarketPosition == -1 and MaxContracts < 10)) Then
Sell("매도",OnClose,def,1);
}
if MarketPosition == -1 and var1 < 20 Then
ExitShort("매도청산");
=======================================================================================
조건:
1.일봉 5<10<20(역배열)이 아닐때 유효
2.매수 조건 : RSI(14)<25 & 전일/전전일 보다 낮은 때마다 건너뛰기 매수(총 10계약)
3.매수 청산 : RSI(14)>70 전량 청산
4.매도 조건 : RSI(14)>80 & 전일/전전일 보다 높을 때마다 건너뛰기 매도(총 10계약)
5.매도 청산 : RSI(14)>20 전량 청산
*건너뛰기: 최초신호:진입 두번째신호: skip 세번째신호:진입 네번째신호:skip
해당 조건의 수식은 다음과 같습니다.(알려주신 식)
input : P1(5),P2(10),P3(20);
var : count(0);
var : sumV1(0),sumV2(0),sumV3(0);
var : mav1(0),mav2(0),mav3(0),T(0);
var : Bcnt(0),Scnt(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3
{
if count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumV2 = sumV2+DayClose(count);
if count < P3 Then
sumV3 = sumV3+DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
maV3 = sumV3 / P3;
if mav1 > mav2 and mav2 > mav3 Then
T = 1;
Else if mav1 < mav2 and mav2 < mav3 Then
T = -1;
Else
T = 0;
var1 = RSI(14);
if T >= 0 then
{
if var1 <= 25 and C < C[1] and C < C[2] and C < C[3] Then
{
if MarketPosition == 0 Then
buy("B");
if MarketPosition == 1 Then
{
Bcnt = Bcnt+1;
if Bcnt%2 == 0 and MaxContracts < 10 Then
buy("BB",OnClose,def,1);
}
}
}
if MarketPosition != 1 Then
Bcnt = 0;
if MarketPosition == 1 and var1 >= 70 Then
ExitLong("매수청산");
if T >= 0 then
{
if var1 >= 80 and C > C[1] and C > C[2] and C > C[3] then
{
if MarketPosition == 0 Then
Sell("S1");
if MarketPosition == -1 Then
{
Scnt = Scnt +1;
if Scnt%2 == 0 and MaxContracts < 10 Then
Sell("SS",OnClose,def,1);
}
}
}
if MarketPosition == -1 and var1 < 20 Then
ExitShort("매도청산");
if MarketPosition != -1 Then
Scnt = 0;
=====================================================================================
이렇게 했는데 첨부화일을 보면 알겠지만 진입/청산이 다르게 나오네요...
저는 신호발생시마다 진입하는것이 부담되어서 건너뛰기 진입하려고 했던건데...
아에 매수 진입이 되지 않는 부분이 있어서 무슨 문제인지 알려주시면 감사하겠습니다.
- 1. 신호_하나씩_건너띄기.JPG (0.06 MB)
- 2. 신호시마다_매수.JPG (0.06 MB)
답변 1
예스스탁 예스스탁 답변
2018-09-12 14:54:14
안녕하세요
예스스탁입니다.
식을 수정했습니다.
모든 첫진입이 무포지션에서만 동작하게 되어 있었습니다.
목표수익등 강제청산은 동일내용으로 설정되어 있어야 합니다.
첨부된 그림에서 상단이 기존수식, 하단이 수정한 식입니다.
input : P1(5),P2(10),P3(20);
var : count(0);
var : sumV1(0),sumV2(0),sumV3(0);
var : mav1(0),mav2(0),mav3(0),T(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3{
if count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumV2 = sumV2+DayClose(count);
if count < P3 Then
sumV3 = sumV3+DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
maV3 = sumV3 / P3;
if mav1 > mav2 and mav2 > mav3 Then
T = 1;
Else if mav1 < mav2 and mav2 < mav3 Then
T = -1;
Else
T = 0;
var1 = RSI(14);
if T >= 0 then
{
if var1 <= 25 and C < C[1] and C < C[2] and C < C[3] and
(MarketPosition <= 0 or (MarketPosition == 1 and MaxContracts < 10)) Then
buy("B",OnClose,def,1);
}
if MarketPosition == 1 and var1 >= 70 Then
exitlong("매수청산");
if T >= 0 then
{
if var1 >= 80 and C > C[1] and C > C[2] and C > C[3] and
(MarketPosition <= 0 or (MarketPosition == -1 and MaxContracts < 10)) Then
Sell("S",OnClose,def,1);
}
if MarketPosition == -1 and var1 < 20 Then
ExitShort("매도청산");
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 보내주신 수식대로 하니까 다르게 되네요... 확인 부탁드려요
> 첨부 차트는 쿠르드오일입니다.
조건:
1.일봉 5<10<20(역배열)이 아닐때 유효
2.매수 조건 : RSI(14)<25 & 전일/전전일 보다 낮은 때마다 매수(총 10계약)
3.매수 청산 : RSI(14)>70 전량 청산
4.매도 조건 : RSI(14)>80 & 전일/전전일 보다 높을 때마다 매도(총 10계약)
5.매도 청산 : RSI(14)>20 전량 청산
해당 조건의 수식은 다음과 같습니다.(알려주신 식)
input : P1(5),P2(10),P3(20);
var : count(0);
var : sumV1(0),sumV2(0),sumV3(0);
var : mav1(0),mav2(0),mav3(0),T(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3{
if count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumV2 = sumV2+DayClose(count);
if count < P3 Then
sumV3 = sumV3+DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
maV3 = sumV3 / P3;
if mav1 > mav2 and mav2 > mav3 Then
T = 1;
Else if mav1 < mav2 and mav2 < mav3 Then
T = -1;
Else
T = 0;
var1 = RSI(14);
if T >= 0 then
{
if var1 <= 25 and C < C[1] and C < C[2] and C < C[3] and
(MarketPosition <= 0 or (MarketPosition == 1 and MaxContracts < 10)) Then
buy("매수",OnClose,def,1);
}
if MarketPosition == 1 and var1 >= 70 Then
exitlong("매수청산");
if T >= 0 then
{
if var1 >= 80 and C > C[1] and C > C[2] and C > C[3] and
(MarketPosition <= 0 or (MarketPosition == -1 and MaxContracts < 10)) Then
Sell("매도",OnClose,def,1);
}
if MarketPosition == -1 and var1 < 20 Then
ExitShort("매도청산");
=======================================================================================
조건:
1.일봉 5<10<20(역배열)이 아닐때 유효
2.매수 조건 : RSI(14)<25 & 전일/전전일 보다 낮은 때마다 건너뛰기 매수(총 10계약)
3.매수 청산 : RSI(14)>70 전량 청산
4.매도 조건 : RSI(14)>80 & 전일/전전일 보다 높을 때마다 건너뛰기 매도(총 10계약)
5.매도 청산 : RSI(14)>20 전량 청산
*건너뛰기: 최초신호:진입 두번째신호: skip 세번째신호:진입 네번째신호:skip
해당 조건의 수식은 다음과 같습니다.(알려주신 식)
input : P1(5),P2(10),P3(20);
var : count(0);
var : sumV1(0),sumV2(0),sumV3(0);
var : mav1(0),mav2(0),mav3(0),T(0);
var : Bcnt(0),Scnt(0);
sumV1 = 0;
sumV2 = 0;
sumV3 = 0;
for count = 0 to P3
{
if count < P1 Then
sumV1 = sumV1+DayClose(count);
if count < P2 Then
sumV2 = sumV2+DayClose(count);
if count < P3 Then
sumV3 = sumV3+DayClose(count);
}
maV1 = sumV1 / P1;
maV2 = sumV2 / P2;
maV3 = sumV3 / P3;
if mav1 > mav2 and mav2 > mav3 Then
T = 1;
Else if mav1 < mav2 and mav2 < mav3 Then
T = -1;
Else
T = 0;
var1 = RSI(14);
if T >= 0 then
{
if var1 <= 25 and C < C[1] and C < C[2] and C < C[3] Then
{
if MarketPosition == 0 Then
buy("B");
if MarketPosition == 1 Then
{
Bcnt = Bcnt+1;
if Bcnt%2 == 0 and MaxContracts < 10 Then
buy("BB",OnClose,def,1);
}
}
}
if MarketPosition != 1 Then
Bcnt = 0;
if MarketPosition == 1 and var1 >= 70 Then
ExitLong("매수청산");
if T >= 0 then
{
if var1 >= 80 and C > C[1] and C > C[2] and C > C[3] then
{
if MarketPosition == 0 Then
Sell("S1");
if MarketPosition == -1 Then
{
Scnt = Scnt +1;
if Scnt%2 == 0 and MaxContracts < 10 Then
Sell("SS",OnClose,def,1);
}
}
}
if MarketPosition == -1 and var1 < 20 Then
ExitShort("매도청산");
if MarketPosition != -1 Then
Scnt = 0;
=====================================================================================
이렇게 했는데 첨부화일을 보면 알겠지만 진입/청산이 다르게 나오네요...
저는 신호발생시마다 진입하는것이 부담되어서 건너뛰기 진입하려고 했던건데...
아에 매수 진입이 되지 않는 부분이 있어서 무슨 문제인지 알려주시면 감사하겠습니다.