답변완료
3연속봉 박스
1. 지표 연속봉이 3개보다 많아질 때 박스의 끝이, 음봉은 끝까지 연장되는데 양봉은 3개에서 멈춤. 양봉도 끝까지 연장. 2.시스템 음봉 박스가 생성되면 (3음봉) 매수, 다음봉에 매수청산. 양봉 박스 생성되면 매도, 다음봉에 매도청산. 감사합니다. Inputs: N(3), // 연속 봉 개수 기준 BullishColor(Red), // 양봉 선 색상 BearishColor(Blue); // 음봉 선 색상Vars: bullishCount(0),bearishCount(0), FirstDate(0),FirstTime(0),LineTop(0),bullishBox(0), LastDate(0),LastTime(0),lineBottom(0),BearishBox(0);If Close > Open ThenBegin bullishCount = bullishCount + 1; If bullishCount == 1 Then Begin firstDate = sDate; firstTime = sTime; lineBottom = L; End; lastDate = sDate; lastTime = sTime; lineTop= high; // 상단 선: 첫봉 시간 ~ 현재 시간, 가격 = 마지막 봉 고가 if bullishCount >= N Then Begin if bullishCount == N Then Begin bullishBox = Box_New(firstDate, firstTime, lineTop, lastDate, lastTime, lineBottom); box_SetColor(bullishBox, BullishColor); Box_SetFill(bullishBox,true); end; Box_SetEnd(bullishBox,lastDate, lastTime, lineBottom); end;EndElseBegin bullishCount = 0; #Box_Delete(bullishBox);End;If Close < Open ThenBegin BearishCount = BearishCount + 1; If BearishCount == 1 Then Begin firstDate = sDate; firstTime = sTime; lineTop = H; End; lastDate = sDate; lastTime = sTime; lineBottom = Low; // 상단 선: 첫봉 시간 ~ 현재 시간, 가격 = 마지막 봉 고가 if BearishCount >= N Then Begin if BearishCount == N Then Begin BearishBox = Box_New(firstDate, firstTime, lineTop, lastDate, lastTime, lineBottom); box_SetColor(BearishBox, BearishColor); Box_SetFill(BearishBox,true); end; Box_SetEnd(BearishBox,lastDate, lastTime, lineBottom); end;EndElseBegin BearishCount = 0; #Box_Delete(BearishBox);End;
답변완료
문의드립니다
input : length(20);input : mult(2.0);input : lengthKC(20);input : multKC(1.5);input : useTrueRange(true);#1:TrueRange 0:고저폭var : source(0),basis(0),dev(0),upperbb(0),lowerbb(0);var : mav(0),r(0),rangema(0),upperKC(0),lowerKC(0);var : sqzOn(False),sqzOff(False),noSqz(False),val(0),bcolor(0),scolor(0);// Calculate BBsource = close;basis = ma(source, length);dev = multKC * std(source, length);upperBB = basis + dev;lowerBB = basis - dev;// Calculate KCmav = ma(source, lengthKC);r = iff(useTrueRange == 1 , TrueRange , (high - low));rangema = ma(r, lengthKC);upperKC = mav + rangema * multKC;lowerKC = mav - rangema * multKC;sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC);sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC);noSqz = (sqzOn == false) and (sqzOff == false);val = LRL(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),ma(close,lengthKC)), lengthKC);bcolor = iff( val > 0, iff( val > iff(IsNan(val[1]),0,val[1]), lime, green), iff( val < iff(IsNan(val[1]),0,val[1]), red, maroon));scolor = iff(noSqz ,blue ,IFf( sqzOn , black , gray ));if bcolor == lime and scolor == Gray Then Buy("b");if bcolor == green and scolor == black Then ExitLong("bx");수고많으십니다 위 수식은 lime과 Gray 가 만나는 지점에서 매수green와 black이 만나면 청산 입니다만매수 진입은 똑 같이하고매수 청산을 회색과 검정색 상관 없이 maroon 색이 나오면 매수 청산 하는 식을 부탁드립니다 항상 감사드립니다
답변완료
시스템매매 관련 문의합니다..^^*
**아래시스템 매매에서 해당매매종목에 원하는 가격대를 돌파할때 진입이 되는 수식 요청드립니다.... 예를 들어 삼성전자를 11만원 돌파시 진입 매수 일때 11만원 가격을 정해놓으면 매수진입한다는 의미 입니다... 이러한 조건을 변수로 지정해 주시면 감사하겠습니다... ===================================================================================input : 시작일(20250702),갭상승(2),P(20),하락per(1),분할(20);input : starttime(91500),EndTime(151500);Var : value(0),mav(0);var : Tcond(False);input : 최소수익(10),수익감소(3);var : bh(0),sl(0);//매수진입 후 20%이상 수익후 최고가에서 5%이상 하락하면 청산if MarketPosition == 1 Then{ bh = highest(H,BarsSinceEntry); if bh >= EntryPrice*(1+최소수익/100) Then ExitLong("bx",AtStop,bh*(1-수익감소/100));}//매도진입 후 20%이상 수익후 최저가에서 5%이상 상승하면 청산if MarketPosition == -1 Then{ sl = lowest(L,BarsSinceEntry); if sl <= EntryPrice*(1-최소수익/100) Then ExitShort("sx",AtStop,sl*(1+수익감소/100));}if Bdate != Bdate[1] Then tcond = False;if (sdate != sDate[1] and sTime >= starttime) or (sdate == sDate[1] and sTime >= starttime and sTime[1] < starttime) Then Tcond = true;if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False;Var1=rsi(32);mav = ma(c,p);value = 0;if sDate >= 시작일 and DayOpen <= DayClose(1)*(1+갭상승/100) and Tcond == true Then{ # 매수 / 매도청산 If CCI(9) > 0 Then value = 1; If MACD(12,26) > 0 Then value = value+1; If DIPlus(14) > DIMinus(14) Then value = value+1; If StochasticsK(12,5) > StochasticsD(12,5,5) Then value = value+1; # 매수/매도청산 If value >= 3 and mav > mav[1] Then { Buy("b1"); } value = 0; if MarketPosition == 1 and MaxEntries < 분할 OR MarketPosition <= 0 and value >= 3 and mav > mav[1] Then { Buy("b2",AtStop,EntryPrice(0)*(1-(하락per*MaxEntries)/100)); } if rsi(14)<32 Then buy("b3"); if CrossUp(c,DayOpen)Then Buy("v1"); if CrossUp(c,DayOpen)Then Buy("v2"); if CrossUp(c,DayOpen)Then Buy("v3"); if CrossUp(c,DayOpen)Then Buy("v4"); }# 매도/매수청산If CCI(9) < 0 Then value = 1;If MACD(12,26) < 0 Then value = value+1;If DIPlus(14) < DIMinus(14) Then value = value+1;If StochasticsK(12,5) < StochasticsD(12,5,5) Then value = value+1;If value >= 3 Then{ SetStopProfittarget(15, PercentStop);}
답변완료
수식문의드립니다
input : 기간S(10), 시그널S(20), 기간L(30), 시그널L(60),기간(26) ; var : HmaM(0) ,M0(0), M1(0), M2(0), M3(0), M4(0), M5(0) ; Value1 = highest(iff(C>O, Ema(C,기간S), 0), 시그널S) ; #기준선S Value2 = highest(iff(C>O, Ema(C,기간L), 0), 시그널L) ; #기준선L var1 = wma(C, 기간/2); var2 = wma(C, 기간); HmaM = wma(2*var1-Var2,SqRt(기간)); #HMA선if Value2 != Value2 Then{ M0= Value2 ; #Value2의 변동후의 Value2 M1= M0[1] ; #Value2의 1변동전 Value2 M2= M1[1] ; #Value2의 2변동전 Value2 M3= M2[1] ; #Value2의 3변동전 Value2 M4= M3[1] ; #Value2의 4변동전 Value2 M5= M4[1] ; #Value2의 5변동전 Value2 }기준캔들 = Value2는 계단식 변동을 하는데 변동전보다 변동후의 Value2가 낮아야 하고(M1>M0) , Value2를 시가종가로 하향이탈하는 캔들. 하향이탈하는 캔들을 포함하여 Max(C,O)>Value2 가 최근 10봉이내에 최소 2개이상 있어야 한다.종목검색수식1> 기준캔들이 발생된 후 5봉이내에 Value2선을 양봉으로 시가종가로 상향 돌파하는 종목 검색식. 단, 기준캔들 발생시의 Value2와 상향돌파할 때의 Value2는 변동이 없어야 하고, 기준캔들 발생시의 Value2의 하향변동이 3회이상 되어야 한다종목검색수식2> 기준캔들이 발생된 후 최소 15봉이후에 하향추세의 HmaM선을 양봉으로 시가종가로 상향 돌파하는 종목 검색식(1차). 단, 기준캔들 발생시부터 하향추세의 HmaM선을 시가종가로 상향 돌파할때까지 Value2>HmaM선 조건이거나, HmaM선이 Value2선을 하향이탈한 것이 최소 10봉이전에 있어야 한다는 것이다. 그리고 상향돌파후 고가로 Value2선을 돌파하지 못하고 재차 하락하는 경우에는 다시 하향추세의 HmaM선을 양봉으로 시가종가로 상향 돌파할 때에 2차 종목 검색되게 한다. 1차돌파시의 시가보다 2차돌파시의 양봉종가는 낮아야 한다. 검색은 2차까지만 허용된다.
답변완료
수정부탁 드립니다
gpt 수식을구현했는데44 에 숫자나 숫자값이라고 오류가그리고 마지막 돌파된 per 이 깨면 전량 청산인데 per16 됐습니다수정 부탁드릴게요input : per1(30),per2(42),per3(50),per4(62),per5(84),per6(110),per7(155),per8(210), per9(255), per10(310),per11(384),per12(420),per13(500),per14(684),per15(800),per16(1000);var : cnt(0);Array : p[16](0), va[16](0); // 실제 코드에서는 "_" 제거하세요./* --------------------------- ① p 배열 저장--------------------------- */p[1]=per1; p[2]=per2; p[3]=per3; p[4]=per4;p[5]=per5; p[6]=per6; p[7]=per7; p[8]=per8;p[9]=per9; p[10]=per10; p[11]=per11; p[12]=per12;p[13]=per13; p[14]=per14; p[15]=per15; p[16]=per16;/* --------------------------- ② va[] 기준선 계산--------------------------- */for cnt = 1 to 16{ va[cnt] = DayLow * (1 + p[cnt] / 100);}/* --------------------------- ③ per1~per16 상향 돌파 시마다 1계약 매수--------------------------- */for cnt = 1 to 16{ if CrossUp(C, va[cnt]) then { Buy("Long", onclose, def, 1); };}/* --------------------------- ④ 마지막 per16 라인 이탈 시 전체 청산--------------------------- */if marketposition > 0 and CrossDown(C, va[16]) then{ ExitLong("ExitAll", onclose, "Long");};