답변완료
지표
*항상감사합니다.
수식첨삭부탁드립니다.
1]아이콘표시
2]타주기에도 표시부탁드립니다.
3]정한데이타와 오늘시가의 수식부탁드립니다.
ex)
기존수식)Plot6(O2,"시2")
Plot7(H2,"고2")
Plot8(L2,"저2")
Plot9((H2+L2)/2,"중2")
Plot10(C2,"종2")
첨삭수식)
O2+오늘시가/2
H2+오늘시가/2
L2+오늘시가/2
(H2+L2)/2+오늘시가/2
C2+오늘시가/2
*varO2에 오늘시가를 나누워 보았읍니다
4]강조수식입니다.
2022년10월9일
2022년11월5일
2022년12월15일 등
.
.
.
.
지정한 날짜의 캔들bar가 색칠되는 수식 부탁드립니다.
(*bar위에 아이콘 표시도 부탁드립니다.)
만들어주신 이전수식]
input : 시작일1(20210102),종료일1(20210230);
input : 시작일2(20210228),종료일2(20210330);
var : O1(0),H1(0),L1(0),C1(0);
var : O2(0),H2(0),L2(0),C2(0);
if sDate != sDate[1] and sDate >= 시작일1 and sDate[1] < 시작일1 Then
{
O1 = O;
H1 = h;
L1 = L;
}
if O1 > 0 then
{
if sDate <= 종료일1 Then
{
if H > H1 Then
H1 = H;
if L < L1 Then
L1 = L;
C1 = C;
}
Plot1(O1,"시1");
Plot2(H1,"고1");
Plot3(L1,"저1");
Plot4((H1+L1)/2,"중1");
Plot5(C1,"종1");
}
if sDate != sDate[1] and sDate >= 시작일2 and sDate[1] < 시작일2 Then
{
O2 = O;
H2 = h;
L2 = L;
}
if O2 > 0 then
{
if sDate <= 종료일2 Then
{
if H > H2 Then
H2 = H;
if L < L2 Then
L2 = L;
C2 = C;
}
Plot6(O2,"시2");
Plot7(H2,"고2");
Plot8(L2,"저2");
Plot9((H2+L2)/2,"중2");
Plot10(C2,"종2");
}
2022-11-13
753
글번호 163757
지표
답변완료
수식 문의 드립니다
input : starttime(153000),endtime(630000),n(30);
var : Tcond(false),hh(0),h1(0),ll(0),l1(0);
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Tcond = true;
hh = h;
ll = l;
h1 = hh[1];
l1 = ll[1];
}
if h > hh Then
hh = h;
if l < ll Then
ll = l;
if tcond == true and h1 > 0 and l1 > 0 then
{
if crossup(C,l1+(h1-l1)*1.236+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*1.000+PriceScale*n) Then
buy();
if crossup(C,l1-(h1-l1)*0.618+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*0.500+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*0.236+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*0.000+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*-0.236+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*-0.382+PriceScale*n) Then
buy();
if CrossDown(C,l1+(h1-l1)*1.236-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*1.000-PriceScale*n) Then
sell();
if CrossDown(C,l1-(h1-l1)*0.618-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*0.500-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*0.236-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*-0.000-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*-0.236-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*-0.382-PriceScale*n) Then
sell();
}
if MarketPosition == 1 then
{
if crossup(c,h1+PriceScale*1) Then
exitlong();
if CrossDown(c,l1-PriceScale*1) Then
exitlong();
}
if MarketPosition == -1 then
{
if crossup(c,h1+PriceScale*1) Then
ExitShort();
if CrossDown(c,l1-PriceScale*1) Then
ExitShort();
}
--------------------------
위 수식어의 매매시간이 15:30~ 아침 06:30 까지인데 아침 06:30 에 오버없는
강제청산을 추가를 부탁드립니다.
한번 부탁드린적 있었는데 강제청산이 없어서 다시 올려봅니다.
아래는 청산이 안되었던 79482번의 답변입니다.
input : starttime(153000),endtime(630000),n(30);
var : Tcond(false),hh(0),h1(0),ll(0),l1(0);
if Bdate != Bdate[1] Then
SetStopEndofday(630000);
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
{
SetStopEndofday(0);
Tcond = true;
hh = h;
ll = l;
h1 = hh[1];
l1 = ll[1];
}
if h > hh Then
hh = h;
if l < ll Then
ll = l;
if tcond == true and h1 > 0 and l1 > 0 then
{
if crossup(C,l1+(h1-l1)*1.236+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*1.000+PriceScale*n) Then
buy();
if crossup(C,l1-(h1-l1)*0.618+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*0.500+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*0.236+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*0.000+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*-0.236+PriceScale*n) Then
buy();
if crossup(C,l1+(h1-l1)*-0.382+PriceScale*n) Then
buy();
if CrossDown(C,l1+(h1-l1)*1.236-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*1.000-PriceScale*n) Then
sell();
if CrossDown(C,l1-(h1-l1)*0.618-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*0.500-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*0.236-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*-0.000-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*-0.236-PriceScale*n) Then
sell();
if CrossDown(C,l1+(h1-l1)*-0.382-PriceScale*n) Then
sell();
}
if MarketPosition == 1 then
{
if crossup(c,h1+PriceScale*1) Then
exitlong();
if CrossDown(c,l1-PriceScale*1) Then
exitlong();
}
if MarketPosition == -1 then
{
if crossup(c,h1+PriceScale*1) Then
ExitShort();
if CrossDown(c,l1-PriceScale*1) Then
ExitShort();
}
미리 감사드립니다.
2022-11-14
866
글번호 163751
시스템
답변완료
추세선 이동
input : Period(5),선두께(2);
Var:상승색(red), 하락색(blue);
input : 틱1(0),틱2(1);
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);
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]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
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]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
#Text_Delete(txx);
Txx = Text_New(date11,time11,Value11+PriceScale*7,"●");
Condition99 = true;
Text_SetColor(Txx,Red);
Text_SetStyle(Txx,2,2);
Text_SetSize(txx,30);
if Condition99 == true and Loval[0] <= loval[1]-PriceScale*틱2 Then
{
Condition99 = False;
Text_Delete(txx);
}
if abs(value11[1]-value12[1]) < 1 Then
Text_Delete(txxx);
txxx = Text_New(date11,time11,Value11,NumToStr(abs(value11-value12),2));
Text_SetStyle(txxx,2,1);
Text_SetBold(txxx,1);
if abs(value11-value12) < 1 Then
{
Text_SetColor(Txxx,Blue);
Text_SetSize(txxx,25);
}
Else
{
Text_SetColor(Txxx,Blue);
Text_SetSize(txxx,15);
}
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
if Condition99 == true and Loval[0] <= loval[1]-PriceScale*틱2 Then
{
Condition99 = False;
Text_Delete(txx);
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
Text_SetString(txxx,NumToStr(abs(value11-value12),2));
if abs(value11-value12) < 1 Then
{
Text_SetColor(Txxx,Blue);
Text_SetSize(txxx,25);
}
Else
{
Text_SetColor(Txxx,Blue);
Text_SetSize(txxx,15);
}
}
}
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]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
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]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
Condition1 = False;
if Condition99 == true and Loval[0] >= Loval[1]-PriceScale*틱1 Then
{
Condition99 = False;
Text_Delete(txx);
}
if abs(value11[1]-value12[1]) < 1 Then
Text_Delete(txxx);
txxx = Text_New(date11,time11,Value11,NumToStr(abs(value11-value12),2));
Text_SetStyle(txxx,2,3);
Text_SetBold(txxx,1);
if abs(value11-value12) < 1 Then
{
Text_SetColor(Txxx,Red);
Text_SetSize(txxx,25);
}
Else
{
Text_SetColor(Txxx,Red);
Text_SetSize(txxx,15);
}
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
Text_SetString(txxx,NumToStr(abs(value11-value12),2));
if abs(value11-value12) < 1 Then
{
Text_SetColor(Txxx,Red);
Text_SetSize(txxx,25);
}
Else
{
Text_SetColor(Txxx,Red);
Text_SetSize(txxx,15);
}
}
}
TL_SetSize(TL1,선두께);
1.추세선과 캔들이 겹쳐 서로 잘 안보이므로, 왼쪽으로 5봉 정도 추세선 이동.
2.지금은 추세선 크기가 1p에 도달하면 색상과 크기가 바뀌는데,
이것을 그 추세가 끝나고 역으로 전환할 때 색상과 크기를 바뀌게 하여,
크기가 1p 이상은 표기하고 1p 이하는 지우기로 수정. 감사합니다.
2022-11-13
807
글번호 163750
지표
답변완료
문의드립니다.
if CrossUp(ma(c,5),ma(c,20)) Then{
//Dir = -1;
var11 = sdate[NthlowestBar(1,l,15)];
var12 = STime[NthlowestBar(1,l,15)];
var13 = Low[NthlowestBar(1,l,15)];
var21 = var11[1];
var22 = var12[1];
var23 = var13[1];
var31 = var21[1];
var32 = var22[1];
var33 = var23[1];
TL_Delete(value1);
if var23 >= 0 Then{
value1 = TL_New(var21,var22,var23,var11,var12,var13);#최근 저점-저점 추세선
TL_SetExtRight(value1,True);
TL_SetColor(value1,RED); #오른쪽 연장
}
if var33 >= 0 Then{
value2 = TL_New(var31,var32,var33,var21,var22,var23);#과거 저점-저점 추세선
TL_SetColor(value2,RED);
}
if var53 > 0 Then{
value4 = TL_New(var51,var52,var53,var11,var12,var13);#고점-저점 추세선
TL_SetColor(value4,BLUE);
}
}
1.틱차트상에서(60틱) 5일이평선과 20일이평선이
골든크로스를 줬을때에 최근15봉 저가를 기준점으로
추세선을 표현하려고 합니다.
그런데 틱차트가 초단위로 움직이니깐 초단위로 봉이 여러개 생겼을 경우에는
그림에서 보시는것처럼 초단위로 생긴 봉들의 제일 왼쪽을 기준점으로
추세선이 표현되네요.
1분봉에서는 문제없이 제대로 표현이 되구요.
제대로 된 봉의 저가를 기준으로 추세선을 긋고 싶습니다.
이게 추세선 조건에서 stime이 초단위까지만 표현되어서
생기는 문제 같은데요.
해결이 될까요?
var : 분주기(30),분주기1(15),분주기2(5); //P(5),
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum(0),mav(0),tf1(0),TFF(0),entry(false),tf2(0);
Array : CC[100](0),OO[100](0),gHH[100](0),gLL[100](0),TT[100](0),ii[100](0),O2[100](0);
Array : C1[100](0),T1[100](0);
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) Then{
S1 = TimeToMinutes(100000);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TFF = TM%60;
TF = TM%분주기;
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) or
(TF < TF[1]) Then{
OO[0] = o;
gHH[0] = H;
gLL[0] = L;
TT[0] = stime;
ii[0] = 0;
for cnt = 1 to 99{
OO[cnt] = OO[cnt-1][1];
gHH[cnt] = gHH[cnt-1][1];
gLL[cnt] = gLL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
TT[cnt] = TT[cnt-1][1];
ii[cnt] = ii[cnt-1][1];
}
}
if H > gHH[0] Then
gHH[0] = H;
if L < gLL[0] Then
gLL[0] = L;
CC[0] = C;
// ii[0] = ii[0]+1;
/*
TF1 = TM%분주기1;
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) or
(TF1 < TF1[1]) Then{
T1[0] = stime;
for cnt = 1 to 99{
C1[cnt] = C1[cnt-1][1];
T1[cnt] = T1[cnt-1][1];
}
}
C1[0] = C;
TF2 = TM%분주기2;
if (sdate != sdate[1] and stime >= 100000) or
(sdate == sdate[1] and (Stime == 100000 or (stime > 100000 and stime[1] < 100000))) or
(TF2 < TF2[1]) Then{
O2[0] = o;
for cnt = 1 to 99{
O2[cnt] = O2[cnt-1][1];
}
}
*/
}
2.30분단위로 해서 29분이후로는 진입하지 않는다를
식으로 표현하고 싶습니다.
감사합니다~
2022-11-14
802
글번호 163749
시스템