답변완료
수식 부탁 드립니다.
안녕하세요
몇일전에 올려주신 수식입니다.
여기서 선의 굵기를 약간더 굵게 하고 싶은데, 선을 약간더 굵게 할려면은 어떻게 하는지 알려 주시면 감사하겠습니다.
input : ntime1(30);
var : S1(0),D1(0),TM(0),TF(0);
var : hh(0),ll(0),mm(0),b1(0),t1(0),tl(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime1 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or
(Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then
{
b1 = sDate;
t1 = sTime;
hh = h;
ll = l;
mm = (hh+ll)/2;
tl = TL_New(b1,t1,mm,NextBarSdate,NextBarStime,mm);
TL_SetColor(tl,Green);
}
Else
{
if h > hh Then
hh = h;
if l < ll Then
ll = l;
mm = (hh+ll)/2;
TL_SetBegin(tl,b1,t1,mm);
TL_SetEnd(tl,NextBarSdate,NextBarStime,mm);
}
}
감사합니다.
2023-02-13
848
글번호 166222
지표
답변완료
부탁 드립니다
수고하십니다 해주신자료는 너무 잘쓰고 있습니다
아래 수식은 돈키언채널을 기반했습니다
RED,BLUE지역을 박스 처리했으면 좋겠습니다 그리고 고가,저가를 종가처리했으면
좋겠습니다
노고에 감사드리며 수고하세요
inputs: ChanLength( 20 ),MALength( 50 ) ;
variables: UpperBand( 0 ),LowerBand( 0 ),MidBand( 0 ),LongOK( false ),ShortOK( false ),
LowRef( 0 ),HighRef( 0 ),TriggerLine( 0 ),MAValue( 0 ) ;
UpperBand = Highest( High, ChanLength ) ;
LowerBand = Lowest( Low, ChanLength ) ;
MAValue = hMa( Close, MALength ) ;
if Low == LowerBand then
begin
LowRef = Low ;
LongOK = false ;
ShortOK = true ;
end ;
if High == UpperBand then
begin
HighRef = High ;
LongOK = true ;
ShortOK = false ;
end ;
TriggerLine = .5 * ( HighRef + LowRef ) ;
Plot1( UpperBand, "UpperBand",iff(LongOK,RED,BLUE));
Plot2( LowerBand, "LowerBand",iff(LongOK,REd,BLUE));
Plot3( TriggerLine, "Trigger");
Plot4( MAValue, "Mov Avg");
2023-02-12
745
글번호 166216
지표
답변완료
수식 체크 부탁 드립니다.
수고하십니다.
아래 2번 함수식의 오류 점검을 부탁드립니다.
함수식:분봉차트에서 일봉의 기간값을 분봉으로 환산하여 일봉기간내의 분봉갯수를 계산한다
오류 1번: 분봉개수의 계산이 틀립니다.(1일간의 dayindex 차이 발생)
오류 2번: n전일 last dayindex에서 당일 last dayindex까지 선이 이어져야 하는데, 그러하지 않습니다. 오류1번 때문인지 하루의 중간에서 선이 바뀝니다.
# 1번 지표식
Input : Period(10), sPeriod(05) ;
Var : Box_Top(0), Box_Bottom(0), sBox_Top(0), sBox_Bottom(0) ;
Var : BarCount(0), sBarCount(0) ;
If DataCompress == 3 Then # 일봉
{
Box_Top = highest(C, Period) ;
Box_Bottom = lowest( C, Period) ;
sBox_Top = highest(C,sPeriod) ;
sBox_Bottom = lowest( C,sPeriod) ;
}
If DataCompress == 2 Then # 분봉
{
# 일봉차트의 봉개수를 분봉차트의 봉갯수로 구한다.
BarCount = _분봉갯수_일봉(Period) ;
sBarCount = _분봉갯수_일봉(sPeriod) ;
# 기준값 : last DayIndex의 DayClose
Box_Top = highest(iff(Bdate<NextBarSdate, DayClose, 0), BarCount - 0 ) ;
Box_Bottom = lowest( iff(Bdate<NextBarSdate, DayClose, Box_Top), BarCount - 0 ) ;
sBox_Top = highest(iff(Bdate<NextBarSdate, DayClose, 0), sBarCount - 0 ) ;
sBox_Bottom = lowest( iff(Bdate<NextBarSdate, DayClose, sBox_Top), sBarCount - 0 ) ;
}
Plot1(Box_Top, "Box_Top") ; # 일자 그래프 & 빨강
Plot2(Box_Bottom, "Box_Bottom") ; # 일자 그래프 & 파랑
Plot51(sBox_Top, "sBox_Top") ; # 일자 그래프 & 빨강
Plot52(sBox_Bottom, "sBox_Bottom") ; # 일자 그래프 & 파랑
# 2번 함수식
#======================================================#
# 함수명 : _분봉갯수_일봉.yfu
# 지표명 : _분봉갯수_일봉.yin
# 개 요 : 분봉차트에서 일봉의 기간값을 분봉으로 환산하여 일봉기간내의 분봉갯수를 계산한다.
#======================================================#
input : P(Numeric) ;
var : cnt(0), SumDayIndex(0) ;
array : svDayIndex[241](0);
if Bdate[0] < NextBarSdate Then
{
cnt = cnt + 1 ;
if cnt <= P-0 Then
{
svDayIndex[cnt%(P-0)] = DayIndex+1 ;
SumDayIndex = SumDayIndex + svDayIndex[cnt%(P-0)] ;
}
Else
{
SumDayIndex = SumDayIndex
- svDayIndex[cnt%(P-0)]
+ DayIndex+1 ;
svDayIndex[cnt%(P-0)] = DayIndex+1 ;
}
}
_분봉갯수_일봉 = SumDayIndex ;
2023-02-12
832
글번호 166215
지표
답변완료
검토부탁드립니다.
안녕하세요? 부탁드려서 아래와 같은 식을 받았는데, 매도 하나만 이루어지고 안 되는데 수정도 못해보겠네요. 검토좀 부탁드리고요, 이참에 첫번째 20이평선 하회할 때 sp에서 첫진입을 시작하는 것으로 바꿔주시면 감사하겠습니다.
#1)10.20,60 이평선이 정배열로 봉이 진행 중
#2) 20이평선이 60이평선 위에 있는 동안 최초로 봉의 저점이 20이평선을 하회했을때 그 봉에서의 20이평선 가격을 sp라 하고
#3) 그 뒤 60이평선이 상향 진행되어 sp 가격까지 도달된 이후
#4) 두번째로 봉의 저점이 20이평선을 하회하게 되면 그 선에서 매도 1계약하고 그 때의 20이평선 가격을 sp2라 하고
#5) 그 후 만일 봉의 저점이 60이평선을 하회하지 못한 채 봉의 저점이 20이평선 위로 올라가 최소한 10봉을 진행하게 되고 다시 60 이평선이 또 상향하여 sp2가격에 이르면 매도 1계약
#6)...그 식으로 누적시켜 가다가 상황이 반전되어 그 다음엔 반대로 역배열이 되면 독같은 방식으로 일단 최초의 역sp에서 매도진입분 전량청산하고 매수 1계약, 그 다음 sp2에서 또 매수 1계약...하는 식
input : P1(10),P2(20),P3(60);
var : mav1(0),mav2(0),mav3(0);
var : S(0),SP(0),SellAdd(False);
var : B(0),LP(0),BuyAdd(False);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
Condition1 = mav1 > mav2 and mav2 > mav3;
Condition2 = mav1 < mav2 and mav2 < mav3;
if Condition1 == true Then
{
if Condition1[1] == False Then
S = 0;
if CrossUp(mav2,mav3) then
{
S = 1;
}
Else if CrossDown(mav2,mav3) then
{
S = -1;
}
Else
{
if S >= 1 Then
{
if S == 1 Then
{
if CrossDown(L,mav2) Then
{
sp = mav2;
S = 2;
}
}
Else if S == 2 Then
{
if mav3 >= sp Then
{
S = 3;
}
}
Else if S == 3 Then
{
if MarketPosition >= 0 and CrossDown(L,mav2) Then
{
Sell("s1",OnClose,Def,1);
sp = mav2;
}
}
}
}
}
Else
S = 0;
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
SellAdd = true;
var1 = Index;
}
if L < mav3 Then
SellAdd = False;
if SellAdd == true and Index > var1+10 and mav3 >= sp and CountIf(L>mav2,10) == 10 Then
{
Sell("s",OnClose,Def,1);
sp = mav2;
}
}
if Condition2 == true Then
{
if Condition2[1] == False Then
B = 0;
if CrossUp(mav2,mav3) then
{
B = 1;
}
Else if CrossDown(mav2,mav3) then
{
B = -1;
}
Else
{
if B <= -1 Then
{
if B == -1 Then
{
if Crossup(H,mav2) Then
{
LP = mav2;
B = -2;
}
}
Else if B == -2 Then
{
if mav3 <= LP Then
{
B = -3;
}
}
Else if B == -3 Then
{
if MarketPosition <= 0 and CrossUp(H,mav2) Then
{
Buy("b",OnClose,Def,1);
LP = mav2;
}
}
}
}
}
Else
B = 0;
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
BuyAdd = true;
var2 = Index;
}
if H > mav3 Then
BuyAdd = False;
if BuyAdd == true and Index > var2+10 and mav3 <= LP and CountIf(H<mav2,10) == 10 Then
{
Buy("bb",OnClose,Def,1);
LP = mav2;
}
}
2023-02-12
791
글번호 166214
시스템