커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

거래횟수.청산수익.연장횟수.

답변 수식을 buy전용수식과 sell전용수식으로 나누어 주셨으면 합니다. 리버스 거래라 구분하기 어려워 한 번 더 요청드립니다. buy전용) input : Period(14); var : HighVal(0); HighVal = highest(H,Period)[1]; if CrossUp(C, HighVal) then buy(); sell 전용) input : Period(14); var : LowVal(0); LowVal = lowest(L,Period)[1]; if CrossDown(C,LowVal) then sell(); ******************************************************************************** 안녕하세요 예스스탁입니다. input: 거래횟수(2),청산수익(2.00),연장횟수(2); input : Period(14); var : HighVal(0), LowVal(0); var : T1(0),entry(0),DayEntry(0); if bdate != Bdate[1] Then { T1 = TotalTrades; DayEntry = 거래횟수; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; HighVal = highest(H,Period)[1]; LowVal = lowest(L,Period)[1]; if CrossUp(C, HighVal) then { if entry < DayEntry Then buy("b"); if MarketPosition == -1 and entry == 거래횟수 Then { if C <= EntryPrice-청산수익 Then { buy("sb"); DayEntry = 거래횟수+연장횟수; } Else ExitShort("sx"); } } if CrossDown(C,LowVal) then { if entry < DayEntry Then sell("s"); if MarketPosition == 1 and entry == 거래횟수 then { if C >= EntryPrice+청산수익 Then { sell("bs"); DayEntry = 거래횟수+연장횟수; } Else ExitLong("bx"); } } if TotalTrades > TotalTrades[1] and MarketPosition == 0 and entry == 거래횟수 and PositionProfit(1) >= 청산수익 Then DayEntry = 거래횟수+연장횟수; 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 68067 질문이 2개 > 68067 질문이 2개인데 첫번째만 답변주셨어요 거래횟수 n회 세팅 마지막 거래인 n회차 수익이 n포인트 이상일 경우 거래횟수 n회 연장 input: 거래횟수(2),청산수익(2.00),연장횟수(2) 세팅하면 마지막 거래인 두번째 거래 수익이 2포인트 이상이면 2회 더 거래 max 4회 거래하는 것임. 예제 수식에 반영해주십시요. 예제수식) input : Period(14); var : HighVal(0), LowVal(0); HighVal = highest(H,Period)[1]; LowVal = lowest(L,Period)[1]; if CrossUp(C, HighVal) then buy(); if CrossDown(C,LowVal) then sell();
프로필 이미지
좌오비우오비
2020-07-19
2083
글번호 140108
시스템
답변완료

조건 수식 문의 드립니다.

많은 도움 감사드립니다. 코스피200선물. A시스텀 로직으로 누적수익(전1일,전2일)이 5포인트 이상이면, B시스텀 로직으로 매매가 적용되도록 하고, 또다시 B시스텀 로직으로 누적수익이 5포인트 이상이면, A시스텀 로직으로 자동 변환 될 수 있도록 하는 시스텀 조건 변경이 가능할 수 있을카요? 수고하세요.^^
프로필 이미지
solty
2020-06-24
1951
글번호 140107
시스템
답변완료

시스템 문의합니다

1번질문 1번식은 매수 버전 2번식은 매도 버전인데요 1-2번을 합쳤을때 1번의 모든 변수(28개)와 2번의 모든변수(22개)를 각각 따로 변수값을 지정할수있게 합칠수있나요? 총 50개값으로 지정할수있게 가능한가요? 매수일때 조건하고 매도 조건을 각각 따로따로 지정하고 싶어서 그런건데 가능하며 부탁드립니다 2번질문 혹시 손실이 마니나는 시스템을 buy랑 sell 만 바꾼다고해서 그손실이 수익으로 바뀌는개념은 불가능한 부분이겠죠? -----------------------------------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*하락틱수); ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1); } if MarketPosition == 1 then { BuySetup = false; 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); 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); } SetStopLoss(PriceScale*즉시손절1,PointStop); SetStopProfittarget(PriceScale*터치익절,PointStop); -----------2번---- # 매도 진입 조건 변수 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); 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*본전생각틱); } SetStopLoss(PriceScale*즉시손절1,PointStop); SetStopProfittarget(PriceScale*터치익절,PointStop);
프로필 이미지
가날
2020-06-24
1835
글번호 140106
시스템
답변완료

지표문의요

하한선=BBandsdown(20,2); Bd=valuewhen(1,crossup(c,하한선),L); crossup(c,Bd); 변경부탁드립니다 더운데 수고많습니다 감사합니다
프로필 이미지
장군777
2020-06-24
1754
글번호 140105
지표

아무다 님에 의해서 삭제되었습니다.

프로필 이미지
아무다
2020-06-24
3
글번호 140104
강조
답변완료

매수조건관련 문의(Atmarket)

#일봉 input : K1(0.8); If MarketPosition == 0 and dayhigh > dayopen+(dayhigh(1)-daylow(1))*K1 Then buy("b",atmarket); if MarketPosition == 1 Then { if NextBarSdate > sdate Then exitlong("bx2",AtMarket); } 이런식으로 전략을 만들었습니다.(일봉) 그런데 buy(atmarket)으로 하게 되면 조건이 완성되고 다음봉 시가로 진입을 하기 때문에 익일 시초가로 매수가 됩니다. 제가 원했던 조건은 위의 조건이 만족되면 당일(조건완성시점에 즉시)에 매수하는 방식입니다. 도움 부탁드립니다. 늘 감사드립니다.
프로필 이미지
와이시스
2020-06-23
1746
글번호 140103
시스템
답변완료

종목검색식 부탁합니다

williams,R(14),energy(100) 1.종목검색식-energy1>energy2 이고 williams,R 이 -50 or -20선을 상향돌파하는종목검색식 2.시스템식- 위 종목검색식을 만족하면 매수 수고하세요~~
프로필 이미지
상큼한아침
2020-06-23
1776
글번호 140102
종목검색
답변완료

68062 추가질문입니다.

68062 추가질문입니다. 1. 작성해주신 고,저가는 발생된 시점으로부터 갱신이 되는게 아니라 고,저를 수평선으로 표현됨니다.(사진2) 요청드린 부분은 그림2처럼 갱신된 부분을 요청한건데요.(그림1) 수식 수정 부탁드립니다. 2. plot가 많을 경우 그림3처럼 영업일이 변경될때 선들이 겹쳐 보이는데요 지표속성에서 종류->선, 형태는 3번째 점선 입니다. 저가 알고 있는 방법은 지표속성에서 종류->점그래프로 하면 이현상은 나타나지 않지만 굵기를 작게하면 잘 안보이고 두껍게 하면 캔들과 겹칩니다. 이부분을 해결 할려고 TL로 수정할려고 하는건데요 지표속성에서 종류->선, 형태는 3번째 점선을 하면서 영업일사이에 나타나는 현상을 안보이게 하는 방법이 있을까요?
프로필 이미지
상중하
2020-06-23
1987
글번호 140101
지표
답변완료

수식에 오류가 있어 재문의 드립니다.

안녕하세요. 오늘 만들어 주신 수식에 오류가 있어서 좀 더 자세한 설명 첨부하여 부탁드립니다. ** 질의 내용 ** 분봉에서 전일 종가 대비 시가가(dayopen 봉만 사용) 5% 이상 갭상승했고 음봉임(오늘 시가봉은 음봉) 그렇다면 시가봉(음봉)의 고가를 돌파하는 봉에서 매수하는 수식을 만들고 싶습니다. 아래가 만들어주신 수식입니다. 2 if bdate != bdate[1] then { Condition1 = false; if C < O and O >= C[1]*1.05 Then { Condition1 = true; var1 = H; } } if Condition1 == true and C > var1 Then { Condition1 = false; buy(); 그런데 이 수식은 오늘 시가봉이 음봉일 때 고가를 넘어가서 신호도 나오지만, 첨부한 그림처럼 음봉 다음에서도 신호가 많은 종목에서 나오는 오류가 있는데, 아마도 시가봉 음봉이 고정이 안되고, 전일 봉들의 고가를 넘어도 신호가 나오는가 아닌가 생각되는데, 살펴보시고 수정 부탁드립니다. 감사합니다.
프로필 이미지
matilda
2020-06-23
1900
글번호 140100
시스템
답변완료

검색식 수정 부탁드립니다.

이제 막 수식입문한 생초보입니다. 20분봉에서 간단한 검색식을 만들었는데, 프로그램에서 20분 설정하고 검색해도 검색이 되지를 않는데 어디가 잘못 되었는지 수정부탁드립니다. 더불어 현재봉의 거래량(20분봉임)이 전일 하루 동안의 총거래량의 100%를 넘어야 된다는 조건도 넣어주시면 감사하겠습니다. var : UPline(0),DNline(0); UPline = EnvelopeUp(120, 3); Dnline = EnvelopeDown(120, 3); if ma(c,8) > ma(c,120) && ma(c,20) > ma(c,120) && ma(c,60) > ma(c,120) && ma(c,240)<UPline && ma(c,240)>Dnline && ma(c,120)>ma(c,120)[1] && ma(c,120)[1]>ma(c,120)[2] && ma(c,120)[2]>ma(c,120)[3] && ma(c,120)[3]>ma(c,120)[4] Then find(1);
프로필 이미지
matilda
2020-06-23
1761
글번호 140097
종목검색