예스스탁
예스스탁 답변
2020-10-06 14:07:35
안녕하세요
예스스탁입니다.
input : PeriodAR(10);
var : cnt(0), Lowval(0), Highval(0);
var : DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ;
Lowval = DayLow;
Highval = DayHigh;
for cnt = 0 to PeriodAR{
if DayLow(cnt) < LowVal Then
LowVal = DayLow(cnt);
if DayHigh(cnt) > Highval Then
Highval = DayHigh(cnt);
}
For cnt= 0 To PeriodAR {
If dayLow(cnt) == Lowval Then
DownVel = cnt;
If DayHigh(cnt) == highval Then
UpVel = cnt;
}
DnAroon = 100*(PeriodAR-DownVel)/PeriodAR;
UpAroon = 100*(PeriodAR-UpVel)/PeriodAR;
Input : shortPeriod(12), longPeriod(26), PeriodMACD(9);
Var : Ep1(0), JISU1(0), PreJISU1(0);
Var : Ep2(0), JISU2(0), PreJISU2(0);
var : DINDEX1(0), valueMACD(0);
Ep1 = 2/(shortPeriod+1);
Ep2 = 2/(longPeriod+1);
if bdate != bdate[1] Then
{
DINDEX1 = DINDEX1 + 1;
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
}
if DINDEX1 <= 1 then {
JISU1 = C;
JISU2 = C;
valueMACD = JiSu1-Jisu2;
}
else{
JISU1 = C * EP1 + PreJISU1 * (1-EP1);
JISU2 = C * EP2 + PreJISU2 * (1-EP2);
valueMACD = JiSu1-Jisu2;
}
input : PeriodDMI(14);
var : TL(0),TH(0),Dcnt(0),preTRange(0),prePlusDM14(0),MinusDM14(0),TRange1(0),preMinusDM14(0);
Var : Counter(0), TRange(0), MyRange(PeriodDMI), PlusDM14(0), PlusDM(0), MinusDM(0),preADX(0);
Var : CummDMI(0), Return(0);
Array : HH[61](0),LL[61](0),CC[61](0),TR[61](0),DMIv[61](0),ADXv[61](0);
Array : DPlus[61](0),DMinus[61](0);
if bdate != bdate[1] Then
{
Dcnt = Dcnt+1;
HH[0] = H;
LL[0] = L;
CC[0] = C;
preTRange = TRange[1];
prePlusDM14 = PlusDM14[1];
preMinusDM14 = MinusDM14[1];
for cnt = 1 to 60{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
TR[cnt] = TR[cnt-1][1];
DMIv[cnt] = DMIv[cnt-1][1];
ADXv[cnt] = ADXv[cnt-1][1];
Dplus[cnt] = Dplus[cnt-1][1];
Dminus[cnt] = Dminus[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if CC[1] > 0 Then{
If CC[1] > HH[0] then
TH = CC[1];
else
TH = HH[0];
If CC[1] < LL[0] then
TL = CC[1];
else
TL = LL[0];
TR[0] = TH-TL;
}
If Dcnt == PeriodDMI+1 Then {
MyRange = PeriodDMI;
DPlus[0] = 0;
PlusDM14 = 0;
TRange = 0;
DMinus[0] = 0;
MinusDM14 = 0;
TRange1 = 0;
For Counter = 0 To MyRange - 1 {
If HH[Counter] - HH[Counter+1] < 0 Then
PlusDM = 0 ;
Else
PlusDM = HH[Counter] - HH[Counter+1];
If LL[Counter+1] - LL[Counter] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[Counter+1] - LL[Counter];
var1 = PlusDM;
var2 = MinusDM;
If var1 >= var2 Then
MinusDM = 0;
If var2 >= var1 Then
PlusDM = 0;
TRange = TRange + TR[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
DPlus[0] = 100 * PlusDM14 / TRange;
Else
DPlus[0] = 0 ;
If TRange <> 0 Then
DMinus[0] = 100 * MinusDM14 / TRange;
Else
DMinus[0] = 0;
If Dplus[0] + Dminus[0] == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]);
}
Else If Dcnt > PeriodDMI+1 Then {
If HH[0] - HH[1] < 0 Then
PlusDM = 0;
Else
PlusDM = HH[0] - HH[1];
If LL[1] - LL[0] < 0 Then
MinusDM = 0;
Else
MinusDM = LL[1] - LL[0];
var1 = PlusDM;
var2 = MinusDM;
If var1 >= var2 Then
MinusDM = 0;
If var2 >= var1 Then
PlusDM = 0;
If MyRange > 0 Then {
TRange = preTRange - (preTRange / MyRange) + TR[0];
PlusDM14 = prePlusDM14 - (prePlusDM14 / MyRange) + PlusDM;
MinusDM14 = preMinusDM14 - (preMinusDM14 / MyRange) + MinusDM;
}
If TRange <> 0 Then
DPlus[0] = 100 * PlusDM14 / TRange;
Else
DPlus[0] = 0 ;
If TRange <> 0 Then
DMinus[0] = 100 * MinusDM14 / TRange;
Else
DMinus[0] = 0;
If Dplus[0] + Dminus[0] == 0 Then
DMIv[0] = 0;
Else
DMIv[0] = 100 * AbsValue(Dplus[0] - Dminus[0]) / (Dplus[0] + Dminus[0]);
}
Input : PeriodRSI(9);
var : SigSum(0),count2(0),RSIsig(0);
Var : DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),RSIV(0);
Array : C1[100](0);
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == PeriodRSI+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To PeriodRSI - 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 / PeriodRSI;
DownAvg = DownSum / PeriodRSI;
}
If idx > PeriodRSI+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (PeriodRSI - 1) + UpAmt) / PeriodRSI;
DownAvg = (preDownAvg * (PeriodRSI - 1) + DownAmt) / PeriodRSI;
}
If UpAvg + DownAvg <> 0 Then
RSIv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv = 0;
var : val(0);
val = 0;
if UpAroon >= DnAroon
and valueMACD >= ma(valueMACD, 9)
and DPlus[0] > DMinus[0]
and RSIv >= ma(RSIv, 5)
Then {
val = DayHigh*1.1;
Plot1(val, "D");
}
즐거운 하루되세요
> 롬롬7 님이 쓴 글입니다.
> 제목 : 변환 문의
> 안녕하세요. 계속 일봉으로의 변환 요청 드렸는데 매번 감사드립니다.
1)
아래 식은 지표인데요.
분봉에서 일봉 기준으로 사용하고 싶습니다.
변환요청 부탁드립니다.. 매번 감사합니다.
for문 같은 경우 data2가 안먹기도 하고..
시스템을 종목을 돌려보면서 해보려다보니 data2로는 어려운 점이 많네요.
2)
전체 종목을 돌려볼 수 있는 기능은 개발 일정에 없으신지 궁금합니다.
예를들면.. pgDn 버튼을 누르면 다음 종목으로 이동
input : PeriodAR(10);
var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ;
Lowval= Lowest(Low, PeriodAR+1);
Highval = Highest(High, PeriodAR+1);
For counter= 0 To PeriodAR {
If Low[counter] == Lowval Then
DownVel = counter;
If High[counter] == highval Then
UpVel = counter;
}
DnAroon = 100*(PeriodAR-DownVel)/PeriodAR;
UpAroon = 100*(PeriodAR-UpVel)/PeriodAR;
Input : shortPeriod(12), longPeriod(26), PeriodMACD(9);
Var : valueMACD(0) , macdosc(0) ;
valueMACD = MACD(shortPeriod, longPeriod);
Input : PeriodDMI(14) ;
var : DMIv(0),DP(0),DM(0);
DMIv = DMI(PeriodDMI);
DP = DIPlus(PeriodDMI);
DM = DIMinus(PeriodDMI);
Input : PeriodRSI(9);
var : Relative(0), val(0);
Relative = RSI(PeriodRSI);
val = 0;
if UpAroon >= DnAroon
and valueMACD >= ma(valueMACD, 9)
and DP > DM
and Relative >= ma(Relative, 5)
Then {
val = H*1.1;
Plot1(val, "D");
}