답변완료
시스템매매 관련 문의합니다..^^*
**아래시스템 매매에서 해당매매종목에 원하는 가격대를 돌파할때 진입이 되는 수식 요청드립니다.... 예를 들어 삼성전자를 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");};