커뮤니티
시스템식 문의
2013-04-17 18:53:21
156
글번호 62187
시스템식 질문드립니다.
예를들어 특정기간(ex:일주일)에 x이평을 돌파하면 매수한다는 시스템을 작성하고자 할때,
실시간으로 변하는 시장상황을 반영하고자하는게 목표인데요.
시스템자체에서 10이평부터 50이평까지 5이평단위로 자체적으로 과거 특정기간(ex:일주일)만큼 검사를 실시해 이로부터 선택된 이평을 거래에 사용하는 시스템을 작성하고 싶습니다.
매수청산도 마찬가지 논리로 이평을 검사한다음 과거 특정기간에서 가장 잘 설명하는 이평으로 매수청산을 하려합니다.
이러한 코딩을 예시로 주신다면 감사하겠습니다.
언제나 빠른 답변 감사하며 부탁드립니다.
답변 1
예스스탁 예스스탁 답변
2013-04-18 13:01:12
안녕하세요
예스스탁입니다.
문의하신 내용은 각 이평을 조합해 경우의 수별로 작성해야 합니다.
작성하기에 5개이평은 조합수가 많으므로 3개 이평만으로 올려드립니다.
10,20,30으로만 작성해 드립니다.
진입10 - 청산10,
진입10 - 청산20,
진입10 - 청산30,
진입20 - 청산10,
진입20 - 청산20,
진입20 - 청산30,
진입30 - 청산10,
진입30 - 청산20,
진입30 - 청산30,
var : ma1(0),ma2(0),ma3(0),ma4(0),ma5(0),cnt(0),AA(0),BB(0),maxPL(0),ii(0);
var : cond1(false),cond2(false),cond3(false),cond4(false),cond5(false);
var : cond6(false),cond7(false),cond8(false),cond9(false);
var : v1(0),v2(0),v3(0),v4(0),v5(0),v6(0),v7(0),v8(0),v9(0),v10(0);
var : entryma(0),exitma(0);
array : case[10,10](0),sumPL[10](0);
ma1 = ma(c,10);
ma2 = ma(c,20);
ma3 = ma(c,30);
ma4 = ma(c,40);
ma5 = ma(c,50);
if date != date[1] Then{
for AA = 1 to 9{
case[AA,0] = 0;
for BB = 1 to 9{
case[AA,BB] = case[AA,BB-1][1];
}
}
}
#진입10이평-청산10이평
if Cond1 == false and crossup(c,ma1) Then{
Cond1 = true;
v1 = c;
}
if Cond1 == true and CrossDown(c,ma1) Then{
case[1,0] = case[1,0]+(C-v1);
Cond1 = false;
}
#진입10이평-청산20이평
if Cond2 == false and crossup(c,ma1) Then{
Cond2 = true;
v2 = c;
}
if Cond2 == true and CrossDown(c,ma2) Then{
case[2,0] = case[2,0]+(C-v2);
Cond2 = false;
}
#진입10이평-청산30이평
if Cond3 == false and crossup(c,ma1) Then{
Cond3 = true;
v3 = c;
}
if Cond3 == true and CrossDown(c,ma3) Then{
case[3,0] = case[3,0]+(C-v3);
Cond3 = false;
}
#진입20이평-청산10이평
if Cond4 == false and crossup(c,ma2) Then{
Cond4 = true;
v4 = c;
}
if Cond4 == true and CrossDown(c,ma1) Then{
case[4,0] = case[4,0]+(C-v4);
Cond4 = false;
}
#진입20이평-청산20이평
if Cond5 == false and crossup(c,ma2) Then{
Cond5 = true;
v5 = c;
}
if Cond5 == true and CrossDown(c,ma2) Then{
case[5,0] = case[5,0]+(C-v5);
Cond5 = false;
}
#진입20이평-청산30이평
if Cond6 == false and crossup(c,ma2) Then{
Cond6 = true;
v6 = c;
}
if Cond6 == true and CrossDown(c,ma3) Then{
case[6,0] = case[6,0]+(C-v6);
Cond6 = false;
}
#진입30이평-청산10이평
if Cond7 == false and crossup(c,ma3) Then{
Cond7 = true;
v7 = c;
}
if Cond7 == true and CrossDown(c,ma1) Then{
case[7,0] = case[7,0]+(C-v7);
Cond7 = false;
}
#진입30이평-청산20이평
if Cond8 == false and crossup(c,ma3) Then{
Cond8 = true;
v8 = c;
}
if Cond8 == true and CrossDown(c,ma1) Then{
case[8,0] = case[8,0]+(C-v8);
Cond8 = false;
}
#진입30이평-청산10이평
if Cond9 == false and crossup(c,ma3) Then{
Cond9 = true;
v9 = c;
}
if Cond9 == true and CrossDown(c,ma1) Then{
case[9,0] = case[9,0]+(C-v9);
Cond9 = false;
}
#각 case별 직전 5일간 수익합산
for AA = 1 to 9{
sumPL[AA] = 0;
for BB = 1 to 5{
sumPL[AA] = sumPL[AA]+case[AA,BB];
}
}
maxPL = SumPL[1];
ii = 1;
for cnt = 1 to 9{
if SumPL[cnt] > maxPL Then{
maxPL = SumPL[cnt];
ii = cnt;
}
}
if ii == 1 Then{
entryma = ma1;
exitma = ma1;
}
if ii == 2 Then{
entryma = ma1;
exitma = ma2;
}
if ii == 3 Then{
entryma = ma1;
exitma = ma3;
}
if ii == 4 Then{
entryma = ma2;
exitma = ma1;
}
if ii == 5 Then{
entryma = ma2;
exitma = ma2;
}
if ii == 6 Then{
entryma = ma2;
exitma = ma3;
}
if ii == 7 Then{
entryma = ma3;
exitma = ma1;
}
if ii == 8 Then{
entryma = ma3;
exitma = ma2;
}
if ii == 9 Then{
entryma = ma3;
exitma = ma3;
}
plot1(entryma);
plot2(exitma);
즐거운 하루되세요
> HI_yjam49 님이 쓴 글입니다.
> 제목 : 시스템식 문의
> 시스템식 질문드립니다.
예를들어 특정기간(ex:일주일)에 x이평을 돌파하면 매수한다는 시스템을 작성하고자 할때,
실시간으로 변하는 시장상황을 반영하고자하는게 목표인데요.
시스템자체에서 10이평부터 50이평까지 5이평단위로 자체적으로 과거 특정기간(ex:일주일)만큼 검사를 실시해 이로부터 선택된 이평을 거래에 사용하는 시스템을 작성하고 싶습니다.
매수청산도 마찬가지 논리로 이평을 검사한다음 과거 특정기간에서 가장 잘 설명하는 이평으로 매수청산을 하려합니다.
이러한 코딩을 예시로 주신다면 감사하겠습니다.
언제나 빠른 답변 감사하며 부탁드립니다.