커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

전에 문의했던 사항인데 잘 안되어 다시 부탁드리겠습니다. (매수진입 및 매도 진입)

해당 수식으로 손절을 적용하고 있는데요... ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1); 매수 진입한 봉한개에서 에서 하락 틱수가 "즉시손절1"틱수를 넘어서더라도 손절처리가 안되요... 매수한 다음봉부터 인지를 한다고 들었습니다. 그러면 진입하자마자 해당봉에서 손실을 제한하는 수식을 알려주시면 감사하겠습니다. 수식은 다음과 같습니다. 변수중 "즉시손절1" 값에 도달시 청산하는 수식 부탁드려요~~ 그봉에 # 매수 진입 조건 변수 Input : RSIPeriod(7),RSI매수값(28),SimPeriod(14),심리도값(36); # RSI와 심리도 기간 및 값 변수 Input : N1(1),초기화(3); # 위 해당 조건 발생후 진입 유효 기간, 7일경과후 초기화 Input : 하락틱수(2); # 해당 조건 발생후 하락틱수만큼 하락후 진입 변수 Input : RSIPeriod1(6),A(0),B(4),D(48),E(72); # 일봉기준 RSI값이 해당변수안에 속해있을때 진입 변수 Input : 거래량1(600),거래량평균봉수(55),거래량평균봉수비율(3.6); # 해당 거래량1,2 사이에 속해 있을때 진입되는 변수 18000 # 1일 1회 거래 # 청산 조건 변수 Input : CCI기간(20),CCI값(500); # CCI값에 의해 청산 수식 변수 Input : 즉시익절1(70),즉시손절1(90); # 익절값 손절값 변수 Input : N2(0.6),N3(0.15); # 상승후 본절청산 관련 수식 Input : tr수익(70),tr하락(25); # 트레일링 관련 수식 Input : N4(0.7),본전생각틱(10); # 하락후 본절청산 관련 수식 Input : N5(0.8),CCI값1(120); # 약 손절 관련 수식 Input : 터치익절(105); var : cnt(0),SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIVv(0); Array : C1[100](0); var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0); CCIv = CCI(CCI기간); RSIV = RSI(RSIPeriod); Simri = Simrido(SimPeriod); var4 = ma(V,20); if Bdate != Bdate[1] Then { for cnt = 1 to 99 { C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; } C1[0] = C; If idx == RSIPeriod1+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSIPeriod1 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSIPeriod1; DownAvg = DownSum / RSIPeriod1; } If idx > RSIPeriod1+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSIPeriod1 - 1) + UpAmt) / RSIPeriod1; DownAvg = (preDownAvg * (RSIPeriod1 - 1) + DownAmt) / RSIPeriod1; } If UpAvg + DownAvg <> 0 Then RSIvv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIvv = 0; if bdate != bdate[1] Then { Entry = 0; Condition2 = true; } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if TotalTrades > TotalTrades[1] and (IsExitName("즉시손절1",1) == true or IsExitName("본전청산1",1)) then Condition2 = false; Condition1 = RSIv < RSI매수값 and Simri < 심리도값 and ((RSIVV > A and RSIVV < B) or (RSIVV > D and RSIVV < E)) ; if bdate != bdate[1] Then { DD = DD+1; if var2 > 0 and DD == var2+초기화 Then BuySetup = false; } if BuySetup == false and Condition1 == true and Condition1[1] == false Then { var1 = C; var2 = DD; BuySetup = true; } if Condition2 == true and MarketPosition == 0 and C < O and C[1] < O and BuySetup == true and entry == 0 and v < ma(v,거래량평균봉수)*거래량평균봉수비율 and v > 거래량1 Then # and C < O buy("매수",AtLimit,var1-PriceScale*하락틱수); if MarketPosition == 1 then { BuySetup = false; SetStopProfittarget(PriceScale*터치익절,PointStop); if countif(CrossDown(CCIv,CCI값),BarsSinceEntry) >= 1 and CCIv < CCI값 and C < O Then ExitLong("매수cci청산",OnClose); if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*즉시익절1 and C < O Then ExitLong("즉시익절1",OnClose); if highest(H,BarsSinceEntry) >= (EntryPrice+PriceScale*즉시익절1*N2) Then ExitLong("본전청산1",AtStop,EntryPrice+PriceScale*즉시익절1*N3); Else { ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1); } if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*tr수익 Then ExitLong("tr",AtStop, highest(H,BarsSinceEntry)-PriceScale*tr하락); if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*즉시손절1*N4 and C < O Then ExitLong("저점에서 올라와서 본전 청산",atlimit,EntryPrice+PriceScale*본전생각틱); if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*즉시손절1 *N5 and CCIv >= CCI값1 and C < O Then ExitLong("저점에서 올라와서 약손절",OnClose); } ===================================================================================== 매도 진입 및 청산 수식 # 매도 진입 조건 변수 Input : RSIPeriod(7),RSI매수값(65),SimPeriod(7),심리도값(45); Input : N1(1),초기화(2); Input : 하락틱수(5); Input : RSIPeriod1(6),A(14),B(40),D(88),E(100); Input : 거래량1(100),거래량평균봉수(60),거래량평균봉수비율(4); # Input : 거래량1(100),거래량2(22000); # 청산 조건 변수 Input : 즉시익절1(70),즉시손절1(70); Input : N2(0.25),N3(-0.75); Input : tr수익(75),tr하락(55); Input : N4(0.45),본전생각틱(55); Input : 터치익절(115); var : cnt(0),SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIVv(0); Array : C1[100](0); var : CCIv(0),RSIv(0),Simri(0),SellSetup(false),DD(0),entry(0); RSIV = RSI(RSIPeriod); Simri = Simrido(SimPeriod); if Bdate != Bdate[1] Then { for cnt = 1 to 99 { C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; } C1[0] = C; If idx == RSIPeriod1+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSIPeriod1 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSIPeriod1; DownAvg = DownSum / RSIPeriod1; } If idx > RSIPeriod1+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSIPeriod1 - 1) + UpAmt) / RSIPeriod1; DownAvg = (preDownAvg * (RSIPeriod1 - 1) + DownAmt) / RSIPeriod1; } If UpAvg + DownAvg <> 0 Then RSIvv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIvv = 0; if bdate != bdate[1] Then { Entry = 0; Condition2 = true; } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if TotalTrades > TotalTrades[1] and (IsExitName("즉시손절1",1) == true or IsExitName("본전청산1",1)) then Condition2 = false; Condition1 = RSIv > RSI매수값 and Simri > 심리도값 and ((RSIVV > A and RSIVV < B) or (RSIVV > D and RSIVV < E)) ; if bdate != bdate[1] Then { DD = DD+1; if var2 > 0 and DD == var2+초기화 Then SellSetup = false; } if SellSetup == false and Condition1 == true and Condition1[1] == false Then { var1 = C; var2 = DD; SellSetup = true; } if Condition2 == true and MarketPosition == 0 and SellSetup == true and C > O and entry == 0 and v > 거래량1 and v < ma(v,거래량평균봉수)*거래량평균봉수비율 Then sell("매도",AtStop,var1+PriceScale*하락틱수); if MarketPosition == -1 then { SellSetup = false; SetStopProfittarget(PriceScale*터치익절,PointStop); if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*즉시익절1 and C > O Then ExitShort("s즉시익절1",OnClose); if Lowest(L,BarsSinceEntry) <= (EntryPrice-PriceScale*즉시익절1*N2) Then ExitShort("s본전청산1",AtStop,EntryPrice-PriceScale*즉시익절1*N3); Else ExitShort("s즉시손절1",AtStop,EntryPrice+PriceScale*즉시손절1); if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*tr수익 Then ExitShort("str",AtStop, Lowest(L,BarsSinceEntry)+PriceScale*tr하락); if Highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*즉시손절1*N4 and C > O Then ExitShort("s고점에서 내려와서 본전 청산",atlimit,EntryPrice-PriceScale*본전생각틱); }
프로필 이미지
이형지
2020-04-21
611
글번호 138195
시스템
답변완료

이평선 돌파

종목들이 제대로 나오지 않는 것 같습니다.ㅜ 검색이 안되는 종목들이 더 많은거 같습니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 이평선 돌파 > 안녕하세요 예스스탁입니다. input : P1(5),P2(10),P3(20); var1 = ma(C,P1); var2 = ma(C,P2); var3 = ma(C,P3); if crossup(c,var1) and crossup(c,var2) and crossup(c,var3) Then find(1); 즐거운 하루되세요 > 쓰임과이롬 님이 쓴 글입니다. > 제목 : 이평선 돌파 > 항상 감사합니다 당일....5분봉 차트에서 5,10,20 이평선을 동시에 모두 돌파한 봉을 찾는 검색을 하고 싶습니다.
프로필 이미지
쓰임과이롬
2020-04-21
612
글번호 138194
종목검색
답변완료

67126 지표 조건추가

67126 글에서 문의한 지표수식을 훌륭하게 만들어주셔서 감사합니다. 수식이 정상적으로 잘 작동하는것을 확인하였습니다. input : N(10); var : hh(0),ll(0),x(0),y(0),hv(0),hp(0); hh = highest(H,N); ll = lowest(L,N); hv = 0; hp = 0; for x = ll to hh step PriceScale { var3 = 0; for y = 0 to N-1 { if h[y] >= x and X >= l[y] Then var3 = var3+v[y]; } if LastBarOnChart == 1 Then MessageLog("%.2f %.f",x,var3); if var3 >= hv Then { hv = var3; hp = x; } } plot1(hp); 현재 수식의 경우, N개의 '모든'봉을 유효한 봉으로 보고, 모든 봉들의 거래량을 참고로 지표 계산을 하는데 N개의 봉들중, 거래량 상위 mm%의 봉들만 유효한 봉으로 간주하고 계산하도록 하려면 어떻게 하여야 할까요?
프로필 이미지
노인
2020-04-21
636
글번호 138193
지표
답변완료

외부 프로그램 연동

안녕하세요.. 수식을 작성할 때, 외부 프로그램을 연동하여 실행된 결과를 참조하여 매수 매도가 가능하게 할수 있을지요. 이때, 단순 매수/매도 신호만 연동할수도 있고.. 혹은, 매수/매도 신호뿐 아니라, 매 봉에서 계산한 값을 연동하는 방법 등도 가능할지요...
프로필 이미지
hi114
2020-04-21
601
글번호 138191
시스템
답변완료

시스템 수식전환

다음 수식을 시스템 수식전환 부탁드립니다. 매수 a=(MACD(12,26)-eavg(MACD(12,26),9)); aa=a(1)<a; bb=eavg(C(1),3)<eavg(C,3); 조건=aa && bb; 매도 a=(MACD(12,26)-eavg(MACD(12,26),9)); aa=a(1)>a; bb=eavg(C(1),3)>eavg(C,3); 조건=aa && bb;
프로필 이미지
이대표
2020-04-21
598
글번호 138190
시스템
답변완료

수식 문의

안녕하세요 거듭 질문드려 죄송합니다 참조 데이타는 1분봉이고 다른 종목입니다 특정시간의 봉조건을 만족하고 이후 다른 조건 만족하면 매수하려고 하는데, 전혀 매매가 되지 않네요 조언 좀 부탁드립니다 감사합니다 var: value(0,data2), nn(0); if stime>=시간1 and stime[1]<시간1 Then value = data2(highD(0)); if stime>=시간1 and stime[1]<시간1 and data2((closeD(0)-openD(0))/(highD(0)-lowD(0))>0.5) then nn=1; Else nn=0; if stime>시간1 and MarketPosition == 0 and nn==1 and data2(C>value) and 조건2 then buy("b");
프로필 이미지
doilzul
2020-04-21
603
글번호 138189
사용자 함수
답변완료

매수가 안 되는 문제

아래와 같이 장후반에 매수하고, 그 다음날 장 시작 부근에 매도하는 수식입니다. (주식 매매) 전략실행차트[6101]을 이용하여 시스템식을 실행하고, 자동주문을 설정합니다. 1분봉 차트를 사용하고, 매수 함수가 호출되어서 실제 로그가 출력되는는데 매수는 되지 않습니다. 거래내역에도 나오지 않습니다. 시스템 모니터에서 보면 매수신호가 발생하였는데 실제 주문은 들어가지 않았습니다. 왜 그런지 이유를 모르겠습니다. Input: buyTime(1515), startTime(901); Variables: accountNum(""), deposit(0), buyCount(0), sellCount(0), stockCode(""), profit(0); # 포지션이 있으면 청산 if (stime == startTime*100) and (sdate >= EntryDate(0) + 1) then { accountNum = GetAccount(0); stockCode = GetPositionSymbol(0, accountNum); sellCount = GetPositionQuantity(stockCode, accountNum); profit = GetPositionOpenPL(stockCode,accountNum); MessageLog("Sell: %.f, count: %.f, entrydate: %.f, entry price: %.f, profit: %.f", close, sellCount, EntryDate(0), EntryPrice(0), profit); if (sellCount > 0) Then { MessageLog("Real Sell: %.f, count: %.f", close, sellCount); ExitLong("Sell", OnClose, DEF, "Buy", sellCount, 1); } } # 장마감 시간에 매수 if (stime == buyTime * 100) and (MarketPosition == 0) then { accountNum = GetAccount(0); buyCount = floor(GetUnclearedDeposits(accountNum)/C); MessageLog("Buy: %.f, count: %.f", close, buyCount); if (buyCount > 0) Then { MessageLog("Real Buy: %.f, count: %.f", close, buyCount); Buy("Buy", OnClose, DEF, buyCount); } }
프로필 이미지
찰리03
2020-04-21
631
글번호 138188
시스템
답변완료

수식 부탁 드립니다

키움차트입니다 예스로 전환 부탁 드립니다 수식1 HighestSince(1, CrossUp(Trix(TR1),0), avg(C,EA1) ) 수식2 LowestSince(1, CrossDown(Trix(TR1),0), avg(C,EA1) ) 지표설정조건 TR 1 10 EA 1 10
프로필 이미지
아이아띠
2020-04-21
626
글번호 138184
지표
답변완료

문의드립니다.

average = input (title="MA Type", type=input.string, defval="EMA",options=["EMA","SMA"]) len = input(130, minval=1, title="Length") src = input(close, title="Source") out = if average == "EMA" ema(src,len) else sma(src,len) slp = change(out)/out plot (slp, color=color.white) plot (0) EMA를 적용하는 수식으로 변환 문의드립니다. 감사합니다.
프로필 이미지
물고기
2020-04-21
695
글번호 138183
지표
답변완료

이평선 돌파

항상 감사합니다 당일....5분봉 차트에서 5,10,20 이평선을 동시에 모두 돌파한 봉을 찾는 검색을 하고 싶습니다.
프로필 이미지
쓰임과이롬
2020-04-21
779
글번호 138182
검색