커뮤니티
문의드립니다.
2018-02-08 10:49:56
165
글번호 116435
매번 고맙습니다.
1. 시스템
분봉
외부변수
금액,n개봉,RSI기간,타주기봉기간
진입
1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수
2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수
3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수
청산
-1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산.
-3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
답변 3
예스스탁 예스스탁 답변
2018-02-08 15:00:57
안녕하세요
예스스탁입니다.
input : 금액(10000000),n개봉(5),RSI기간(10),타주기봉기간(30),이평기간(40),n2(10);
var : cnt(0),S1(0),D1(0),TM(0),TF1(0);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),PreRSIv(0),sum(0),mav(0),ii(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TimeToMinutes(stime)%타주기봉기간;
if Bdate != Bdate[1] or (bdate == bdate[1] and TF1 < TF1[1]) Then{
for cnt = 1 to 99{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
PreRSIv = RSIV[1];
}
C1[0] = C;
If idx == RSI기간+2 Then {
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSI기간 - 1 {
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSI기간;
DownAvg = DownSum / RSI기간;
}
If idx > RSI기간+2 Then {
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else {
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSI기간 - 1) + UpAmt) / RSI기간;
DownAvg = (preDownAvg * (RSI기간 - 1) + DownAmt) / RSI기간;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if idx > 40 Then
{
sum = 0;
for cnt = 0 to 이평기간-1
{
sum = sum + C1[cnt];
}
mav = sum/이평기간;
}
if (RSIv > 0 and mav > 0) then
{
if MarketPosition == 0 and C > mav and RSIV < 25 and preRSIV < 25 Then
buy("b1",OnClose,def,floor((금액*0.1)/C));
if MarketPosition == 1 then
{
if CurrentContracts > CurrentContracts[1] Then
ii = index;
if MaxEntries == 1 and index == ii+n개봉 Then
buy("b2",OnClose,def,floor((금액*0.2)/C));
if MaxEntries == 2 and index == ii+n개봉 Then
buy("b3",OnClose,def,floor((금액*0.3)/C));
if RSIV >= 70 Then
exitlong("bx1");
if MaxEntries == 3 Then
exitlong("bl",AtStop,AvgEntryPrice*(1-n2/100));
}
}
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 매번 고맙습니다.
1. 시스템
분봉
외부변수
금액,n개봉,RSI기간,타주기봉기간
진입
1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수
2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수
3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수
청산
-1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산.
-3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
잡다백수
2018-02-08 15:42:57
코딩감사합니다.
몇가지 궁금한 게 있어 재질문드립니다.
만약에 저렇게 타주기로 안하고 그냥 본주기RSI 연속 2이하로 하려면
1.
RSI < 25 and RSI[1] < 25 then
이런 식으로 표현하면 되는지요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
input : 금액(10000000),n개봉(5),RSI기간(10),타주기봉기간(30),이평기간(40),n2(10);
var : cnt(0),S1(0),D1(0),TM(0),TF1(0);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),PreRSIv(0),sum(0),mav(0),ii(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TimeToMinutes(stime)%타주기봉기간;
if Bdate != Bdate[1] or (bdate == bdate[1] and TF1 < TF1[1]) Then{
for cnt = 1 to 99{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
PreRSIv = RSIV[1];
}
C1[0] = C;
If idx == RSI기간+2 Then {
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSI기간 - 1 {
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSI기간;
DownAvg = DownSum / RSI기간;
}
If idx > RSI기간+2 Then {
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else {
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSI기간 - 1) + UpAmt) / RSI기간;
DownAvg = (preDownAvg * (RSI기간 - 1) + DownAmt) / RSI기간;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if idx > 40 Then
{
sum = 0;
for cnt = 0 to 이평기간-1
{
sum = sum + C1[cnt];
}
mav = sum/이평기간;
}
if (RSIv > 0 and mav > 0) then
{
if MarketPosition == 0 and C > mav and RSIV < 25 and preRSIV < 25 Then
buy("b1",OnClose,def,floor((금액*0.1)/C));
if MarketPosition == 1 then
{
if CurrentContracts > CurrentContracts[1] Then
ii = index;
if MaxEntries == 1 and index == ii+n개봉 Then
buy("b2",OnClose,def,floor((금액*0.2)/C));
if MaxEntries == 2 and index == ii+n개봉 Then
buy("b3",OnClose,def,floor((금액*0.3)/C));
if RSIV >= 70 Then
exitlong("bx1");
if MaxEntries == 3 Then
exitlong("bl",AtStop,AvgEntryPrice*(1-n2/100));
}
}
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 매번 고맙습니다.
1. 시스템
분봉
외부변수
금액,n개봉,RSI기간,타주기봉기간
진입
1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수
2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수
3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수
청산
-1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산.
-3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
예스스탁 예스스탁 답변
2018-02-08 15:52:10
안녕하세요
예스스탁입니다.
예 맞습니다.
RSI가 타주기 계산값이 아니면
올리신 내용과 같이 지정하시면 됩니다.
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : Re : Re : 문의드립니다.
> 코딩감사합니다.
몇가지 궁금한 게 있어 재질문드립니다.
만약에 저렇게 타주기로 안하고 그냥 본주기RSI 연속 2이하로 하려면
1.
RSI < 25 and RSI[1] < 25 then
이런 식으로 표현하면 되는지요.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
input : 금액(10000000),n개봉(5),RSI기간(10),타주기봉기간(30),이평기간(40),n2(10);
var : cnt(0),S1(0),D1(0),TM(0),TF1(0);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0),PreRSIv(0),sum(0),mav(0),ii(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF1 = TimeToMinutes(stime)%타주기봉기간;
if Bdate != Bdate[1] or (bdate == bdate[1] and TF1 < TF1[1]) Then{
for cnt = 1 to 99{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
PreRSIv = RSIV[1];
}
C1[0] = C;
If idx == RSI기간+2 Then {
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSI기간 - 1 {
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSI기간;
DownAvg = DownSum / RSI기간;
}
If idx > RSI기간+2 Then {
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else {
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSI기간 - 1) + UpAmt) / RSI기간;
DownAvg = (preDownAvg * (RSI기간 - 1) + DownAmt) / RSI기간;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
if idx > 40 Then
{
sum = 0;
for cnt = 0 to 이평기간-1
{
sum = sum + C1[cnt];
}
mav = sum/이평기간;
}
if (RSIv > 0 and mav > 0) then
{
if MarketPosition == 0 and C > mav and RSIV < 25 and preRSIV < 25 Then
buy("b1",OnClose,def,floor((금액*0.1)/C));
if MarketPosition == 1 then
{
if CurrentContracts > CurrentContracts[1] Then
ii = index;
if MaxEntries == 1 and index == ii+n개봉 Then
buy("b2",OnClose,def,floor((금액*0.2)/C));
if MaxEntries == 2 and index == ii+n개봉 Then
buy("b3",OnClose,def,floor((금액*0.3)/C));
if RSIV >= 70 Then
exitlong("bx1");
if MaxEntries == 3 Then
exitlong("bl",AtStop,AvgEntryPrice*(1-n2/100));
}
}
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 매번 고맙습니다.
1. 시스템
분봉
외부변수
금액,n개봉,RSI기간,타주기봉기간
진입
1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수
2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수
3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수
청산
-1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산.
-3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산