예스스탁
예스스탁 답변
2022-06-03 11:35:35
안녕하세요
예스스탁입니다.
해당언어를 잘 알지 못해 제대로 변환이 되었는지 모르겠습니다.
DRAWCANDLE로 출력 되어 있어 강조식으로 작성해 드립니다.
설명에 외부변수에 대한 내용은 없어 임의로 지정해 드립니다.
input : UniversalPeriod(10),UniversalFilter(5);
input : ATRperiod(10),TightenChannel(10),AveragePeriod(10);
input : overBought(0.7),overSold(0.3),UniAvg(true),UniAvgPeriod(10);
var : dtr(0),avgRange(0),i(0),maValue(0),ResultValue(0);
var : Buffer1(0),Buffer2(0),Buffer3(0),Buffer4(0),Buffer5(0),Buffer6(0);
var : UniAvgline(0),MyUNI(0),R(0),G(0);
var : maPrice(0),bandedge(0),whitenoise(0);
var : a1(0),b1(0),c2(0),c3(0),c1(0),filt(0),filt1(0);
var : pk(0),denom(0),result(0);
maPrice = c;
bandedge= UniversalPeriod;
whitenoise= (maPrice - maPrice[min(UniversalPeriod,UniversalFilter)])/2;
if barindex>bandedge then
{
a1= Exp(-1.414 * 3.14159 / bandedge);
b1= 2*a1 * Cos(1.414*180 /bandedge);
c2= b1;
c3= -a1 * a1;
c1= 1 - c2 - c3;
filt= c1 * (whitenoise + whitenoise[1])/2 + c2*filt[1] + c3*filt[1];
filt1 = filt;
if ABS(filt1)>pk[1] then
pk = ABS(filt1);
else
pk = 0.991 * pk[1];
if pk == 0 then
denom = -1;
else
denom = pk;
if denom == -1 then
result = result[1];
else
result = filt1/pk;
}
///////////////////////////////////////////////////
dTR = 0;
for i = 0 to ATRperiod-1
{
dTR=dTR+max(abs(DayHigh(i)-DayLow(i)),max(abs(DayHigh(i)-DayClose(i+1)),abs(DayLow(i)-DayClose(i+1))));
}
dtr=dtr/MAX(1,TightenChannel);
avgRange = dTR;
maValue = ma(maPrice,max(1,AveragePeriod));
ResultValue = RESULT;
Buffer1=maValue;
Buffer2=maValue+(avgRange*((overBought)));
Buffer3=maValue-(avgRange*( (overSold)));
Buffer4=maValue+(ResultValue)/1*avgRange;
Buffer5=maValue+(avgRange*((10/10)));
Buffer6=maValue+(avgRange*((-10/10)));
if UniAvg then
UniAvgline= ma(buffer4,UniAvgPeriod);
ELSE
UniAvgline = Nan;
MyUNI = result;
R = 50+(200-MyUNI*400);
G =50+(200+MyUNI*500);
PlotPaintBar(Buffer2, Buffer3,"강조",Rgb(R,G,0));
즐거운 하루되세요
> 까냐스키 님이 쓴 글입니다.
> 제목 : 수식 문의
> 다음 수식을 예스 수식으로 변환하고 싶습니다.
출처도 아래 링크에 첨부하였습니다.
도움 되시기 바랍니다.
부탁 좀 드리겠습니다.
감사합니다.
maPrice = customclose
bandedge= UniversalPeriod
whitenoise= (maPrice - maPrice[min(UniversalPeriod,UniversalFilter)])/2
if barindex>bandedge then
a1= Exp(-1.414 * 3.14159 / bandedge)
b1= 2*a1 * Cos(1.414*180 /bandedge)
c2= b1
c3= -a1 * a1
c1= 1 - c2 - c3
filt= c1 * (whitenoise + whitenoise[1])/2 + c2*filt[1] + c3*filt[1]
filt1 = filt
if ABS(filt1)>pk[1] then
pk = ABS(filt1)
else
pk = 0.991 * pk[1]
endif
if pk=0 then
denom = -1
else
denom = pk
endif
if denom = -1 then
result = result[1]
else
result = filt1/pk
endif
endif
///////////////////////////////////////////////////
dTR = 0
for i = 0to ATRperiod-1
dTR=dTR+max(abs(Dhigh(i)-Dlow(i)),max(abs(Dhigh(i)-Dclose(i+1)),abs(Dlow(i)-Dclose(i+1))))
next
dtr=dtr/MAX(1,TightenChannel)
avgRange = dTR
maValue = average[max(1,AveragePeriod),AverageMethod](maPrice)
ResultValue = RESULT
Buffer1=maValue
Buffer2=maValue+(avgRange*((overBought)))
Buffer3=maValue-(avgRange*( (overSold)))
Buffer4=maValue+(ResultValue)/1*avgRange
Buffer5=maValue+(avgRange*((10/10)))
Buffer6=maValue+(avgRange*((-10/10)))
if UniAvg then
UniAvgline=Average[UniAvgPeriod](buffer4)
ELSE
UniAvgline=UNDEFINED
endif
MyUNI = result
R = 50+(200-MyUNI*400)
G =50+(200+MyUNI*500)
DRAWCANDLE(Buffer2, Buffer3, Buffer2, Buffer3)coloured(R,G,0,40)
return Buffer1 coloured(0,0,0) style(dottedline,1) as "0 level", Buffer2 coloured(0,0,0) style(dottedline,1) as "overbought level", Buffer3 coloured(0,0,0) style(dottedline,1) as "oversold level", Buffer4 coloured(0,130,250) style(LINE,2) as "UNIVERSAL VALUE",Buffer5 AS"1 level",Buffer6 AS"-1 level",UniAvgline coloured(250,150,0) style(dottedline,1) AS" UniversalAverage"
https://www.prorealcode.com/prorealtime-indicators/universal-channel-oscillator/