답변완료
추세선 폭
input : Period(120),선두께(0.05),N(30);
Var:상승색(Magenta), 하락색(Cyan);
Var:j(0),T(0),txx(0),txxx(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0),tl9(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
Plot1(0);
r[0] = 0;
r[1] = 2;
r[2] = 3.;
r[3] = -1;
r[4] = -2.;
r[5] = 1;
r[6] = 0.5;
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
}
LoVal[0] = L;
LoBar[0] = 0;
date11 = date[HiBar[0]+N];
time11 = stime[HiBar[0]+N];
Value11 = HiVal[0];
date12 = date[LoBar[0]+N];
time12 = stime[LoBar[0]+N];
Value12 = LoVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
date21 = date[HiBar[0]+N];
time21 = stime[HiBar[0]+N];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
Text_SetSize(tx,25);
Text_SetColor(Tx,Red);
Text_SetStyle(tx,1,1);
Text_SetBold(tx,1);
if abs(value12[1]-value11[1]) < 0.65 Then
Text_Delete(tx);
tx = text_new(sDate,stime,value12,NumToStr(value12-value11,2));
Text_SetColor(Tx,Blue);
Text_SetStyle(tx,1,1);
Text_SetSize(tx,35);
Text_SetBold(tx,1);
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]+N];
time12 = stime[LoBar[0]+N];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
Text_SetString(tx,NumToStr(value12-value11,2));
Text_SetLocation(tx,sDate,sTime,value12);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
}
HiVal[0] = H;
HiBar[0] = 0;
date11 = date[LoBar[0]+N];
time11 = stime[LoBar[0]+N];
Value11 = LoVal[0];
date12 = date[HiBar[0]+N];
time12 = stime[HiBar[0]+N];
Value12 = HiVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
date31 = date[LoBar[0]+N];
time31 = stime[LoBar[0]+N];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
Text_SetSize(tx,25);
Text_SetColor(Tx,Blue);
Text_SetStyle(tx,1,0);
Text_SetBold(tx,1);
if abs(value12[1]-value11[1]) < 0.65 Then
Text_Delete(tx);
tx = text_new(sDate,stime,value12,NumToStr(value12-value11,2));
Text_SetColor(Tx,Red);
Text_SetStyle(tx,1,1);
Text_SetSize(tx,35);
Text_SetBold(tx,1);
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]+N];
time12 = stime[HiBar[0]+N];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
Text_SetString(tx,NumToStr(value12-value11,2));
Text_SetLocation(tx,sDate,sTime,value12);
}
}
TL_SetSize(TL1,선두께);
추세선이 양전환되면 추세선 하단에서 위로 1p 와 1.5p 두 지점에 일자그래프 표시.
음으로 바뀌면 기존 일자그래프 모두 삭제하고,상단에서 아래로 1p 와 1.5p 두 지점에 일자그래프 표시. 일자그래프는 생성과 삭제 반복.
의문:r[0]부터 r[6]까지는 없애도 되는 수식인가요? 감사합니다.
2022-12-27
1086
글번호 164880
지표
답변완료
수정 의뢰드립니다.
안녕하세요!
아래 첨부 파일은 다이버전스를 응용한 스토케스틱과 볼린저밴드등의 매매식들 입니다!
다름이 아니라 아래 수식들을 적용해 보았는데 원본과 다르게 나타나네요!
첨부파일 처럼 우측 원본과 동일하게 수식기호들이 나타나도록 수정을 부탁드립니다!
그리고 시스템식도 단방향으로만 나오는걸 양방향 거래가 되게 끔 수정을 부탁드립니다!
감사합니다!
--------------------------------------------------------------------
[지표식]
INPUT : RsiPeriod(13),PLPeriod(2),TSLPeriod(7), BandPeriod(34), 표준편차(1.6185);
var :RSIV(0), RSIPL(0), TSL(0), MidBand(0), UpBand(0),DnBand(0) ;
var : TL1(0), TL2(0), TLi1(0), TLi2(0), TX1(0), TX2(0), TX3(0), TX4(0), TX5(0), TX6(0);
RSIV = RSI(RSIPeriod);
RSIPL = ma(RSIV,PLPeriod); //RSI_Price_Line
TSL = ma(RSIV,TSLPeriod); //Trade_Signal_Line
MidBand = ma(RSIV,BandPeriod); //Volatility_Band
UpBand = MidBand + (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Up
DnBand = MidBand - (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Down
#
if RSIPL > RSIPL[1] and RSIPL[1] < RSIPL[2] and RSIPL < 50 then { //스토캐스틱 상승반전
var1 = RSIPL[1];
var2 = var1[1];
var3 = C[1];
var4 = var3[1];
var5 = sdate[1];
var6 = var5[1];
var7 = stime[1];
var8 = var7[1];
if var1 > var2 and var3 < var4 then //지표값은 높아지고 종가는 낮아지고
var9 = 1;
}
else
var9 = 0;
if var9 == 1 then {
TL1 = TL_New(var6,var8,var4,var5,var7,var3);
TLi1= TL_New_self(var6,var8,var2,var5,var7,var1);
TX1 = Text_new(var5, var7, L, "★");
TL_SetSize(TL1, 2);
TL_SetColor(TL1, Red);
TL_SetSize(TLi1, 2);
TL_SetColor(TLi1, Red);
Text_SetColor(Tx1,Magenta);
Text_SetStyle(Tx1,0,0);
}
if CrossUp(RSIPL, DnBand) then {
TX3 = Text_new(sdate, stime, L, "▲");
Text_SetColor(Tx3,rgb(160,70,255));
Text_SetStyle(Tx3,2,0);
}
if RSIPL < RSIPL[1] and RSIPL[1] > RSIPL[2] and RSIPL > 50 then {//스토캐스틱 하락반전
var11 = RSIPL[1];
var12 = var11[1];
var13 = C[1];
var14 = var13[1];
var15 = sdate[1];
var16 = var15[1];
var17 = stime[1];
var18 = var17[1];
if var11 < var12 and var13 > var14 then //지표값은 낮아지고 종가는 높아지고
var19 = 1;
}
else
var19 = 0;
if var19 == 1 then {
TL2 = TL_New(var16,var18,var14,var15,var17,var13);
TLi2= TL_New_self(var16,var18,var12,var15,var17,var11);
TX2 = Text_new(var15, var17, H, "★");
TL_SetSize(TL2, 2);
TL_SetColor(TL2, blue);
TL_SetSize(TLi2, 2);
TL_SetColor(TLi2, blue);
Text_SetColor(Tx2,Lcyan);
Text_SetStyle(Tx2,0,1);
}
if CrossDown(RSIPL, UpBand) then {
TX4 = Text_new(sdate, stime, H, "▼");
Text_SetColor(Tx4,Rgb(0,255,0));
Text_SetStyle(Tx4,2,1);
}
#
plot1(RSIPL, "RSIPL",Lgreen,def,0);
plot2(TSL,"TSL",red,def,0);
plot3(MidBand,"MidBand",magenta,def,0);
plot4(UpBand,"UpBand",blue,def,0);
plot5(DnBand,"DnBand",blue,def,0);
if CrossUp(RSIPL,DnBand) then
plot6(RSIPL, "상향돌파시점");
if CrossDown(RSIPL, UpBand) then
plot7(RSIPL, "하향이탈시점");
if var9 == 1 then
plot8(RSIPL, "상승다이버전스");
if var19 == 1 then
plot9(RSIPL, "하락다이저번스");
[시스템식]
INPUT : RsiPeriod(13),PLPeriod(2),TSLPeriod(7), BandPeriod(34), 표준편차(1.6185);
var :RSIV(0), RSIPL(0), TSL(0), MidBand(0), UpBand(0),DnBand(0) ;
var : TL1(0), TL2(0), TLi1(0), TLi2(0), TX1(0), TX2(0), TX3(0), TX4(0);
RSIV = RSI(RSIPeriod);
RSIPL = ma(RSIV,PLPeriod); //RSI_Price_Line
TSL = ma(RSIV,TSLPeriod); //Trade_Signal_Line
MidBand = ma(RSIV,BandPeriod); //Volatility_Band
UpBand = MidBand + (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Up
DnBand = MidBand - (표준편차 * std(RSIV, BandPeriod)); //Volatility_Band_Down
#
if RSIPL > RSIPL[1] and RSIPL[1] < RSIPL[2] and RSIPL < 50 then { //스토캐스틱 상승반전
var1 = RSIPL[1];
var2 = var1[1];
var3 = C[1];
var4 = var3[1];
var5 = sdate[1];
var6 = var5[1];
var7 = stime[1];
var8 = var7[1];
if var1 > var2 and var3 < var4 then //지표값은 높아지고 종가는 낮아지고
var9 = 1;
}
else
var9 = 0;
if RSIPL < RSIPL[1] and RSIPL[1] > RSIPL[2] and RSIPL > 50 then {//스토캐스틱 하락반전
var11 = RSIPL[1];
var12 = var11[1];
var13 = C[1];
var14 = var13[1];
var15 = sdate[1];
var16 = var15[1];
var17 = stime[1];
var18 = var17[1];
if var11 < var12 and var13 > var14 then //지표값은 낮아지고 종가는 높아지고
var19 = 1;
}
else
var19 = 0;
#
if var9 == 1 then
buy("Div_Buy");
if CrossUp(RSIPL, DnBand) then
buy("PL_Buy");
if var19 == 1 then
exitlong("Div_EL");
if CrossDown(RSIPL, UpBand) then
exitlong("PL_EL");
-----------------------------------------------------------------
스토케스틱 다이버전스는 시스템 수식이 없습니다.
지표식만이라도 수정을 부탁드립니다.
[지표식]
Input : Period(5), Period1(3), Period2(3);
var : StoK(0),StoD(0), TL1(0), TL2(0), TLi1(0), TLi2(0), TX1(0), TX2(0), TX3(0), TX4(0), TX5(0), TX6(0);
StoK = StochasticsK(Period,Period1);
StoD = StochasticsD(Period,Period1,Period2);
if StoK > StoK[1] and StoK[1] < StoK[2] and StoK < 60 then { //스토캐스틱 상승반전
var1 = StoK[1];
var2 = var1[1];
var3 = C[1];
var4 = var3[1];
var5 = sdate[1];
var6 = var5[1];
var7 = stime[1];
var8 = var7[1];
if var1 > var2 and var3 < var4 then //지표값은 높아지고 종가는 낮아지고
var9 = 1;
}
else
var9 = 0;
if var9 == 1 then {
TL1 = TL_New(var6,var8,var4,var5,var7,var3);
TLi1= TL_New_self(var6,var8,var2,var5,var7,var1);
TX1 = Text_new(var5, var7, L, "★");
TL_SetSize(TL1, 2);
TL_SetColor(TL1, Red);
TL_SetSize(TLi1, 2);
TL_SetColor(TLi1, Red);
Text_SetColor(Tx1,Magenta);
Text_SetStyle(Tx1,0,0);
}
if CrossUp(stoK, 20) and ma(C,5) > ma(C,20) then {
TX3 = Text_new(sdate, stime, L, "▲");
Text_SetColor(Tx3,rgb(160,70,255));
Text_SetStyle(Tx3,2,0);
}
if StoK < StoK[1] and StoK[1] > StoK[2] and StoK > 40 then {//스토캐스틱 하락반전
var11 = StoK[1];
var12 = var11[1];
var13 = C[1];
var14 = var13[1];
var15 = sdate[1];
var16 = var15[1];
var17 = stime[1];
var18 = var17[1];
if var11 < var12 and var13 > var14 then //지표값은 낮아지고 종가는 높아지고
var19 = 1;
}
else
var19 = 0;
if var19 == 1 then {
TL2 = TL_New(var16,var18,var14,var15,var17,var13);
TLi2= TL_New_self(var16,var18,var12,var15,var17,var11);
TX2 = Text_new(var15, var17, H, "★");
TL_SetSize(TL2, 2);
TL_SetColor(TL2, blue);
TL_SetSize(TLi2, 2);
TL_SetColor(TLi2, blue);
Text_SetColor(Tx2,Lcyan);
Text_SetStyle(Tx2,0,1);
}
if CrossDown(stoK, 80) then {
TX4 = Text_new(sdate, stime, H, "▼");
Text_SetColor(Tx4,Rgb(0,255,0));
Text_SetStyle(Tx4,2,1);
}
Plot1(StoK, "StochasticsK");
Plot2(StoD, "StochasticsD");
PlotBaseLine1(20, "기준선20");
PlotBaseLine2(80, "기준선80");
if CrossUp(stoK, 20) and ma(C,5) > ma(C,20) then
plot3(stoK, "상향돌파시점");
if CrossDown(StoK,80) then
plot4(StoK, "하락이탈시점");
if var9 == 1 then
plot5(stoK, "상승다이버전스");
if var19 == 1 then
plot6(stoK, "하락다이저번스");
2022-12-26
1511
글번호 164845
지표