커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

수식 문의 드립니다

안녕하세요 a=eavg (C,20); b=BBandsdown(60,1); crossup(a,b) 15봉안에 골든 발생했고 기준선이 상승하는 종목 검색 부탁합니다
프로필 이미지
수민맘
2023-09-15
784
글번호 172496
종목검색
답변완료

타점이 이상해서 다시 한번 로직 확인 부탁드립니다.

안녕하세요 일전에 키움에서 쓰던 검색기 함수를 예스로직으로 변환해 주셨습니다 우선 감사드립니다 예스 자동매매를 설치하고 바꿔주신 로직으로 검색기를 예스트레이더에 설치하고 자동매매를 시작하였는데 원하던 타점에서 매수가 안되고 한참 위에서 매수가 됩니다 그리고 돌파 후 위에서 다른 종목들이 다시 매수가 됩니다. 저는 검은색 선을 돌파했을때만 검색이 되어서 매수가 되면 좋겠는데 윗부분에서도 매수가 되어서 너무 어렵네요(제 생각에는 RSI조건 때문인것 같기도 하구여^^) 사진을 첨부해서 보내드립니다. 보내주신 로직이 여기에 맞게 부합되는지 다시 한번 검토 부탁드립니다 그리고 분봉,일봉 모두 같은 로직으로 사용하면 된다고 하셨는데 저는 15분봉이 잘 맞아서 15분봉으로 타점을 잡고 있습니다 혹시 이것도 다르게 로직을 짜야 하는건지 궁금합니다 예스스탁의 빠른 대응에 항상 감사하고 고맙습니다 키움 검색식 함수 <변동선 돌파 라인(분봉 적용)> A=PREDAYHIGH() - PREDAYLOW(); DAYOPEN()+A*0.5 <변동선 돌파 라인(일봉 적용)> A=H(1)-L(1); A1=O+A*0.5; VALUEWHEN(1,CROSSUP(C,A1),A1) (변동성 돌파 매수화살표) A=PREDAYHIGH() - PREDAYLOW(); B=DAYOPEN()+A*0.5; B1=RSI(2); CROSSUP(C,B) AND B1>50 일전에 제가 보내드릴때는 매수화살표 수식은 필요 없을것 같아 보내드리지 않았습니다.혹시 필요하신지도 몰라서 보내드립니다 <Triple-RSI 수식> (수식1) RSI(2) (수식2) RSI(21) (수식3) RSI(50) RSI 20과 RSI 50이 50이상에 위치하고 1봉전 RSI 2 가 50이하 0봉전 RSI 2 가 50 이상 돌파 보내주신 예스로직입니다 var : A(0),A1(0); A = DAYHIGH(1) - DAYLOW(1); A1 = DAYOPEN()+A*0.5; if CrossUp(A,A1) Then Find(1); A = DAYHIGH(1) - DAYLOW(1); A1 = DAYOPEN()+A*0.5; if CrossUp(A,A1) Then var1 = A1; if var1 > 0 and CrossUp(C,var1) Then Find(1); var1 = RSI(2); var2 = RSI(21); Var3 = RSI(50); if Var2 > 50 and Var3 > 50 and CrossUp(var1,50) Then Find(1); 검색식으로 쓸려면 Find(1)로 바꿔라고 하셔서 바꿨더니 수식에는 이상이 없다고 나왔습니다 참고로 첨부파일에 있는 검은색 선 수식이 위에 있는 A=PREDAYHIGH() - PREDAYLOW(); DAYOPEN()+A*0.5 15분봉 입니다 환절기 감기조심하시고 다시 한번 감사드립니다
프로필 이미지
쿨한능력자
2023-09-15
1334
글번호 172491
사용자 함수
답변완료

문의드립니다.

키움 화살표 수식입니다. 변환 가능하면, 부탁드립니다. 행복한 하루 보내세요 period - 20 d1 - 2 af - 0.1 maxaf - 1 period1 - 240 multiple - 2 ma1 - 2 ma2 - 240 percent - 100 CrossUp(h,BBandsUp(Period,D1)) and c >= SAR(af,maxAF) and V > avg(V, Period) * Multiple && V > V(1) * Multiple and eavg(c,MA1) >= eavg(c,MA2) and Disparity(Period1) <= Percent and Disparity(300) <= 109 즐거운 하루 되십시오
프로필 이미지
미서니
2023-09-15
755
글번호 172489
종목검색
답변완료

타주기이평

수고하십니다 1분차트에 30분이동평균선을(시간변경가능) 3가지 표시하려합니다 선물개장시간이 바뀌면서 기존쓰던것이 맞지않아서 부탁드립니다 참조종목으로 하는것 말고 수식으로 부탁합니다
프로필 이미지
바닥차기
2023-09-15
597
글번호 172486
지표
답변완료

문의 드립니다

1. 해외선물의 매매시간은 22:00 ~ 익일 05:00 익절 300틱 손절 300틱 망치형 음봉 다음 캔들의 시가에 매수진입후 3번째 캔들에 청산되는 수식어 2. 해외선물의 매매시간은 22:00 ~ 익일 05:00 익절 300틱 손절 300틱 숏바디 음봉 다음 캔들의 시가에 매수진입후 3번째 캔들에 청산되는 수식어 위 2가지 수식어를 부탁 드리고 별도로 첨부 할려는 캔들의 종류를 수식어로 나열 해 주시면 감사하겠습니다.
프로필 이미지
푸른
2023-09-15
920
글번호 172481
시스템
답변완료

종목검색에서 find(1) 명령에서 1을 쓰는 이유가 궁금합니다.

안녕하세요? 아주 사소한 질문을 올립니다. 너무 초보라서 죄송합니다. if crossup(c,mav) and cond[1] == true then find(1); 이런 명령에서 find 뒤에 (1)을 붙이는 이유가 궁금합니다. 종목 검색식을 만드는데 저는 괄호에 0을 넣고 검색을 하니까 원래의 목적했던대로 되지 않아서 한참을 헤맸는데, 알고보니 (1)을 붙이는 거였습니다. ㅠㅠ find 뒤에 (1)붙이는 이유를 알려주세요. 감사합니다.
프로필 이미지
매매신호
2023-09-15
811
글번호 172480
종목검색
답변완료

부탁드립니다

키움에서 쓰던 수식인데 변환 부탁드립니다. 수식1 atrv=((avg(max(max(H-L,abs(C(1)-H)),abs(C(1)-L)),단기,1)/C(1)*100+ avg(max(max(H-L,abs(C(1)-H)),abs(C(1)-L)),장기,1)/C(1)*100)/2)*일정배수 수식2 mm=nPreDayClose(20)+nPreDayClose(19)+nPreDayClose(18)+nPreDayClose(17)+nPreDayClose(16)+nPreDayClose(15)+ nPreDayClose(14)+nPreDayClose(13)+nPreDayClose(12)+nPreDayClose(11)+nPreDayClose(10)+nPreDayClose(9)+ nPreDayClose(8)+nPreDayClose(7)+nPreDayClose(6)+nPreDayClose(5)+nPreDayClose(4)+nPreDayClose(3)+ nPreDayClose(2)+nPreDayClose(1))/20; 수식3 mm+mm*atrv/100 수식4 mm-mm*atrv/100 이고 단기(10) 장기(60) 일정배수(5) 값을 입력하고 수식2가 중단 수식3이 상단 수식4가 하단이며 전일 종가가 하단보다 아래있으며 금일 하단과 골든크로스가 났을때 종가에 매수, 1차매수 값보다 낮을때 종가에 추가매수, 주가가 상단을 골든크로스 했을때 매도
프로필 이미지
왕밥빵
2023-09-15
771
글번호 172479
시스템
답변완료

수식 문의

수식 부탁 드립니다. A1 = BBandsUP(20,2); A2 = BBandsC(20,2); A3 = BBandsDown(20,2); m1 = avg(c, 10); m2 = avg(c, 20); ValueWhen(1,(((L(1)<=A2(1)) or (C(1) <=A2(1)) or (L(2)<=A2(2)) or (C(2) <=A2(2))) && C>A2 && ((C>m1) or (C>m1 && C>m2) && C>O)), L) ~ 언제나 감사드려요..... ^*^
프로필 이미지
위피데이
2023-09-14
1147
글번호 172478
지표
답변완료

진입조건에 거래 후 청산하고 다시 진입조건에 거래하기 문의

항상 도움에 감사드립니다. 이해를 돕기 위해 이미지를 첨부 했습니다. 아래의 수식은 여러 기준선들 중에서 상단이나 하단을 5번 먼저 터치 하면 진입이 시작되고 목표가격에서 청산 후 거래가 종료되는 수식인데요 -------------------------------------- input : ntime(173800), xtime(230000); input : tick_size(8); input : line_num(20); //줄을 몇개 그을 것인지 input : num(8); // 몇번 터치하면 진입하는지. var : Tcond(False), oo(0), k(0), PriceScale_tick_size(0); var : 상단(0),하단(0),n1(0),daypl(0),vol(0),xcond(False); array : up_flag[100](0), dn_flag[100](0); array : b_cnt[100](0), b_text_display[100](0); array : b_b_cnt[100](0), b_b_text_display[100](0); array : b_line[100](0), b_TL_display[100](0); array : b_b_line[100](0), b_b_TL_display[100](0); array : u_cnt[100](0), u_text_display[100](0); array : u_u_cnt[100](0), u_u_text_display[100](0); array : u_line[100](0), u_TL_display[100](0); array : u_u_line[100](0), u_u_TL_display[100](0); if (sdate != sdate[1] and stime >= xtime) or (sdate == sdate[1] and stime >= xtime and stime[1] < xtime) Then Tcond = False; if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { // 변수들 초기화 해주기 Tcond = true; oo = o; For k = 1 to line_num { up_flag[k] = 0; dn_flag[k] = 0; u_cnt[k] = 0; u_u_cnt[k] = 0; b_cnt[k] = 0; b_b_cnt[k] = 0; PriceScale_tick_size = PriceScale*tick_size; u_line[k] = oo + (k-1)*PriceScale_tick_size; u_u_line[k] = oo + k*PriceScale_tick_size; b_line[k] = oo - (k-1)*PriceScale_tick_size; b_b_line[k] = oo - k*PriceScale_tick_size; } // 조건문으로 터치 카운트 하기 For k = 1 to line_num { if H >= u_u_line[k] Then { up_flag[k] = 1; u_u_cnt[k] = u_u_cnt[k] + 1; } if L <= b_b_line[k] Then { dn_flag[k] = -1; b_b_cnt[k] = b_b_cnt[k] + 1; } } } Else { if Tcond == true Then { For k = 1 to line_num { if dn_flag[k] <= 0 and H >= b_line[k] and H[1] < b_line[k] Then { dn_flag[k] = 1; b_cnt[k] = b_cnt[k] + 1; } if dn_flag[k] >= 0 and L <= b_b_line[k] and L[k] > b_b_line[k] Then { dn_flag[k] = -1; b_b_cnt[k] = b_b_cnt[k] + 1; } if up_flag[k] <= 0 and H >= u_u_line[k] and H[1] < u_u_line[k] Then { up_flag[k] = 1; u_u_cnt[k] = u_u_cnt[k] + 1; } if up_flag[k] >= 0 and L <= u_line[k] and L[1] > u_line[k] Then { up_flag[k] = -1; u_cnt[k] = u_cnt[k] + 1; } } } } var : T(0); if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { T = 0; n1 = NetProfit; xcond = False; } if TotalTrades > TotalTrades[1] and (IsExitName("bp3",1) or IsExitName("sp3",1)) Then xcond = true; if Tcond == true and xcond == False Then { if T == 0 Then { For k = 1 to line_num { if u_u_cnt[k] >= num or u_cnt[k] >= num Then { T = k; 상단 = u_u_line[k]; 하단 = u_line[k]; } if b_b_cnt[k] >= num or b_cnt[k] >= num Then { T = k; 상단 = b_line[k]; 하단 = b_b_line[k]; } } } if T != 0 Then { dayPL = (NetProfit-n1)+PositionProfit(0); // n1은 초기의 NetProfit이다. if daypl >= 0 Then vol = 2; Else vol = max(Ceiling(abs(daypl)/((상단-하단)*3)),2); ClearDebug; MessageLog("dayPL : %.2f | NetProfit : %.2f | PositionProfit : %.2f | vol : %.f", daypl, NetProfit, PositionProfit, vol); MessageLog("상단 : %.2f | 하단 : %.2f | 위청산 : %.2f | 아래청산 : %.2f", 상단, 하단, 상단+(상단-하단)*6, 하단-(상단-하단)*6); MessageLog("상단 - 하단 : %.2f, T : %.f", 상단-하단, T); if MarketPosition <= 0 and CrossUp(C,상단) Then Buy("b1",AtMarket,Def,vol); if MarketPosition >= 0 and CrossDown(C,하단) Then Sell("s1",AtMarket,Def,vol); if MarketPosition == 1 Then { ExitLong("Bp1",AtLimit,상단+(상단-하단)*3,"",Floor(CurrentContracts*0.5),1); // 3배수 위치에서 물량 일부 청산하기, 1은 전체에서 한번 청산, 0은 각 진입 횟수 만큼 청산 ExitLong("Bp2",AtLimit,상단+(상단-하단)*7,"",Floor(CurrentContracts*0.5),1); ExitLong("Bp3",AtLimit,상단+(상단-하단)*10); } if MarketPosition == -1 Then { ExitShort("sp1",AtLimit,하단-(상단-하단)*3,"",Floor(CurrentContracts*0.5),1); ExitShort("sp2",AtLimit,하단-(상단-하단)*7,"",Floor(CurrentContracts*0.5),1); ExitShort("sp3",AtLimit,하단-(상단-하단)*10); } MessageLog("daypl %.2f", daypl); } } -------------------------------------------------------------- 위의 수식을 아래와 같이 수정, 보완하고 싶습니다 1. 목표가에서 청산후 거래 종료 시점부터 2. 다시 터치 횟수를 처음부터 시작해 5번 터치하면 3. 처음 진입 조건과 같이 진입하고 목표가에서 청산하고 4. 또 목표가에서 청산하고 나면 5. 청산 시점부터 다시 터치 횟수를 시작해 6. 5번 터치 한곳에서 진입을 시작하는 수식입니다 도움 부탁드립니다
프로필 이미지
예스쟁이
2023-09-14
1655
글번호 172477
시스템
답변완료

문의드립니다.

수고많습니다. 수식공부차 문의드립니다. if MarketPosition <= 0 and L < Var5-PriceScale*50 Then Buy("매수1",AtLimit,Var5-PriceScale*50); L < Var5-PriceScale*50 대신에 C > Var5-PriceScale*50 변경하면 어떤 차이가 있는지 설명 부탁드리겠습니다. (이렇게 변경하면 수익률이 더 좋게 나와서 문의드립니다) (왜 L < 을 쓰는지 이해가 안되서 그렇습니다. 저가보다 기준값이 낮을때 매수라는건데 봉의 저가인 L 보다 Var5-PriceScale*50 이 낮을 수 있는건지 모르겠습니다) 또 이때 AtLimit 대신에 비슷하다고 생각한 AtStop 으로 바꾸면 결과값이 많이 달라지는데 당연한 것인지도 궁금합니다. 참고로 기준선에서 많이 빠지면 매수하고, 많이 오르면 매도하는 시스템입니다.
프로필 이미지
카르마다
2023-09-14
867
글번호 172475
시스템