커뮤니티
수식 추가 부탁드립니다
2014-06-12 06:30:14
154
글번호 75774
항상도움을 주셔서 감사를 드립니다.
아래의 매수조건에서 하나의 타분봉(240분봉)을 활용하고 있습니다.
타분봉 하나를 더 추가 하고자 합니다. 120분봉의 %k값이 %D값보 클 때
매수하는 조건을 추가하고자 하는데 도움을 부탁드립니다
==============================================================
Input : Period(25), Period1(6), Period2(6), MAP(5),수량1(1),수량2(2);
input : Atime(240),StoPeriod(25), StoPeriod1(6), StoPeriod2(6);//타분봉(Atime) 스토케스틱
var : StoK(0),StoD(0),vol1(0),vol2(0),mav(0),SH(0),cross(0),Dncnt(0);
Var : Lvalue(0), Hvalue(0),FK(0),BuySetup(true),SellSetup(true),ExitSetup1(false),ExitSetup2(false),ExitSetup3(false),ExitSetup4(false);
var : cnt(0),TF(0),Hvalue1(0), Lvalue1(0),sum1(0),sum2(0);
var : dhighVal(0), dlowVal(0), dFK(0), dSK(0), dSD(0);
var : dEp1(0), dEp2(0),dPreSK(0), dPreSD(0);
Array : HH[50](0),LL[50](0),FK1[50](0),SK1[50](0),SD1[50](0);
var : wHvalue1(0),wLvalue1(0),wsum1(0),wsum2(0);
Array : WHH[50](0),WLL[50](0),wFK1[50](0),wSK1[50](0),wSD1[50](0);
#주봉 스토케스틱
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{
wHH[0] = H;
wLL[0] = L;
for cnt = 1 to 49{
wHH[cnt] = wHH[cnt-1][1];
wLL[cnt] = wLL[cnt-1][1];
wFK1[cnt] = wFK1[cnt-1][1];
wSK1[cnt] = wSK1[cnt-1][1];
wSD1[cnt] = wSD1[cnt-1][1];
}
}
if H > wHH[0] Then
wHH[0] = H;
if L < wLL[0] Then
wLL[0] = L;
if wHH[StoPeriod] > 0 Then{
wHvalue1 = wHH[0];
wLvalue1 = wLL[0];
for cnt = 0 to StoPeriod-1 {
if wHH[cnt] > wHvalue1 then
wHvalue1 = wHH[cnt];
if wLL[cnt] < wLvalue1 then
wLvalue1 = wLL[cnt];
}
wFK1[0] = (C-wLvalue1)/(wHvalue1-wLvalue1)*100;
}
if wFK1[StoPeriod1] > 0 Then{
wsum1 = 0;
for cnt = 0 to StoPeriod1-1{
wsum1 = wsum1+wFK1[cnt];
}
wSK1[0] = wsum1/StoPeriod1;
}
if wSK1[StoPeriod2] > 0 Then{
wsum2 = 0;
for cnt = 0 to StoPeriod2-1{
wsum2 = wsum2+wSK1[cnt];
}
wSD1[0] = wsum2/StoPeriod2;
}
#일봉 스토케스틱
#N일간 최고가 및 최저가
dhighVal = dayhigh(0);
dlowVal = daylow(0);
for cnt = 0 to Period-1 {
if dayHigh(cnt) > dhighVal then
dhighVal = dayhigh(cnt);
if dayLow(cnt) < dlowVal then
dlowVal = dayLow(cnt);
}
#Fast StochasticsK
dFK = (C-dlowVal)/(dhighVal-dlowVal)*100;
#Slow StochasticsK / Slow StochasticsD
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
if date != date[1] then {
dPreSK = dSK[1];
dPreSD = dSD[1];
}
dSK = dFK * dEP1 + dPreSK * (1-dEP1);
dSD = dSK * dEP2 + dPreSD * (1-dEP2);
#차트의 스토케스틱
Lvalue = lowest(L,Period);
Hvalue = highest(H,period);
FK = (Close - Lvalue) / (Hvalue - Lvalue) * 100;
StoK = ma(FK,Period1);
StoD = ma(StoK,Period2);
mav = ma(C,MAP);
#타분봉 스토케스틱
TF = TimeToMinutes(stime)%Atime;
if dayindex == 0 or (TF < TF[1] and stime > stime[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
FK1[cnt] = FK1[cnt-1][1];
SK1[cnt] = SK1[cnt-1][1];
SD1[cnt] = SD1[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[StoPeriod] > 0 Then{
Hvalue1 = HH[0];
Lvalue1 = LL[0];
for cnt = 0 to StoPeriod-1 {
if HH[cnt] > Hvalue1 then
Hvalue1 = HH[cnt];
if LL[cnt] < Lvalue1 then
Lvalue1 = LL[cnt];
}
FK1[0] = (C-Lvalue1)/(Hvalue1-Lvalue1)*100;
}
if FK1[StoPeriod1] > 0 Then{
sum1 = 0;
for cnt = 0 to StoPeriod1-1{
sum1 = sum1+FK1[cnt];
}
SK1[0] = sum1/StoPeriod1;
}
if SK1[StoPeriod2] > 0 Then{
sum2 = 0;
for cnt = 0 to StoPeriod2-1{
sum2 = sum2+SK1[cnt];
}
SD1[0] = sum2/StoPeriod2;
}
#%k가 25을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,25) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
#매수조건
if crossup(stok,stod) and
stok[1] < stod[1] and
MarketPosition == 0
and wSK1[0] > wSD1[0]
and dSK > dSD
and dSK > 20
and SK1[0] > SD1[0]
Then
buy("1차매수",OnClose,def,수량1);
}
답변 1
예스스탁 예스스탁 답변
2014-06-12 11:21:34
안녕하세요
예스스탁입니다.
Input : Period(25), Period1(6), Period2(6), MAP(5),수량1(1),수량2(2);
input : Atime1(240),Atime2(120),StoPeriod(25), StoPeriod1(6), StoPeriod2(6);
var : StoK(0),StoD(0),vol1(0),vol2(0),mav(0),SH(0),cross(0),Dncnt(0);
Var : Lvalue(0), Hvalue(0),FK(0),BuySetup(true),SellSetup(true),ExitSetup1(false),ExitSetup2(false),ExitSetup3(false),ExitSetup4(false);
var : cnt(0),TF(0),Hvalue1(0), Lvalue1(0),sum1(0),sum2(0);
var : dhighVal(0), dlowVal(0), dFK(0), dSK(0), dSD(0);
var : dEp1(0), dEp2(0),dPreSK(0), dPreSD(0);
Array : HH[50](0),LL[50](0),FK1[50](0),SK1[50](0),SD1[50](0);
var : wHvalue1(0),wLvalue1(0),wsum1(0),wsum2(0);
Array : WHH[50](0),WLL[50](0),wFK1[50](0),wSK1[50](0),wSD1[50](0);
var : nTF(0),nHvalue1(0),nLvalue1(0),nsum1(0),nsum2(0);
Array : nHH[50](0),nLL[50](0),nFK1[50](0),nSK1[50](0),nSD1[50](0);
#주봉 스토케스틱
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{
wHH[0] = H;
wLL[0] = L;
for cnt = 1 to 49{
wHH[cnt] = wHH[cnt-1][1];
wLL[cnt] = wLL[cnt-1][1];
wFK1[cnt] = wFK1[cnt-1][1];
wSK1[cnt] = wSK1[cnt-1][1];
wSD1[cnt] = wSD1[cnt-1][1];
}
}
if H > wHH[0] Then
wHH[0] = H;
if L < wLL[0] Then
wLL[0] = L;
if wHH[StoPeriod] > 0 Then{
wHvalue1 = wHH[0];
wLvalue1 = wLL[0];
for cnt = 0 to StoPeriod-1 {
if wHH[cnt] > wHvalue1 then
wHvalue1 = wHH[cnt];
if wLL[cnt] < wLvalue1 then
wLvalue1 = wLL[cnt];
}
wFK1[0] = (C-wLvalue1)/(wHvalue1-wLvalue1)*100;
}
if wFK1[StoPeriod1] > 0 Then{
wsum1 = 0;
for cnt = 0 to StoPeriod1-1{
wsum1 = wsum1+wFK1[cnt];
}
wSK1[0] = wsum1/StoPeriod1;
}
if wSK1[StoPeriod2] > 0 Then{
wsum2 = 0;
for cnt = 0 to StoPeriod2-1{
wsum2 = wsum2+wSK1[cnt];
}
wSD1[0] = wsum2/StoPeriod2;
}
#일봉 스토케스틱
#N일간 최고가 및 최저가
dhighVal = dayhigh(0);
dlowVal = daylow(0);
for cnt = 0 to Period-1 {
if dayHigh(cnt) > dhighVal then
dhighVal = dayhigh(cnt);
if dayLow(cnt) < dlowVal then
dlowVal = dayLow(cnt);
}
#Fast StochasticsK
dFK = (C-dlowVal)/(dhighVal-dlowVal)*100;
#Slow StochasticsK / Slow StochasticsD
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
if date != date[1] then {
dPreSK = dSK[1];
dPreSD = dSD[1];
}
dSK = dFK * dEP1 + dPreSK * (1-dEP1);
dSD = dSK * dEP2 + dPreSD * (1-dEP2);
#차트의 스토케스틱
Lvalue = lowest(L,Period);
Hvalue = highest(H,period);
FK = (Close - Lvalue) / (Hvalue - Lvalue) * 100;
StoK = ma(FK,Period1);
StoD = ma(StoK,Period2);
mav = ma(C,MAP);
#타분봉1 스토케스틱
TF = TimeToMinutes(stime)%Atime1;
if dayindex == 0 or (TF < TF[1] and stime > stime[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
FK1[cnt] = FK1[cnt-1][1];
SK1[cnt] = SK1[cnt-1][1];
SD1[cnt] = SD1[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[StoPeriod] > 0 Then{
Hvalue1 = HH[0];
Lvalue1 = LL[0];
for cnt = 0 to StoPeriod-1 {
if HH[cnt] > Hvalue1 then
Hvalue1 = HH[cnt];
if LL[cnt] < Lvalue1 then
Lvalue1 = LL[cnt];
}
FK1[0] = (C-Lvalue1)/(Hvalue1-Lvalue1)*100;
}
if FK1[StoPeriod1] > 0 Then{
sum1 = 0;
for cnt = 0 to StoPeriod1-1{
sum1 = sum1+FK1[cnt];
}
SK1[0] = sum1/StoPeriod1;
}
if SK1[StoPeriod2] > 0 Then{
sum2 = 0;
for cnt = 0 to StoPeriod2-1{
sum2 = sum2+SK1[cnt];
}
SD1[0] = sum2/StoPeriod2;
}
#타분봉2 스토케스틱
nTF = TimeToMinutes(stime)%Atime2;
if dayindex == 0 or (nTF < nTF[1] and stime > stime[1]) Then{
nHH[0] = H;
nLL[0] = L;
for cnt = 1 to 49{
nHH[cnt] = nHH[cnt-1][1];
nLL[cnt] = nLL[cnt-1][1];
nFK1[cnt] = nFK1[cnt-1][1];
nSK1[cnt] = nSK1[cnt-1][1];
nSD1[cnt] = nSD1[cnt-1][1];
}
}
if H > nHH[0] Then
nHH[0] = H;
if L < nLL[0] Then
nLL[0] = L;
if nHH[StoPeriod] > 0 Then{
nHvalue1 = nHH[0];
nLvalue1 = nLL[0];
for cnt = 0 to StoPeriod-1 {
if nHH[cnt] > nHvalue1 then
nHvalue1 = nHH[cnt];
if nLL[cnt] < nLvalue1 then
nLvalue1 = nLL[cnt];
}
nFK1[0] = (C-nLvalue1)/(nHvalue1-nLvalue1)*100;
}
if nFK1[StoPeriod1] > 0 Then{
nsum1 = 0;
for cnt = 0 to StoPeriod1-1{
nsum1 = nsum1+nFK1[cnt];
}
nSK1[0] = nsum1/StoPeriod1;
}
if nSK1[StoPeriod2] > 0 Then{
nsum2 = 0;
for cnt = 0 to StoPeriod2-1{
nsum2 = nsum2+nSK1[cnt];
}
nSD1[0] = nsum2/StoPeriod2;
}
#%k가 25을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,25) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
#매수조건
if crossup(stok,stod) and
stok[1] < stod[1] and
MarketPosition == 0
and wSK1[0] > wSD1[0]
and dSK > dSD
and dSK > 20
and SK1[0] > SD1[0]
and nSK1[0] > nSD1[0]
Then
buy("1차매수",OnClose,def,수량1);
}
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식 추가 부탁드립니다
> 항상도움을 주셔서 감사를 드립니다.
아래의 매수조건에서 하나의 타분봉(240분봉)을 활용하고 있습니다.
타분봉 하나를 더 추가 하고자 합니다. 120분봉의 %k값이 %D값보 클 때
매수하는 조건을 추가하고자 하는데 도움을 부탁드립니다
==============================================================
Input : Period(25), Period1(6), Period2(6), MAP(5),수량1(1),수량2(2);
input : Atime(240),StoPeriod(25), StoPeriod1(6), StoPeriod2(6);//타분봉(Atime) 스토케스틱
var : StoK(0),StoD(0),vol1(0),vol2(0),mav(0),SH(0),cross(0),Dncnt(0);
Var : Lvalue(0), Hvalue(0),FK(0),BuySetup(true),SellSetup(true),ExitSetup1(false),ExitSetup2(false),ExitSetup3(false),ExitSetup4(false);
var : cnt(0),TF(0),Hvalue1(0), Lvalue1(0),sum1(0),sum2(0);
var : dhighVal(0), dlowVal(0), dFK(0), dSK(0), dSD(0);
var : dEp1(0), dEp2(0),dPreSK(0), dPreSD(0);
Array : HH[50](0),LL[50](0),FK1[50](0),SK1[50](0),SD1[50](0);
var : wHvalue1(0),wLvalue1(0),wsum1(0),wsum2(0);
Array : WHH[50](0),WLL[50](0),wFK1[50](0),wSK1[50](0),wSD1[50](0);
#주봉 스토케스틱
if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{
wHH[0] = H;
wLL[0] = L;
for cnt = 1 to 49{
wHH[cnt] = wHH[cnt-1][1];
wLL[cnt] = wLL[cnt-1][1];
wFK1[cnt] = wFK1[cnt-1][1];
wSK1[cnt] = wSK1[cnt-1][1];
wSD1[cnt] = wSD1[cnt-1][1];
}
}
if H > wHH[0] Then
wHH[0] = H;
if L < wLL[0] Then
wLL[0] = L;
if wHH[StoPeriod] > 0 Then{
wHvalue1 = wHH[0];
wLvalue1 = wLL[0];
for cnt = 0 to StoPeriod-1 {
if wHH[cnt] > wHvalue1 then
wHvalue1 = wHH[cnt];
if wLL[cnt] < wLvalue1 then
wLvalue1 = wLL[cnt];
}
wFK1[0] = (C-wLvalue1)/(wHvalue1-wLvalue1)*100;
}
if wFK1[StoPeriod1] > 0 Then{
wsum1 = 0;
for cnt = 0 to StoPeriod1-1{
wsum1 = wsum1+wFK1[cnt];
}
wSK1[0] = wsum1/StoPeriod1;
}
if wSK1[StoPeriod2] > 0 Then{
wsum2 = 0;
for cnt = 0 to StoPeriod2-1{
wsum2 = wsum2+wSK1[cnt];
}
wSD1[0] = wsum2/StoPeriod2;
}
#일봉 스토케스틱
#N일간 최고가 및 최저가
dhighVal = dayhigh(0);
dlowVal = daylow(0);
for cnt = 0 to Period-1 {
if dayHigh(cnt) > dhighVal then
dhighVal = dayhigh(cnt);
if dayLow(cnt) < dlowVal then
dlowVal = dayLow(cnt);
}
#Fast StochasticsK
dFK = (C-dlowVal)/(dhighVal-dlowVal)*100;
#Slow StochasticsK / Slow StochasticsD
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
if date != date[1] then {
dPreSK = dSK[1];
dPreSD = dSD[1];
}
dSK = dFK * dEP1 + dPreSK * (1-dEP1);
dSD = dSK * dEP2 + dPreSD * (1-dEP2);
#차트의 스토케스틱
Lvalue = lowest(L,Period);
Hvalue = highest(H,period);
FK = (Close - Lvalue) / (Hvalue - Lvalue) * 100;
StoK = ma(FK,Period1);
StoD = ma(StoK,Period2);
mav = ma(C,MAP);
#타분봉 스토케스틱
TF = TimeToMinutes(stime)%Atime;
if dayindex == 0 or (TF < TF[1] and stime > stime[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
FK1[cnt] = FK1[cnt-1][1];
SK1[cnt] = SK1[cnt-1][1];
SD1[cnt] = SD1[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[StoPeriod] > 0 Then{
Hvalue1 = HH[0];
Lvalue1 = LL[0];
for cnt = 0 to StoPeriod-1 {
if HH[cnt] > Hvalue1 then
Hvalue1 = HH[cnt];
if LL[cnt] < Lvalue1 then
Lvalue1 = LL[cnt];
}
FK1[0] = (C-Lvalue1)/(Hvalue1-Lvalue1)*100;
}
if FK1[StoPeriod1] > 0 Then{
sum1 = 0;
for cnt = 0 to StoPeriod1-1{
sum1 = sum1+FK1[cnt];
}
SK1[0] = sum1/StoPeriod1;
}
if SK1[StoPeriod2] > 0 Then{
sum2 = 0;
for cnt = 0 to StoPeriod2-1{
sum2 = sum2+SK1[cnt];
}
SD1[0] = sum2/StoPeriod2;
}
#%k가 25을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,25) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
#매수조건
if crossup(stok,stod) and
stok[1] < stod[1] and
MarketPosition == 0
and wSK1[0] > wSD1[0]
and dSK > dSD
and dSK > 20
and SK1[0] > SD1[0]
Then
buy("1차매수",OnClose,def,수량1);
}