답변완료
수식추가
Inputs : Period(20), Sence(1.5), CC_DN(Yellow);
var : 기준선기간(26);
Vars:
VLineUp(0),
VLineDn(0),
HHighest(0),
LLowest(0),/
JustChanged(FALSE),
VLine(0), DBN(0),T(0);
Array:
Highs[35](0),
Lows[35](0),
RRange[35](0),
UpWave[1](FALSE),
DnWave[1](FALSE);
.
If STime == 180000 Then
DBN = 0;
DBN = DBN + 1;
Var1 = Period;
Var2 = Var1 - 1;
Var3 = Var1 - 2;
Var5 = Sence;
Var6 = H-L;
JustChanged = FALSE;
if CurrentBar <= Var2 then begin
Highs[CurrentBar] = Close;
Lows[CurrentBar] = Close;
RRange[CurrentBar] = (H-L) /2;
end;
if CurrentBar == Var1 then begin
if Highs[Var2] >= Highs[Var3] then begin
UpWave[1] = TRUE;
HHighest = Highs[Var2];
VLineUp = HHighest - (Var5 * MA(Var6,Var2));
#Plot1(VLineUp,"VLineUp");
end;
if Highs[Var2] < Highs[Var3] then begin
DnWave[1] = TRUE;
LLowest = Lows[Var2];
VLineDn = LLowest + (Var5 * MA(Var6,Var2));
#Plot2(VLineDn,"VLineDn");
end;
end;
if CurrentBar > Var1 then begin
if DnWave[1] and Close > VLineDn then begin
DnWave[1] = FALSE;
UpWave[1] = TRUE;
JustChanged = TRUE;
HHighest = Close;
LLowest = 0;
end;
if UpWave[1] and Close < VLineUp and JustChanged == FALSE then begin
UpWave[1] = FALSE;
DnWave[1] = TRUE;
JustChanged = TRUE;
LLowest = Close;
HHighest = 0;
end;
if JustChanged == FALSE then begin
if Close > HHighest then
HHighest = Close;
else if Close < LLowest then
LLowest = Close;
end;
VLineUp = HHighest - (Var5 * MA(Var6,Var2));
VLineDn = LLowest + (Var5 * MA(Var6,Var2));
if UpWave[1] then T = 1;
else if DnWave[1] then T = -1;
end;
Inputs: TurnLen(9), StdLen(26), PrdLen(52),P(60);
Variables: 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0),mav(0);
전환선 = (Highest(High, TurnLen) + Lowest(Low, TurnLen)) / 2;
기준선 = (Highest(High, StdLen) + Lowest(Low, StdLen)) / 2;
선행스팬1 = (전환선[25] + 기준선[25]) / 2 ;
선행스팬2 = (Highest(High, PrdLen)[25] + Lowest(Low, PrdLen)[25]) / 2;
mav = ma(C,P);
if CrossUp(C,mav[25]) and 선행스팬1 > 선행스팬2 and T == 1 Then
Buy();
if CrossDown(C,mav[25]) and 선행스팬1 < 선행스팬2 and T == -1 Then
Sell();
안녕하세요.
위식에 추가부탁 드려요
시간설정 변수처리 오후 15시~익일02시
당일 수익 100틱 청산 매매중지
2023-08-11
1109
글번호 171408
시스템
답변완료
부탁드립니다
항상 도움을 주셔셔 감사드립니다.
1.if T == 1 and (CrossUp 이라고 할때 1의 고점을 기준봉으로 잡고 조정후 10봉이내에서 재돌파 할때의 추가 수식을 알고 싶습니다.
---------------------------------------------------------------------
2,이러한 시스템식을 운영한다고 과정할때 지표식으로 변환하고자 합니다.
input :N1(1),카운팅시작일자(1), 카운팅시작시간(0);
input : n(1),x(1);
var : Tcond(false),T(0),상승량(0), 하락량(0), 이평선(0), 상승(0), 하락(0),cnt(0);
Array : V1[0](0),V2[0](0);
var : idx(1),hh(2),ll(3),dd(4),tt(1);
var : tl1(1),tl2(2),tl3(3),tl4(4);
if sdate >= 카운팅시작일자 and stime >= 카운팅시작시간 Then
Tcond = true;
if Tcond == true Then
{
if (sdate != sdate[1] and stime >= 카운팅시작시간) or
(sdate == sdate[1] and stime >= 카운팅시작시간 and stime[1] < 카운팅시작시간) Then
{
var1 = 1;
var2 = 1;
상승량 = 1;
하락량 =1;
}
Condition1 = 상승량+V >상승량+V[1];
for cnt = 0 to N1-1{
IF O[cnt] < C[cnt] Then {
IF H[cnt]-C[cnt] >=1 AND
H[cnt]-C[cnt] > Abs(O[cnt]-C[cnt]) AND
H[cnt]-C[cnt] >= O[cnt]-L[cnt]
Then
하락량 = V[cnt];
ELse
상승량 = V[cnt];
}
ELse IF O[cnt] > C[cnt] Then {
IF C[cnt]-L[cnt] >=3AND
C[cnt]-L[cnt] > Abs(O[cnt]-C[cnt]) AND
C[cnt]-L[cnt] >= H[cnt]-O[cnt]
Then
상승량 = V[cnt];
ELse
하락량 = V[cnt];
}
ELse {
IF H[cnt]-C[cnt] < C[cnt]-L[cnt] Then
상승량 = V[cnt];
ELse IF H[cnt]-C[cnt] > C[cnt]-L[cnt] Then
하락량 = V[cnt];
ELse{
하락량 = V[cnt];
상승량 = V[cnt];
}
}
if dayindex >= 0 Then{
if C > O or (C == O and C >= C[1]) Then
value1 =상승량;
Else
value1 = 하락량;
value13=상승량-하락량;
if value13 > value13[1] Then
T = 1;
if value13 < value13[1] Then
T = -1;
var21 = highest(H,n);
var22 = lowest(L,n);
Condition21 = C <= var21[1] and C >= var22[1];
if Condition21 == true and Condition21[1] == false Then
{
idx = 0;
hh = c;
ll = c;
dd = sdate;
tt = stime;
}
if Condition21 == true Then
{
idx = idx+1;
if c > hh Then
hh = c;
if c < ll Then
ll = c;
if idx == x Then
{
tl1 = TL_New(dd,tt,hh,dd,tt,ll);
tl2 = TL_New(dd,tt,hh,sdate,stime,hh);
tl3 = TL_New(dd,tt,ll,sdate,stime,ll);
tl4 = TL_New(sdate,stime,hh,sdate,stime,ll);
}
if idx > x Then
{
TL_SetBegin(tl1,dd,tt,hh);
TL_SetEnd(tl1,dd,tt,ll);
TL_SetBegin(tl2,dd,tt,hh);
TL_SetEnd(tl2,sdate,stime,hh);
TL_SetBegin(tl3,dd,tt,ll);
TL_SetEnd(tl3,sdate,stime,ll);
TL_SetBegin(tl4,sdate,stime,hh);
TL_SetEnd(tl4,sdate,stime,ll);
value21 = HH;
value22 = LL;
}
}
If hh <= C Then
{
TL_SetColor(TL1,WHITE);
TL_SetColor(TL2,WHITE);
TL_SetColor(TL3,WHITE);
TL_SetColor(TL4,WHITE);
}
Else
{
TL_SetColor(TL1,WHITE);
TL_SetColor(TL2,WHITE);
TL_SetColor(TL3,WHITE);
TL_SetColor(TL4,WHITE);
}
TL_SetSize(TL1,0); //좌측세로선 굵기
TL_SetSize(TL2,1); //상단가로선 굵기
TL_SetSize(TL3,1); //하측가로선 굵기
TL_SetSize(TL4,0); //우측세로선 굵기
TL_SetStyle(TL1,3); //좌측세로선 점선
TL_SetStyle(TL4,3); //우측세로선 점선
if Condition1[1]==(-----------------)
buy();
if Condition1[1]==(------------------)
sell();
}}}
------------------------------------------------------------------------
3.지표식으로 부탁드리겠습니다.
input : 기간(1),비율(1);
var : 시작조건(False),시작위치(0),폭(0),bs(0),k(0),비율선(0);
시작조건 = Highest(H, 기간)[1]<H;
if 시작조건 Then
{
시작위치 = H;
bs = 0;
}
Else
{
if 시작위치 > 0 Then
bs = bs+1;
}
폭 = 시작위치*(비율/100);
K = iff(시작조건, 시작위치, 시작위치 + 폭*Bs);
비율선 = iff(K<K[1], K, 0);
---------------------------------------------------------------------------
4, (1 or 2 or 3) =>>> (1,2 or 1,3 or 2,3 ) 으로 부탁드립니다.
if (CrossUp(c,EMA1)or CrossUp(c,Ema2) or CrossUp(C,Ema3)) Then
{
Find(1);
}
만들어 주신거 응용할라고 세벽부터 몇시간째 해도 제자리 걸음 입니다..ㅎㅎ
부탁드립니다.
수고 하세요.
2023-08-11
1356
글번호 171407
지표
답변완료
재문의 드립니다.
input : StartTime(70000),EndTime(54500);
Input : 익절틱수(300),누적수익틱수(40),횟수(1);
var : Tcond(False),N1(0),Xcount(0),누적수익(0),daypl(0);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
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
{
Tcond = true;
N1 = NetProfit;
Xcount = 0;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
누적수익 = PriceScale*누적수익틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 누적수익 or IsExitName("dbp",1) == true then
{
Xcount = Xcount+1;
N1 = NetProfit;
}
}
Input : RSIPeriod(9),RSIsignal(10);
var : RSIV(0),RSIS(0);
RSIV = RSI(RSIPeriod);
RSIS = ma(RSIV,RSIsignal);
Input : CCIPeriod(10),CCISignal(9);
var : CCIv(0),CCIs(0);
CCIv = CCI(CCIPeriod);
CCIs = ma(CCIV,CCISignal);
if Tcond == true and Xcount < 횟수 Then
{
if rsis < 60 and CrossUp(rsiv,rsis) then
Buy();
if MarketPosition == 1 Then
{
if CrossDown(cciv,-100) Then
var1 = l;
if var1 > 0 and c < var1 then
ExitLong();
if rsis > 97 and CrossDown(rsiv,rsis) then
ExitLong();
Exitlong("dbp",atlimit,EntryPrice+((누적수익-daypl)/CurrentContracts));
}
Else
var1 = 0;
if MarketPosition == 1 Then
Buy("b",AtLimit,LatestEntryPrice(0)-PriceScale*30);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
다른건 괜찮고요.이 부분만,
알에스아이 와이선이 시그널선60돌파 매수를 빼고,
알에스아이 시그널선 50하향돌파가 출현되고 시그널선 60상향돌파.매수.
이 수식으로 바꿨으면 합니다.
수고하세요.
2023-08-11
1292
글번호 171406
시스템
답변완료
지표식을 시스템식으로 변환 부탁드립니다.
박스 Box 색이 Lime일때 진입이 금지되는 시스템 식 작성 부탁드립니다.
input : Period(230);
Var:j(0),T(0),tl(0),tx(0) ,box(0);
Var: date11(0),date12(0),time11(0),time12(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0);
Array: HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0);
Plot1(value12,"value12",IFf(t==1,Red,Blue));
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];
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
box = Box_New(date11,time11,Value11,date12,time12,Value12);
Text_SetSize(tx,25);
Text_SetColor(Tx,Red);
Text_SetStyle(tx,1,1);
Text_SetBold(tx,1);
if abs(value12[1]-value11[1]) < 0.7 Then
Text_Delete(tx);
tx = Text_New(sDate,stime,value12,NumToStr(value11-value12,2));
Text_SetColor(Tx,Blue);
Text_SetStyle(tx,1,0);
Text_SetSize(tx,25);
Text_SetBold(tx,1);
}
If LoVal[0] >= L Then
{
LoVal[0] = L;
LoBar[0] = 0;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
date22 = date[0];
time22 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
Text_SetString(tx,NumToStr(value11-value12,2));
Text_SetLocation(tx,sDate,sTime,value12);
}
if value12 > value11-0.7 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,50);
}
else if value12 <= value11-0.7 and value12 > value11-0.95 Then
{
Box_SetColor(box,Lime);
Box_SetFill(box,true,90);
}
else if value12 <= value11-0.95 and value12 > value11-1.3 Then
{
Box_SetColor(box,Lime);
Box_SetFill(box,true,70);
}
else if value12 <= value11-1.3 and value12 > value11-1.6 Then
{
Box_SetColor(box,Cyan);
Box_SetFill(box,true,60);
}
else if value12 <= value11-1.6 and value12 > value11-2 Then
{
Box_SetColor(box,Blue);
Box_SetFill(box,true,25);
}
else
{
Box_SetColor(box,Lime);
Box_SetFill(box,true,35);
}
}
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];
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
box = Box_New(date11,time11,Value11,date12,time12,Value12);
Text_SetSize(tx,25);
Text_SetColor(Tx,Blue);
Text_SetStyle(tx,1,0);
Text_SetBold(tx,1);
if abs(value12[1]-value11[1]) < 0.7 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,25);
Text_SetBold(tx,1);
}
If HiVal[0] <=H Then
{
HiVal[0] = H;
HiBar[0] = 0;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
date32 = date[0];
time32 = stime[0];
Box_SetEnd(box,date12,time12,Value12);
Text_SetString(tx,NumToStr(value12-value11,2));
Text_SetLocation(tx,sDate,sTime,value12);
}
if Value12 > value11+1.1 Then
{
Box_SetColor(box,Pink);
Box_SetFill(box,true,70);
}
else if value12 >= value11+0.8 and value12 <= value11+1.1 Then
{
Box_SetColor(box,Magenta);
Box_SetFill(box,true,40);
}
Else
{
Box_SetColor(box,Orange);
Box_SetFill(box,true,50);
}
}
2023-08-11
1229
글번호 171405
시스템
답변완료
부탁드립니다.
다음 수식을 종목검색하고자 합니다.
종목 검색식으로 부탁드립니다.
A=(월시가+월종가+월고가+월저가)/4;
M=ma(A, 기간1);
MH = valuewhen(1, M > M(1), M);
A1=HighestSince(1, crossup(C, MH), MH);
M1=ma(A, 기간2);
MH1 = valuewhen(1, M1 > M1(1), M1);
A2=HighestSince(1, crossup(C, MH1), MH1);
M2=ma(A, 기간3);
MH2 = valuewhen(1, M2 > M2(1), M2);
A3=HighestSince(1, crossup(C, MH2), MH2);
A1 < A2 <A1*1.03 && (A1 < A3 < A1*1.03 or A3 < A1)
&&
CrossUp(A1,A3) or CrossUp(A1,A2)
기간1 5 기간2 10 기간3 20
2023-08-10
1199
글번호 171402
종목검색