답변완료
부탁드립니다
1.종가가 음봉이고, 직전 봉이 양봉이면서 25개봉의 최고가였을 때 빨강색으로, 종가가 양봉이고 직전 봉이 음봉이면서 25개봉의 최저가였을 때 파란색으로 구현해 주세요
2.종가가 양봉이고 가장 최근 1개의 양봉과 가장 최근 1개의 음봉의 고가보다 높으면 빨강색으로, 종가가 음봉이고 가장 최근 1개의 음봉의 저가와 가장 최근 1개의 양봉의 저가보다 낮으면 파란색으로 구현해 주세요
3. 종가가 양봉이면서 25개 봉의 최고가 보다 위로 올라가면 매수진입 한 후 매수진입한 봉의 저가보다 3틱 아래로 내려가면 청산하라, 계속하여 같은 방향으로 종가가 양봉이면서 25개 봉의 최고가 보다 위로 올라가면 매수진입 한 후 청산은 첫 번째 매수진입한 봉의 저가보다 3틱 아래로 내려가면 청산하라,
고맙습니다.
2024-01-06
743
글번호 175489
강조
답변완료
ADX, +DI 및 -DI 지표 문의 드립니다
안녕하세요.
항상 도움을 받고 있습니다.
ADX, +DI 및 -DI 지표 관련해서 아래와 같은 예스랭귀지 수식을 찾았습니다.
이 수식을 바탕으로 자바스크립트로 변환해 보았습니다만,
ADX가 잘 구현되었는지 궁금합니다.
시스템식에 ADX >30으로 해 놨는데, 신호가 발생 하는게 하나도 없네요.
자바스크립트 수식 검토 부탁합니다.
==============예스랭귀지===================
input : Period(14);
var : PDI(0),MDI(0),ADXv(0);
PDI = ema(iff(H-H[1]>0 && H-H[1]>L[1]-L,H-H[1],0),Period)/
ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),Period)*100;
MDI = ema(iff(L[1]-L>0 && H-H[1]<L[1]-L,L[1]-L,0),Period)/
ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),Period)*100;
ADXV = ema(abs(PDI-MDI)/(PDI+MDI),period)*100;
plot1(ADXv);
plot2(PDI);
plot3(MDI);
==============자바스크립트===================
var DMplus, DMminus, TR, ATR, DMplus_avg, DMminus_avg, PDI, MDI, DX, ADX, PeriodADX, PeriodDI;
// ADX(Average Directional Movement Index)
var TR1 = [];
var TR2 = [];
var TR3 = [];
var TR = [];
var DMplus = [];
var DMminus = [];
var PeriodADX = 11;
var PeriodDI = 28;
var DMplusCnt = 0;
var DMminusCnt = 0;
for (var i = PeriodADX; i >= 0; i--)
{
TR1[i] = MKT.High(i+1) - MKT.Low(i+1);
TR2[i] = Math.abs(MKT.Close(i+2) - MKT.High(i+1));
TR3[i] = Math.abs(MKT.Close(i+2) - MKT.Low(i+1));
TR[i] = Math.max(TR1[i], TR2[i], TR3[i]);
if(((MKT.High(i+1) > MKT.High(i+2)) && (MKT.High(i+1) - MKT.High(i+2)) > (MKT.Low(i+2) - MKT.Low(i+1))))
{
DMplus[i] = (MKT.High(i+1) - MKT.High(i+2));
}
else DMplus[i] = 0;
if(((MKT.Low(i+2) > MKT.Low(i+1)) && (MKT.High(i+1) - MKT.High(i+2)) < (MKT.Low(i+2) - MKT.Low(i+1))))
{
DMminus[i] = (MKT.Low(i+2) - MKT.Low(i+1));
}
else DMminus[i] = 0;
}
var ATR = 0;
for (var i = 0; i < TR.length; i++) ATR += TR[i];
ATR = ATR/(TR.length);
var DMplus_avg = 0;
for (var i = 0; i < DMplus.length; i++) DMplus_avg += DMplus[i];
DMplus_avg = DMplus_avg/(DMplus.length);
var DMminus_avg = 0;
for (var i = 0; i < DMminus.length; i++) DMminus_avg += DMminus[i];
DMminus_avg = DMminus_avg/(DMminus.length);
PDI = DMplus_avg / ATR * 100;
MDI = DMminus_avg / ATR * 100;
DX = Math.abs(PDI-MDI) / (PDI+MDI);
ADX = DX / (PeriodADX+1) * 100;
2024-01-05
1079
글번호 175485
지표
답변완료
array
안녕하세요?
알려주신 수식을 아래처럼 평균값을 출력하면 '0' 입니다
PLOT1(mav, "O",Blue);
PLOT2(mav*1000, "O",red);
PLOT3(mav*10000, "O",Black);
고맙습니다~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : array
>
안녕하세요
예스스탁입니다.
input : N(20);
input : StartTime(100000),EndTime(120000);
var : cnt(0),Op(0),HH(0),LL(0),Tcond(False);
var : sum(0),mav(0),SumSqrt(0),stdv(0);
Array : HLR[50](-1);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
{
Tcond = False;
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
Op = O;
HH = H;
LL = L;
For cnt = 49 DownTo 1
{
HLR[cnt] = HLR[cnt-1];
}
}
if Tcond == true Then
{
if HH > 0 and H > HH Then
HH = H;
if LL > 0 and L < LL Then
LL = L;
HLR[0] = (HH-LL)/Op;
}
if HLR[N] >= 0 Then
{
#평균
sum = 0;
for cnt = 1 to N
{
sum = sum + HLR[cnt];
}
mav = sum/N;
#표준편차
SumSqrt = 0;
For cnt = 1 To N
{
SumSqrt = SumSqrt + (HLR[cnt] - mav)^2;
}
Stdv = SquareRoot(SumSqrt / N);
}
즐거운 하루되세요
> 코퍼 님이 쓴 글입니다.
> 제목 : array
>
안녕하세요?
혼자 응용하려니 어렵습니다
1. 5분봉 차트에서 매일 10시~12 중 발생하는 값
Op : 10시 시가
H : 최고가
L : 최저가
HLR : (H - L)/Op
2. 오늘을 제외한 어제부터 과거로 20일간 어레이에 HLR을 저장하고 어레이를 이용해서 평균과 표준편차를 구하고 싶습니다.
새해 복 많이 받으시고 고맙습니다!
2024-01-05
872
글번호 175473
지표
답변완료
시스템식 부탁드립니다.
항상 도움 주셔서 감사합니다.
종목 : 해외선물
요청사항 : 아래식은 매수인 경우 가격이 하락 할때마다
추가 매수가 들어가는 로직입니다.
추가 매수가 들어갈 때마다 해당 매수가격을
수평라인으로 표시하고 싶습니다.
청산되면 매수 라인을 지우고 싶습니다.
시스템식 수정 부탁드립니다.
input : Pst(1); // 매수,매도
input : gap(10), pt(20), multi(0.7);
var : vol(0),v1(0),T(0);
value1 = gap/PointValue; //최초 진입간격
value2 = pt/PointValue;
if pst == 1 Then
{
if MarketPosition == 0 and TotalTrades == TotalTrades[1] Then
{
vol = 1;
Buy("b",OnClose,Def,vol);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
v1 = CurrentContracts-CurrentContracts[1];
if MaxEntries == 1 Then
T = value1;
Else
T = T+Round(T*0.5,0);
MessageLog("%.2f",T);
}
vol = Round(v1+v1*multi,0);
Buy("bb",AtLimit,EntryPrice(0)-PriceScale*T,vol);
ExitLong("bp",AtLimit,AvgEntryPrice+PriceScale*Value2);
}
}
감사합니다.
2024-01-05
965
글번호 175462
시스템