커뮤니티
수식변경 부탁드립니다
2014-04-29 20:14:23
212
글번호 74763
수식변경을 요청드립니다
아래의 식에서 보시면..매수조건식을 보면 스톡케스틱 %k가 20선을 하향이탈한 이후에
골든크로스가 발생하면 매수하는 식인데.. 조건을 추가하고 싶습니다.
골근코로스가 발생되는 분봉은 2분봉으로 사용할려고 하지만, 조건을 추가하고 싶은
것은 60분봉입니다. 즉 매수시에 60분봉 스톡케스틱을 참조해서 60분봉의 %k값이 60이상일 때만 매수하 되도록 부탁드립니다.
단 2차매수는 상관없습니다. 첫번째 매수가 되고 다음조건(첫 진입가에서 4%이상 하락시 매수)이 만족되면 60분봉의 %k의 위치 값하고 상관없이 매수하면 됩니다
이렇게 다른 분봉의 조건을 추가할려면 챠트설정도 2개의 분봉이 같이 보여져야 할 것
같은데요.. 어떻게 해야 하는지 부탁을 드립니다
=================================================================
Input : Period(25), Period1(6), Period2(6), MAP(5),투입금액1(5100000),투입금액2(10100000);
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),ExitSetup1(false),ExitSetup2(false);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
vol1 = int(int(투입금액1/C)/10)*10;
vol2 = int(int(투입금액2/C)/10)*10;
}
Else{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
}
#kosdoq
if CodeCategory == 2 Then{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
#option
if CodeCategory == 6 or CodeCategory == 8 Then{
vol1 = int((투입금액1)/(C*BigPointValue));
vol2 = int((투입금액2)/(C*BigPointValue));
}
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);
#%k가 20을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,20) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
if crossup(stok,stod) and MarketPosition == 0 Then
buy("매수",OnClose,def,vol1);
#첫진입가에서 4% 하락하면 추가매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,EntryPrice*0.96,vol2);
#추가매수후 첫진입가에서 8% 하락하면 전량청산
if CurrentEntries == 2 Then
ExitLong("손절",AtStop,EntryPrice*0.92);
}
#매도포지션 진입
if MarketPosition == 1 Then{
#매수포지션에 진입하면 BuySetup은 false
BuySetup = false;
#%k가 80을 하향이탈시 청산
if Crossup(stok,80) Then
ExitSetup1 = true;
if ExitSetup1 == true Then{
if CrossDown(stok,80) Then ExitLong("매도");
}
#목표수익
#진입1회
if MaxEntries == 1 Then
ExitLong("목표수익1",Atlimit,EntryPrice*1.05);
#진입2회
if MaxEntries == 2 Then
ExitLong("목표수익2",Atlimit,avgEntryPrice*1.03);
}
Else{
ExitSetup1 = false;
ExitSetup2 = false;
}
답변 3
예스스탁 예스스탁 답변
2014-04-30 11:10:20
안녕하세요
예스스탁입니다.
수식에서 모든 데이터는 완성봉의 값만 사용가능하므로
2분봉차트에 참조데이터로 60분봉 데이터를 추가하면
현재 진입행중인봉의 값은 사용하지 못합니다.
수식에서 60분봉 스토케스틱을 직접 계산하도록해서 내용을 추가했습니다.
차트를 2분봉 5000개로 띄우시고 적용하시면 됩니다.
Input : Period(25), Period1(6), Period2(6), MAP(5),투입금액1(5100000),투입금액2(10100000);
input : Atime(60),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),ExitSetup1(false),ExitSetup2(false);
var : cnt(0),TF(0),Hvalue1(0), Lvalue1(0),sum1(0),sum2(0);
Array : HH[50](0),LL[50](0),FK1[50](0),SK1[50](0),SD1[50](0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
vol1 = int(int(투입금액1/C)/10)*10;
vol2 = int(int(투입금액2/C)/10)*10;
}
Else{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
}
#kosdoq
if CodeCategory == 2 Then{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
#option
if CodeCategory == 6 or CodeCategory == 8 Then{
vol1 = int((투입금액1)/(C*BigPointValue));
vol2 = int((투입금액2)/(C*BigPointValue));
}
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가 20을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,20) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
if crossup(stok,stod) and MarketPosition == 0 and
SK1[0] > SD1[0] and SK1[0] > 0 and SD1[0] > 0 Then
buy("매수",OnClose,def,vol1);
#첫진입가에서 4% 하락하면 추가매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,EntryPrice*0.96,vol2);
#추가매수후 첫진입가에서 8% 하락하면 전량청산
if CurrentEntries == 2 Then
ExitLong("손절",AtStop,EntryPrice*0.92);
}
#매도포지션 진입
if MarketPosition == 1 Then{
#매수포지션에 진입하면 BuySetup은 false
BuySetup = false;
#%k가 80을 하향이탈시 청산
if Crossup(stok,80) Then
ExitSetup1 = true;
if ExitSetup1 == true Then{
if CrossDown(stok,80) Then ExitLong("매도");
}
#목표수익
#진입1회
if MaxEntries == 1 Then
ExitLong("목표수익1",Atlimit,EntryPrice*1.05);
#진입2회
if MaxEntries == 2 Then
ExitLong("목표수익2",Atlimit,avgEntryPrice*1.03);
}
Else{
ExitSetup1 = false;
ExitSetup2 = false;
}
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식변경 부탁드립니다
> 수식변경을 요청드립니다
아래의 식에서 보시면..매수조건식을 보면 스톡케스틱 %k가 20선을 하향이탈한 이후에
골든크로스가 발생하면 매수하는 식인데.. 조건을 추가하고 싶습니다.
골근코로스가 발생되는 분봉은 2분봉으로 사용할려고 하지만, 조건을 추가하고 싶은
것은 60분봉입니다. 즉 매수시에 60분봉 스톡케스틱을 참조해서 60분봉의 %k값이 60이상일 때만 매수하 되도록 부탁드립니다.
단 2차매수는 상관없습니다. 첫번째 매수가 되고 다음조건(첫 진입가에서 4%이상 하락시 매수)이 만족되면 60분봉의 %k의 위치 값하고 상관없이 매수하면 됩니다
이렇게 다른 분봉의 조건을 추가할려면 챠트설정도 2개의 분봉이 같이 보여져야 할 것
같은데요.. 어떻게 해야 하는지 부탁을 드립니다
=================================================================
Input : Period(25), Period1(6), Period2(6), MAP(5),투입금액1(5100000),투입금액2(10100000);
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),ExitSetup1(false),ExitSetup2(false);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
vol1 = int(int(투입금액1/C)/10)*10;
vol2 = int(int(투입금액2/C)/10)*10;
}
Else{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
}
#kosdoq
if CodeCategory == 2 Then{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
#option
if CodeCategory == 6 or CodeCategory == 8 Then{
vol1 = int((투입금액1)/(C*BigPointValue));
vol2 = int((투입금액2)/(C*BigPointValue));
}
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);
#%k가 20을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,20) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
if crossup(stok,stod) and MarketPosition == 0 Then
buy("매수",OnClose,def,vol1);
#첫진입가에서 4% 하락하면 추가매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,EntryPrice*0.96,vol2);
#추가매수후 첫진입가에서 8% 하락하면 전량청산
if CurrentEntries == 2 Then
ExitLong("손절",AtStop,EntryPrice*0.92);
}
#매도포지션 진입
if MarketPosition == 1 Then{
#매수포지션에 진입하면 BuySetup은 false
BuySetup = false;
#%k가 80을 하향이탈시 청산
if Crossup(stok,80) Then
ExitSetup1 = true;
if ExitSetup1 == true Then{
if CrossDown(stok,80) Then ExitLong("매도");
}
#목표수익
#진입1회
if MaxEntries == 1 Then
ExitLong("목표수익1",Atlimit,EntryPrice*1.05);
#진입2회
if MaxEntries == 2 Then
ExitLong("목표수익2",Atlimit,avgEntryPrice*1.03);
}
Else{
ExitSetup1 = false;
ExitSetup2 = false;
}
뽄때
2014-04-30 11:22:52
아래의 매수식에서
타분봉 즉 60분봉의 %k값이 60이상일때 매수라는 조건이 빠진것이 아닌가요?
if crossup(stok,stod) and MarketPosition == 0 and
SK1[0] > SD1[0] and SK1[0] > 0 and SD1[0] > 0 Then
buy("매수",OnClose,def,vol1);
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식변경 부탁드립니다
> 안녕하세요
예스스탁입니다.
수식에서 모든 데이터는 완성봉의 값만 사용가능하므로
2분봉차트에 참조데이터로 60분봉 데이터를 추가하면
현재 진입행중인봉의 값은 사용하지 못합니다.
수식에서 60분봉 스토케스틱을 직접 계산하도록해서 내용을 추가했습니다.
차트를 2분봉 5000개로 띄우시고 적용하시면 됩니다.
Input : Period(25), Period1(6), Period2(6), MAP(5),투입금액1(5100000),투입금액2(10100000);
input : Atime(60),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),ExitSetup1(false),ExitSetup2(false);
var : cnt(0),TF(0),Hvalue1(0), Lvalue1(0),sum1(0),sum2(0);
Array : HH[50](0),LL[50](0),FK1[50](0),SK1[50](0),SD1[50](0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
vol1 = int(int(투입금액1/C)/10)*10;
vol2 = int(int(투입금액2/C)/10)*10;
}
Else{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
}
#kosdoq
if CodeCategory == 2 Then{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
#option
if CodeCategory == 6 or CodeCategory == 8 Then{
vol1 = int((투입금액1)/(C*BigPointValue));
vol2 = int((투입금액2)/(C*BigPointValue));
}
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가 20을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,20) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
if crossup(stok,stod) and MarketPosition == 0 and
SK1[0] > SD1[0] and SK1[0] > 0 and SD1[0] > 0 Then
buy("매수",OnClose,def,vol1);
#첫진입가에서 4% 하락하면 추가매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,EntryPrice*0.96,vol2);
#추가매수후 첫진입가에서 8% 하락하면 전량청산
if CurrentEntries == 2 Then
ExitLong("손절",AtStop,EntryPrice*0.92);
}
#매도포지션 진입
if MarketPosition == 1 Then{
#매수포지션에 진입하면 BuySetup은 false
BuySetup = false;
#%k가 80을 하향이탈시 청산
if Crossup(stok,80) Then
ExitSetup1 = true;
if ExitSetup1 == true Then{
if CrossDown(stok,80) Then ExitLong("매도");
}
#목표수익
#진입1회
if MaxEntries == 1 Then
ExitLong("목표수익1",Atlimit,EntryPrice*1.05);
#진입2회
if MaxEntries == 2 Then
ExitLong("목표수익2",Atlimit,avgEntryPrice*1.03);
}
Else{
ExitSetup1 = false;
ExitSetup2 = false;
}
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식변경 부탁드립니다
> 수식변경을 요청드립니다
아래의 식에서 보시면..매수조건식을 보면 스톡케스틱 %k가 20선을 하향이탈한 이후에
골든크로스가 발생하면 매수하는 식인데.. 조건을 추가하고 싶습니다.
골근코로스가 발생되는 분봉은 2분봉으로 사용할려고 하지만, 조건을 추가하고 싶은
것은 60분봉입니다. 즉 매수시에 60분봉 스톡케스틱을 참조해서 60분봉의 %k값이 60이상일 때만 매수하 되도록 부탁드립니다.
단 2차매수는 상관없습니다. 첫번째 매수가 되고 다음조건(첫 진입가에서 4%이상 하락시 매수)이 만족되면 60분봉의 %k의 위치 값하고 상관없이 매수하면 됩니다
이렇게 다른 분봉의 조건을 추가할려면 챠트설정도 2개의 분봉이 같이 보여져야 할 것
같은데요.. 어떻게 해야 하는지 부탁을 드립니다
=================================================================
Input : Period(25), Period1(6), Period2(6), MAP(5),투입금액1(5100000),투입금액2(10100000);
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),ExitSetup1(false),ExitSetup2(false);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
vol1 = int(int(투입금액1/C)/10)*10;
vol2 = int(int(투입금액2/C)/10)*10;
}
Else{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
}
#kosdoq
if CodeCategory == 2 Then{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
#option
if CodeCategory == 6 or CodeCategory == 8 Then{
vol1 = int((투입금액1)/(C*BigPointValue));
vol2 = int((투입금액2)/(C*BigPointValue));
}
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);
#%k가 20을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,20) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
if crossup(stok,stod) and MarketPosition == 0 Then
buy("매수",OnClose,def,vol1);
#첫진입가에서 4% 하락하면 추가매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,EntryPrice*0.96,vol2);
#추가매수후 첫진입가에서 8% 하락하면 전량청산
if CurrentEntries == 2 Then
ExitLong("손절",AtStop,EntryPrice*0.92);
}
#매도포지션 진입
if MarketPosition == 1 Then{
#매수포지션에 진입하면 BuySetup은 false
BuySetup = false;
#%k가 80을 하향이탈시 청산
if Crossup(stok,80) Then
ExitSetup1 = true;
if ExitSetup1 == true Then{
if CrossDown(stok,80) Then ExitLong("매도");
}
#목표수익
#진입1회
if MaxEntries == 1 Then
ExitLong("목표수익1",Atlimit,EntryPrice*1.05);
#진입2회
if MaxEntries == 2 Then
ExitLong("목표수익2",Atlimit,avgEntryPrice*1.03);
}
Else{
ExitSetup1 = false;
ExitSetup2 = false;
}
예스스탁 예스스탁 답변
2014-04-30 12:29:00
안녕하세요
예스스탁입니다.
죄송합니다. 골든크로스 상태로 작성했습니다.
아래와 같이 변경하시면 됩니다.
60분봉 %K가 60이상이라는 조건이므로 아래와 같이만 조건지정하시면 됩니다.
if crossup(stok,stod) and MarketPosition == 0 and
SK1[0] > 60 Then
buy("매수",OnClose,def,vol1);
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : Re : Re : 수식변경 부탁드립니다
> 아래의 매수식에서
타분봉 즉 60분봉의 %k값이 60이상일때 매수라는 조건이 빠진것이 아닌가요?
if crossup(stok,stod) and MarketPosition == 0 and
SK1[0] > SD1[0] and SK1[0] > 0 and SD1[0] > 0 Then
buy("매수",OnClose,def,vol1);
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식변경 부탁드립니다
> 안녕하세요
예스스탁입니다.
수식에서 모든 데이터는 완성봉의 값만 사용가능하므로
2분봉차트에 참조데이터로 60분봉 데이터를 추가하면
현재 진입행중인봉의 값은 사용하지 못합니다.
수식에서 60분봉 스토케스틱을 직접 계산하도록해서 내용을 추가했습니다.
차트를 2분봉 5000개로 띄우시고 적용하시면 됩니다.
Input : Period(25), Period1(6), Period2(6), MAP(5),투입금액1(5100000),투입금액2(10100000);
input : Atime(60),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),ExitSetup1(false),ExitSetup2(false);
var : cnt(0),TF(0),Hvalue1(0), Lvalue1(0),sum1(0),sum2(0);
Array : HH[50](0),LL[50](0),FK1[50](0),SK1[50](0),SD1[50](0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
vol1 = int(int(투입금액1/C)/10)*10;
vol2 = int(int(투입금액2/C)/10)*10;
}
Else{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
}
#kosdoq
if CodeCategory == 2 Then{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
#option
if CodeCategory == 6 or CodeCategory == 8 Then{
vol1 = int((투입금액1)/(C*BigPointValue));
vol2 = int((투입금액2)/(C*BigPointValue));
}
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가 20을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,20) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
if crossup(stok,stod) and MarketPosition == 0 and
SK1[0] > SD1[0] and SK1[0] > 0 and SD1[0] > 0 Then
buy("매수",OnClose,def,vol1);
#첫진입가에서 4% 하락하면 추가매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,EntryPrice*0.96,vol2);
#추가매수후 첫진입가에서 8% 하락하면 전량청산
if CurrentEntries == 2 Then
ExitLong("손절",AtStop,EntryPrice*0.92);
}
#매도포지션 진입
if MarketPosition == 1 Then{
#매수포지션에 진입하면 BuySetup은 false
BuySetup = false;
#%k가 80을 하향이탈시 청산
if Crossup(stok,80) Then
ExitSetup1 = true;
if ExitSetup1 == true Then{
if CrossDown(stok,80) Then ExitLong("매도");
}
#목표수익
#진입1회
if MaxEntries == 1 Then
ExitLong("목표수익1",Atlimit,EntryPrice*1.05);
#진입2회
if MaxEntries == 2 Then
ExitLong("목표수익2",Atlimit,avgEntryPrice*1.03);
}
Else{
ExitSetup1 = false;
ExitSetup2 = false;
}
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식변경 부탁드립니다
> 수식변경을 요청드립니다
아래의 식에서 보시면..매수조건식을 보면 스톡케스틱 %k가 20선을 하향이탈한 이후에
골든크로스가 발생하면 매수하는 식인데.. 조건을 추가하고 싶습니다.
골근코로스가 발생되는 분봉은 2분봉으로 사용할려고 하지만, 조건을 추가하고 싶은
것은 60분봉입니다. 즉 매수시에 60분봉 스톡케스틱을 참조해서 60분봉의 %k값이 60이상일 때만 매수하 되도록 부탁드립니다.
단 2차매수는 상관없습니다. 첫번째 매수가 되고 다음조건(첫 진입가에서 4%이상 하락시 매수)이 만족되면 60분봉의 %k의 위치 값하고 상관없이 매수하면 됩니다
이렇게 다른 분봉의 조건을 추가할려면 챠트설정도 2개의 분봉이 같이 보여져야 할 것
같은데요.. 어떻게 해야 하는지 부탁을 드립니다
=================================================================
Input : Period(25), Period1(6), Period2(6), MAP(5),투입금액1(5100000),투입금액2(10100000);
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),ExitSetup1(false),ExitSetup2(false);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then{
vol1 = int(int(투입금액1/C)/10)*10;
vol2 = int(int(투입금액2/C)/10)*10;
}
Else{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
}
#kosdoq
if CodeCategory == 2 Then{
vol1 = int(투입금액1/C);
vol2 = int(투입금액2/C);
}
#option
if CodeCategory == 6 or CodeCategory == 8 Then{
vol1 = int((투입금액1)/(C*BigPointValue));
vol2 = int((투입금액2)/(C*BigPointValue));
}
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);
#%k가 20을 하향돌파하면 BuySetup은 true
if BuySetup == false and CrossDown(stok,20) Then{
BuySetup = true;
}
#%k가 60이상 상승하면 BuySetup은 false
if Stok >= 60 Then
BuySetup = false;
#BuySetup이 true일때
if BuySetup == true Then{
if crossup(stok,stod) and MarketPosition == 0 Then
buy("매수",OnClose,def,vol1);
#첫진입가에서 4% 하락하면 추가매수
if MaxEntries == 1 Then
buy("2차매수",atlimit,EntryPrice*0.96,vol2);
#추가매수후 첫진입가에서 8% 하락하면 전량청산
if CurrentEntries == 2 Then
ExitLong("손절",AtStop,EntryPrice*0.92);
}
#매도포지션 진입
if MarketPosition == 1 Then{
#매수포지션에 진입하면 BuySetup은 false
BuySetup = false;
#%k가 80을 하향이탈시 청산
if Crossup(stok,80) Then
ExitSetup1 = true;
if ExitSetup1 == true Then{
if CrossDown(stok,80) Then ExitLong("매도");
}
#목표수익
#진입1회
if MaxEntries == 1 Then
ExitLong("목표수익1",Atlimit,EntryPrice*1.05);
#진입2회
if MaxEntries == 2 Then
ExitLong("목표수익2",Atlimit,avgEntryPrice*1.03);
}
Else{
ExitSetup1 = false;
ExitSetup2 = false;
}
다음글
이전글