답변완료
bbmacd 세로선
input : FastLen(30),SlowLen(90),Length(20),Stdv(1.1);
var : bbmacd(0),avgv(0),sdev(0),r(0),b(0),UpperBand(0),LowerBand(0);
var : tx(0);
bbMacd = ma(c,FastLen)-ma(c,SlowLen);
avgv = ma(bbmacd,Length);
sDev = std(bbMacd,Length);
UpperBand = avgv+(StDv*sDev);
LowerBand = avgv-(StDv*sDev);
if bbMacd > bbMacd[10] then
{
r=255;
b=0;
}
else
{
r=0;
b=255;
}
plot1(UpperBand,"UpperBand",RGB(0,0,255));
plot2(LowerBand,"LowerBand",RGB(255,0,0));
tx = Text_New_Self(sdate,stime,bbMacd,"●");
Text_SetColor(tx,rgb(r,0,b));
어제 휩소는 10봉 전으로 바꾸니 많이 좋아졌습니다.
스스로 해 봤어야 되는데 무작정 문의만 드려 죄송합니다.
bbmacd 색깔이 바뀔때 같은 색으로 (red,blue) 색깔,두께 조절 가능하게 세로선 부탁드립니다.
2022-06-02
1186
글번호 159556
지표
답변완료
수식 부탁드립니다.
안녕하십니까!!
헤이킨아시(HeikinAshi Candle) 시고저종 값으로 적용한 두 가지
헤이킨아시용 파라볼릭 Sar , 파라볼릭(종가) CSar 사용자 함수를 부탁드립니다.
수고하십시요!!!
아래는 파라볼릭(종가) CSar 사용자 함수 수정해 본 것인데,
지표값이 틀리게 나타나네요
#======================================================#
# Heikin Ashi Candle 계산식
Vars: ha_C(0), ha_O(0), ha_H(0), ha_L(0) ;
#------------------------------------------------------#
ha_O = (ha_O[1] + ha_C[1]) / 2 ; # 시가 = (이전 막대의 시가+이전막대의 종가)/2, 직전HA의 몸통 중간값(절반)
If Index == 0 then ha_O = O ;
ha_C = (O+H+L+C)/4 ; # 종가 = 캔들의 4median
ha_H = MaxList(H, ha_O, ha_C) ;
ha_L = MinList(L, ha_O, ha_C) ;
#======================================================#
Input : AF(NumericSimple), AFMAX(NumericSimple);
#Var : Direction(0), SAR_Value(Close), AF_Value(.02), HighValue(High), LowValue(Low), EP(0);
Var : Direction(0), SAR_Value(ha_C), AF_Value(.02), HighValue(ha_H), LowValue(ha_L), EP(0);
SAR_Value = ha_C ;
HighValue = ha_H ;
LowValue = ha_L ;
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if ha_H > HighValue then
{
HighValue = ha_H;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if ha_C < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = ha_L;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if ha_L < LowValue then
{
LowValue = ha_L;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if ha_C > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = ha_H;
}
}
ha_CSar = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if ha_H > HighValue then
{
HighValue = ha_H;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if ha_L < LowValue then
{
LowValue = ha_L;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
ha_CSar = SAR_Value;
}
else
{
if Direction == 0 then
{
if ha_C > ha_C[1] then Direction = 1;
else
if ha_C < ha_C[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if ha_C < ha_C[1] then
{
Direction = -1;
SAR_Value = HighValue;
ha_CSar = SAR_Value;
}
}
if Direction == -1 then
{
if ha_C > ha_C[1] then
{
Direction = 1;
SAR_Value = LowValue;
ha_CSar = SAR_Value;
}
}
}
LowValue = min(ha_L, LowValue);
HighValue = max(ha_H, HighValue);
}
}
2022-06-02
1127
글번호 159555
사용자 함수
답변완료
[질문 77224]번에 대한 추가 질문 입니다.
아래의 수식을 적용하여 실제 매매를 해본 결과 첨부 캡쳐 사진과 같이 11회 이후에 최근 3개의 청산시 시스템 상으로 매수 수량이 2개로 분리되어 b3가 3개, 14개로 또 이후에 b7도 3개 14개로 이런식으로 자동으로 분리가 되면서 3개 짜리만 업비트에 매도 신호가 나가고, 나머지 14개 짜리는 이미 매도된 것으로 간주되어 매도 신호가 안나가고 계속 보유하는 현상이 발생하고 있습니다. 따라서 11개 이후에 청산신호 발행시 분리되지 말고 3개의 청산신호가 발생시 동시에 매도신호가 나가도록 수정 부탁 드립니다. 감사합니다.
--------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
1
이전 질문에 대해 잘못 파악하고 작성해 드린부분이 있어
이전 질문기준으로 아래 청산식을 수정해 드립니다.
진입10회까지는 평단가+1%상승하면 전량청산하고
11회 이후에는 최근 3개 진입의 평단가와 수량만 산정해 청산하게 수정해 드립니다.
var : AE1(0),sum1(0),sum2(0),AE2(0);
var : Xcond1(False),Xcond2(False);
var : v3(0),v2(0),v1(0);
var : c3(0),c2(0),c1(0);
if MarketPosition == 1 Then
{
if CurrentContracts < CurrentContracts[1] Then
{
if LatestExitName(0) == "bx1" Then
Xcond1 = true;
if LatestExitName(0) == "bx2" Then
Xcond2 = true;
}
if CurrentContracts > CurrentContracts[1] Then
{
V3 = V2;
V2 = V1;
V1 = CurrentContracts-CurrentContracts[1];
C3 = C2;
C2 = C1;
C1 = LatestEntryPrice(0);
if MaxEntries <= 10 Then
{
AE1 = AvgEntryPrice;
}
Else
{
sum1 = (v3*C3)+(V2*C2)+(V1+C1);
sum2 = (V3+V2+V1);
AE2 = sum1/Sum2;
Xcond2 = False;
}
}
if Xcond1 == False Then
{
ExitLong("bx1",AtLimit,AE1*1.015);
}
if MaxEntries >= 11 and Xcond2 == False Then
{
ExitLong("bx2",AtLimit,AE2*1.015,"",sum2,1);
}
}
Else
{
AE1 = 0;
sum1 = 0;
sum2 = 0;
AE2 = 0;
Xcond1 = False;
Xcond2 = False;
V1 = 0;
V2 = 0;
V3 = 0;
C1 = 0;
C2 = 0;
c3 = 0;
}
2022-06-02
1451
글번호 159554
시스템
답변완료
차트 선 표시
답변 너무 감사드립니다.
답변 달아주신 내용에 위 사진과 제가 말씀드린 스윙 함수값이 동일하지 않다고 말씀하셨는데, 혹시 개발자님께서는 저 사진과 동일한 스윙 함수값을 어떻게 보시는지 궁금합니다. 또 그 스윙 함수값을 사진처럼 선으로 차트에 표시하고 싶은데 방법이 있을까요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 스윙 하이로우 지표
> 안녕하세요
예스스탁입니다.
스윙하이,스윙로우 함수가
올리신 그림의 스윙지점(고점/저점)들과 동일하지는 않습니다.
아래 내용이 아니시면 별도로 고점과 저점을 판단기준으로 고려해 보셔야 합니다.
input : Left(1),right(1);
var : T(0);
if SwingHigh(1,H,Left,right,left+right+1) != -1 Then
{
T = 1;
if T != T[1] Then
var1 = H[right];
Else
{
if H[right] > var1 Then
var1 = H[right];
}
}
if Swinglow(1,L,Left,right,left+right+1) != -1 Then
{
T = -1;
if T != T[1] Then
var2 = L[right];
Else
{
if L[right] < var2 Then
var2 = L[right];
}
}
if T == -1 and CrossUp(C,var1) Then
Buy();
if T == 1 and CrossDown(C,var2) Then
Sell();
즐거운 하루되세요
> 히익 님이 쓴 글입니다.
> 제목 : 스윙 하이로우 지표
> 안녕하세요 개발자님 덕분에 항상 새로운 깨달음으로 시스템 트레이딩에 대한 즐거움을 느끼고 있습니다.
첨부파일에 있는 스윙 하이로우 처럼 차트에 이 지표를 적용하고 싶습니다.
스윙로우와 하이 모두 swinghigh(1,H,1,1,3) swinglow(1,L,1,1,3) 값을 가진 듯 합니다. 그리고 항상 '스윙하이>>스윙로우>>스윙하이>>스윙로우' 와 같이 스윙하이 다음에는 항상 스윙로우가 오고, 스윙로우 다음에는 항상 스윙하이가 오는 듯 합니다.
이 내용을 함수지표로 적용하고, 차트에 적용할 수 있는 방법이 있을까요?
수고 많으십니다. 감사합니다^^
2022-06-02
1079
글번호 159552
지표
답변완료
수식 문의
다음 수식을 예스 수식으로 변환하고 싶습니다.
출처도 아래 링크에 첨부하였습니다.
도움 되시기 바랍니다.
부탁 좀 드리겠습니다.
감사합니다.
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/
2022-06-02
1010
글번호 159542
지표