커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
4325
글번호 230811
지표
답변완료

문의요~

if SwingLow(1,H,Left,right,Left+Right+1) != -1 Then{ value1 = H[right]; value2 = tic60[right]; } 1. 위 식으로 스윙하이값을 value1 이라는 값으로 구했는데요 이 value1의 봉이 현재봉대비 10봉이내일때를 식으로 표현하기 원합니다. 즐건 명절 되십시오~ 감사합니다. 2. atlimit식을 이용해서 아래식을 만들었습니다. 2계약을 가지고 운영되는 시스템이구요. 문제가 조건만족시에 바로 진입이 되었을때에 현재진입말고 이전첫번째진입대비 40틱이 뜬자리가 현재두번째진입봉과 가까이 있을때에 진입되자마자 현재봉에서 바로 청산되는 문제가 있습니다. atlimit으로 실시간 진입했을때 현재봉에서 atlimit청산식이 바로적용 안되도록 설정하고 싶습니다. if MarketPosition == 1 and CurrentContracts == 1 and latestEntryPrice<var20 Then buy("H주도주매수2",AtLimit,var20,1); if MarketPosition == 1 Then exitlong("H롱000익절2",AtLimit,EntryPrice+PriceScale*40); 3. 마찬가지 문제인데요 진입후에 30틱이상 내려가고나서 본전오면 청산되는 식인데 2계약을 가지고 운영했을때에 두번째진입인 현재진입말고 이전첫번째진입자리에서 30틱이상 내려가고나서 새로운 진입이 되었을때에 바로 청산되는 문제가 있습니다. 이전진입봉 말고 최근진입봉을 기준으로 30틱이상 내려가고나서 올라올때 본전에서 청산되는 식 부탁드립니다.~ if Lowest(L,BarsSinceEntry) <= latestEntryPrice-PriceScale*30 Then ExitShort("ST",AtStop,EntryPrice-PriceScale*1); 4. 청산식으로 아래식을 적용했습니다. 진입도 atlimit을 적용했는데 40틱,45틱청산은 되는데 43틱 청산이 신호가 차트상에 안뜨는 자리가 한군데 있네요.~ 어떤 문제인지 모르겠습니다. 아래식에서 더 넣어줘야 되는 부분이 있는지 좀 봐주세요~ if MarketPosition == 1 Then exitlong("H롱단타익절",Atlimit,EntryPrice+PriceScale*40,def,1); 5. 배열변수부분이 어렵네요. 현재봉부터 150봉전까지 1봉전단위로 20일선이 60일선+3틱보다 크거나같다를 식으로 부탁드립니다. 그리고 마찬가지 조건으로 5봉전단위로도 부탁드립니다. 감사합니다!
프로필 이미지
겐지
2017-10-10
102
글번호 113238
시스템
답변완료

아래식에서

아래식에서 당일수익이 100틱이상이면 당일거래중지식 부탁드립니다 Input : shortPeriod(30),longPeriod(500); Input : 당일손실틱수(100); var : HH(0),LL(0); var : cnt(0),count(0); Var : N1(0),dayPl(0),당일손실(0),Xcond(false); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); 당일손실 = PriceScale*당일손실틱수; if Bdate != Bdate[1] Then{ Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then Xcond = true; count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } if count < 30 and Xcond == false Then { if stime >= 100000 and stime < 160000 Then { If CrossUP(value1, value2) Then { buy(); } If CrossDown(value1, value2) Then { sell(); } } } if MarketPosition == 1 then{ ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); } SetStopLoss(PriceScale*400,PointStop); SetStopProfittarget(PriceScale*50,PointStop);
프로필 이미지
수원
2017-10-03
102
글번호 113237
시스템
답변완료

수식 부탁드립니다.

즐거운 한가위 되셨는지요 수식관리자에서 매수 신호 매도 신호 만들고싶은데 제 기준은 차트를 어느때든 보고있는 시간으로 1분봉차트 기준으로 1. 240분봉 양봉, 음봉 2. 30분봉의 5일선 상승, 하락 3. 1분봉의 480분선 상승, 하락 위 조건에서 모두 양봉,상승,상승 이거나 음봉,하락,하락 일때 매수 매도 신호가 나올수있도록 수식을 만들고 싶은데요 차트는 1개일때 한꺼번에 3개의 모든 조건이 들어가야해요 제가 직접만들어보고 싶었지만 일봉은 시가 저가 고가 이런것들은 설명이 있는데 분봉은 제가 원하는 1분봉 차트의 240분봉, 30분봉에 대한 조건을 찾는방법을 몰라해서 너무 어렵고 알려주실분도 없어서 이곳에 질문남깁니다 꼭 부탁드립니다
프로필 이미지
일류타짜
2017-10-03
109
글번호 113236
시스템
답변완료

부탁드립니다

매수신호 전고점 대비20틱(변경가능)이상 눌린후 종가로 5틱(변경가능) 상승시 매수신호발생 매도신호 전저점 대비20틱(변경가능)이상 눌린후 종가로 5틱(변경가능) 하락시 매도신호발생 부탁드립니다
프로필 이미지
마르뚝
2017-10-02
116
글번호 113235
시스템
답변완료

지표 표현 부탁드립니다.

부탁드립니다! 체결잔량 수식입니다. input : P(20),i(40); var1 = bids-asks; var2 = ma(var1,P); var3 = ma(var1,i); plot1(var1); plot2(var2); plot3(var3); 위 P(20) 선이 상방향은 빨간색 하방향은 파란색으로 표기하고 싶습니다. 부탁드립니다. 긴 연휴 즐거운 시간 되시길 바랍니다.
프로필 이미지
포보스
2017-10-02
114
글번호 113234
지표
답변완료

부탁드립니다

즐거운 추석되십시요^^ 1. 주가가 5이평선을 상승 돌파한후에 macd g/c 발생시 매수 반대의경우는 매도 2. 어떤추세 돌파후 macd g/c 발생시 매수 & 매도식 부탁드립니다. 3. 3봉전 시가가 5이평선을 상승 돌파시 매수 반대의 경우는 매도식 부탁드립니다.
프로필 이미지
시월
2017-10-02
105
글번호 113233
시스템

흑형 님에 의해서 삭제되었습니다.

프로필 이미지
흑형
2017-10-01
81
글번호 113232
시스템
답변완료

이것 저것 문의드립니다.

수식왕 예스스탁님 매번 감사합니다. 추석 때 공부하다보니 질문이 좀 많네요. 고생하십니다. 감사합니다. 1. 답변해주신 내용 해석을 좀 하고 있는데요. 궁금한 점이 있어서 질문드립니다. ⓐ는 어제 날짜와 다르다는 것을 명시해주는 게 이해가 되는데요. ⓑ에 '어제날짜와 같고 시작시간이 P1보다 크거나 같고, 한개봉전 시작시간이 p1보다 작고'라는 조건은 왜 들어 갔는 지 잘 모르겠습니다. 기초교육 정도론 당연히 쉽지 않을 거라곤 예상했었는데 정말 갈수록 태산이네요. ㅠ 전일등락률25+시간변수청산 input: P1(100000), P2(150000); if ((sdate!= sdate[1] and stime >= P1) or 만약 시작날짜가 전일날짜와 같지 않고 시작시간이 p1보다 크거나 ⓐ (sdate == sdate[1] and stime >= P1 and stime[1] < P1)) and 시작날짜가 전일시작날짜와 같고 시작시간이 P1보다 크거나 같으며 한개봉전 시작시간이 p1보다 작거나 ⓑ DayClose(1) >= Dayopen(1)*1.25 Then 전일봉의 종가가 전일봉의 시가보다 1.25배 클때(25% 올랐을 때) buy(); 사라 SetStopEndofday(P2); 청산은 P2에서 한다. ## if ((sdate!= sdate[1] and stime >= P1) or ) 2. 답변해주시는 내용을 들었는데도 무슨 말씀인 지 잘 모르겠습니다. 그럼 차트에서 30분봉의 저가가 볼린저밴드 상단선을 하향돌파. 하향침범을 했다고 하더라도 30분봉의 볼린저밴드 상단선은 완성이 아직 안된 상태이므로 청산이 되지 않는다는 말씀인가요? 만약 그렇다면 30분봉 볼린저밴드 상단선이 완성되지 않더라도, 그러니까 중간값이라도 저가가 볼린저밴드 상단선을 침범하면 바로 매도 가능하도록 할수는 없을까요? 만약 30분봉이 완성되고 난 뒤에 신호가 난다면 거의 기존 의도했던 신호와는 전혀 다른 결과가 나올 수도 있을 것 같아서요. [원질문] [[[ 7. 시스템 진입 전일 거래대금이 300억이상이면 시초가 매수 청산 볼린저밴드 저가가 상단선에 닿으면 청산 8. 7에 대한 문의 7의 청산에서 볼린저밴드 저가가 상단선에 닿는다는게 봉이 완전히 완성 안되도, 예를 들어 30분봉은 종가가 30분은 돼야 완성되는데요. 그 가운데 저가는 이미 나와 있을 겁니다. 그 저가가 상단선에 닿으면 바로 그 시점에서 청산이 이뤄지는 건가요? 전에 봉이 완성안됐을 때 신호가 나게 하는 방법은 없다고 들었던 기억이 있어서 질문드립니다.]]] [답변] (봉완성시 저가가 상단위이면 완성봉의 상단값이 셋팅되고 다음봉에서 상단선 이하의 시세가 발생하면 즉시 청산됩니다.) 3. 강조 장시작봉에 강조 4. 강조 09:00 봉에 강조(*3이랑 똑같은 건가요?date ,stime 등 시간변수가 헷갈려서 여쭈어 봅니다. ) 5. 강조 09:30 분 봉에 강조 6. 강조 09:30분부터 15:00 분까지의 봉에 강조 7. 강조가 된 봉의 갯수를 셀 수 있나요? 예를 들어 40일 이평 상단에 있는 봉의 갯수를 세는 방법이 있나요? 8. 이전 게시글들 쭈욱 보고 있는데요. 구 예스트레이더 신 예스트레이더 이런 말들이 나오는 걸 보니 중간에 업데이트하거나 수식 사용에 대해 업그레이드를 한 것 같은 느낌이 듭니다. 혹시 수식 사용이 바뀐 날짜를 알 수 있나요? 수식 공부하려고 보고 있는 건데 바뀐 수식이라면 보고 있을 필요가 없을 것 같아서요. 9. 다른 분 질문인데요. 봐도 해석을 못해서 질문드립니다. 이게 왜 수렴 후 돌파매매인 지 모르겠습니다. 한글로 간단히 해석 좀 부탁드립니다. ###수렴 후 볼린저밴드 돌파 매매 input: period(5), period1(10), period2(20), period3(60), percent(3), D(2); var: value1(0), value2(0), value3(0) ,value4(0); value1 = ma(C,period); value2 = ma(C,period1); value3 = ma(C,period2); value4 = ma(C,period3); If max(value1, value2, value3, value4) < min(value1, value2, value3, value4) * (1 + percent/100) && CrossUp(C, BollBandUp(period,D)) then buy(); If CrossDown(C,ma(C,period1)) then exitlong(); 10. 시스템-필터 20이평 상향 하향돌파 전략으로 아래 필터들 좀 부탁드립니다. 10-1 일일 진입횟수 1회로 제한 10-2 주간 진입횟수 5회로 제한 10-3 월간 진입횟수 10회로 제한 10-4 최근 10거래일간 진입횟수 N회로 제한 10-5 최근 3거래동안 연속 수익거래가 발생했을 때 다음 진입 제한 10-6 최근 3회이상 연속 손실거래일 경우 다음 진입 제한 그 다음 거래에 진입 11. 지표 input:period(20); var:fibRatio1(1.618),fibRatio2(2.618),fibRatio3(4.236), ATRV(0),sma(0),r1(0),r2(0),r3(0); ATRV = ATR(period); sma = ma(C, period); r1 = ATRV * fibRatio1; r2 = ATRV * fibRatio2; r3 = ATRV * fibRatio3; Plot1(sma + r3, "fibTop3"); Plot2(sma + r2, "fibTop2"); Plot3(sma + r1, "fibTop3"); Plot4(sma, "middle"); Plot5(sma - r1,"fibBott1"); Plot6(sma - r2,"fibBott2"); Plot7(sma - r3,"figBott3"); 여기서 plot3에 sig9선(rsi등에 있는 시그널선)을 만들고 싶은데요. r4 = sma+1 ; sig = ma(r4,9); 이렇게 해봤더니 오류가 나더라구요. 어떻게 해야 정확한 값이 나오는 지 궁금합니다. 12. 지표 다른 분 답변에 있던 건데요. 문법에러 잘못된 토큰 'else'라고 나옵니다. 뭐가 잘못된 건 지 어떻게 수정해야하는 지 궁금합니다. 분봉에 일봉 볼린저밴드를 표현하는 지표입니다. Input: length(20), D(2); Var: sumSqr(0), maV(0), sumV(0), count(0), stdV(0); If Length != 0 Then Begin sumV = 0; sumSqr = 0; For count = 0 to Length-1 Begin sumV = sumV+DayClose(count); sumSqr = sumSqr + (DayClose(count) - maV) * (DayClose(count) - maV); End; maV = sumV / length; stdV = Sqrt(sumSqr / length); End; Else stdV = 0; plot1(maV); plot2(maV+(D*stdV)); plot3(maV-(D*stdV)); 13-1. 아래 수식(분봉)에다가 200일(변수a) 이동평균선 위에 주가가 100일 이상 있을 경우라는 조건을 더해주시길 바랍니다. 13-2 아래 수식(분봉)에다가 '100일 가운데 200일 이격도가 150 이상을 기록했으며 100일간 100수치 이하로 떨어진 적이 없다'라는 조건을 더해주시길 바랍니다. input : startTime(90000), endTime(092959); if stime >= 93000 and stime < 145000 and crossup(C,TimeHigh(startTime,endTime)) then { exitshort(); if date != entrydate(0) and date != entrydate(1) then buy(); } if stime >= 93000 and stime < 145000 and crossdown(C,TimeLow(startTime,endTime)) then { exitlong(); if date != entrydate(0) and date != entrydate(1) then sell(); } if stime == 145000 then { exitlong(); exitshort(); } 14. 이게 무슨 수식인 지 설명을 좀 부탁드립니다. 그리고 이것과 정반대의 수식도 만들 수 있다면 만들어주시길 바랍니다. input : percent(4); if dayindex() == 0 then { buy(); var1 = C; } if crossup(C, var1 * (1+Percent/100)) then exitlong(); 15. 877번 예스스탁님 답변인데요. 선언되지 않은 i가 있다는데 뭐가 오류인 지 잘 모르겠습니다. Var: BandU(0),BandD(0), Entryidx(0), pos(0); BandU = Highest(H,i-Entryidx+1); BandD = Lowest(L, i-Entryidx+1); if pos != 1 and CrossUp(C,BandU[1]) then { Entryidx = index; pos = 1; // Buy(); // Exitshort(); } if pos != -1 and CrossDown(C,BandD[1]) then { Entryidx = index; pos = -1; // Sell(); // Exitlong(); } plot1(i-entryidx); 16. 시스템 - 필터 밴드폭(bandwidth) 지표가 시그널(9)선 위에 있을 때만 진입 17. 시스템 - 필터 atr지표가 시그널 선 위에 있을 때만 진입 18. 시스템 - 필터 밴드폭 지표가 상승추세(상승추세 정의: 시그널선(40)위에 밴드폭이 있으며 밴드폭이 상승하는 가운데 중간에 5회이상 하락하지 않는다(예 상승중이다가 3회 하락하다 다시 상승하면 계속 상승추세로 봄. )에만 진입 19. 시스템, 이 식이 오류가 나는데요. 왜 오류가 나는 지 몰라서 질문드립니다. 896번답변입니다. var : Cond1(0), Cond2(0), Cond3(0), Cond4(0), Cond5(0), Cond6(0), Cond11(0), Cond22(0), Cond33(0), Cond44(0), Cond55(0), Cond66(0), buyCond(0), sellCond(0), bPosition(0), sposition(0); if date != date[1] then { bposition = 0; sposition = 0; } Cond1 = crossup(C, dayopen(0)+0.3); //매수조건1 Cond2 = crossup(C, dayopen(0)+0.6); //매수조건2 Cond3 = crossup(C, dayopen(0)+0.9); //매수조건3 Cond4 = crossdown(C, dayopen(0)-0.3); //매수청산조건1 Cond5 = crossdown(C, dayopen(0)+0.3); //매수청산조건2 Cond6 = crossdown(C, dayopen(0)+0.6); //매수청산조건3 Cond11 = crossdown(C, dayopen(0)-0.3); //매도조건1 Cond22 = crossdown(C, dayopen(0)-0.6); //매도조건2 Cond33 = crossdown(C, dayopen(0)-0.9); //매수조건3 Cond44 = crossup(C, dayopen(0)+0.3); //매도청산조건1 Cond55 = crossup(C, dayopen(0)-0.3); //매도청산조건2 Cond66 = crossup(C, dayopen(0)-0.6); //매도청산조건3 //매수식 if bposition != 1 then Begin if Cond1 then { buy(); buyCond = 1; bposition = 1; } if Cond2 then { buy(); buyCond = 2; bposition = 1; } if Cond3 then { buy(); buyCond = 3; bposition = 1; } End; //매수청산식 if buyCond == 1 and Cond4 then { exitlong(); bPosition = 0; } if buyCond == 2 and Cond5 then { exitlong(); bPosition = 0; } if buyCond == 3 and Cond6 then { exitlong(); bPosition = 0; } /* //매도식 if sposition != 1 then Begin if Cond11 then { sell(); sellCond = 1; sposition = 1; } if Cond22 then { sell(); sellCond = 2; sposition = 1; } if Cond33 then { sell(); sellCond = 3; sposition = 1; } End; //매도청산식 if sellCond == 1 and Cond44 then { exitlong(); sPosition = 0; } if sellCond == 2 and Cond55 then { exitlong(); sPosition = 0; } if sellCond == 3 and Cond66 then { exitlong(); sPosition = 0; } 20. 연산자 앞 뒤 두 데이터의 형태가 같아야 합니다. 라고 나오는데요. 뭐가 오류인 지 몰라서 여쭤봅니다. var : uprev(0), dnrev(0), bot1(0), bot2(0), top1(0), top2(0); uprev = ma(C,5) > ma(C,5)[1] and ma(C,5)[1] <= ma(C,5)[2]; dnrev = ma(C,5) < ma(C,5)[1] and ma(C,5)[1] >= ma(C,5)[2]; if uprev then { bot1 = ma(C,5)[1]; bot2 = bot1[1]; } if dnrev then { top1 = ma(C,5)[1]; top2 = top1[1]; } if uprev and bot1 > bot2 then buy(); if dnrev and top1 < top2 then sell(); if CrossDown(C,ma(C,10)) then sell(); 21. 983번답변인데요. 숫자값이나 숫자표현식이 와야 합니다. 라는 오류가 납니다. 어떻게 수정하면 될까요? input : 봉갯수(7); if accumN(C > O, 봉갯수) > accumN(C < O, 봉갯수) then buy("매수", atstop, O); if accumN(C > O, 봉갯수) < accumN(C < O, 봉갯수) then sell("매도", atstop, O); 22. 같은 답변인데 연산자 앞뒤 두 형태가 같아야합니다라는 오류가 납니다. var : 조건1(0), 조건2(0), 조건3(0), 조건4(0), 조건5(0); 조건1 = C > ma(C, 20); 조건2 = crossup(C, ma(C, 10)); 조건3 = crossdown(C, ma(C, 10)); 조건4 = crossdown(C, ma(C, 5)); 조건5 = crossup(C, ma(C, 5)); IF 조건1 THEN { IF 조건2 THEN BUY(); //1차 매수 IF 조건3 THEN { SELL(); EXITLONG(); //1차 매수청산 } IF 조건4 THEN SELL(); // 1차 매도 IF 조건5 THEN { BUY(); EXITSHORT(); //1차 매도 청산 } } 22. 994번 답변인데 역시 오류가 나서 질문드립니다. input : 수익(2), 손실(30); var : Cond1(0), Cond2(0), Cond3(0), bposition(0), 진입가(0), buyCond(0), buyval(0); if date != date[1] then { //일간차트의 경우 이 부분(3줄)을 빼야함 buyCond = 0; bposition = 0; } Var1 = ma(C, 5); Var2 = ma(C, 20); Var3 = stochasticsK(20,12); Var4 = stochasticsD(20,12,12); Cond1 = CrossUp(Var1, Var2); Cond2 = Crossdown(Var1, Var2); Cond3 = CrossUp(Var3, Var4); setstoploss(2); //매수식 if bposition != 1 then Begin if Cond1 then { //이평 골든 buy("a"); buyCond = 1; bposition = 1; } else if Cond3 then { //또는 if buyCond != 1 and Cond3 then (스토 골든) buy("b"); buyCond = 3; bposition = 1; 진입가 = C; } End; //매수청산식 if buyCond == 1 and Cond2 then { //이평 데드 exitlong("aa"); bPosition = 0; } if C > 진입가 * (1 + 수익/100) then { //진입가격대비 2% 수익 var1 = 1; buyVal = C; //진입가격대비 2% 수익날 때의 종가를 저장 } if buyCond == 2 then { //진입가격 대비 하락 청산 if C < buyVal * (1 - 손실/100) and marketposition() == 1 then //진입후 30% 수익난 이후 30% 하락하면 exitlong("bb"); bPosition = 0; } 23. 연산자 앞뒤형태가 다르다는 오류가 납니다. 어떻게 수정하면 될까요. var : 진입(0), 청산(0), 당일봉(0), 매수식(0),매수청산식(0), 매도식(0),매도청산식(0),buycount(0),sellcount(0),value1(0),value2(0),value3(0),value4(0), value5(0),value6(0); value1=ema(c,5)-ema(c,26); value2=ema(ema(c,5)-ema(c,26),9); value3=(dayhigh()+daylow())/2; value4=(dayhigh(1)+dayclose(1)+daylow(1))/3; value5=ema(c,187); value6=accumn(bids-asks,5)/5; 당일봉 = dayindex(); 매수식 = value1>value2 and c>value3 and c>value4 and c>value5 and value6>0; 매수청산식= value1<value2 and c<value3 and c<value4; 매도식= value1<value2 and c<value3 and c<value4 and c<value5 and value6<0; 매도청산식= value1>value2 and c>value3 and c>value4; if date != date[1] then { buycount = 0; sellcount = 0; } if buycount < 1 and sellcount < 1 then { if 매수식 then { buy(); buyCount = buyCount+1; } } else if sellcount == 1 and ( 매도청산식 ) and C - entryprice(0) < 0 //당일 매도후 재 매수진입 && 진입가가 이전 진입가 보다 작아야 함 then buy(); if buycount < 1 and sellcount < 1 then { if 매도식 then { sell(); sellcount = sellcount +1; } } else if buycount== 1 and (매수청산식) and C - entryprice(0) > 0 //당일 매수후 재 매도진입 && 진입가가 이전 진입가 보다 커야 함 then sell(); if 매수청산식 then exitlong(); if 매도청산식 then exitshort(); 24. 1051 답변인데 이것도 오류가 나서 수정 좀 부탁드립니다. var : macdcond(0), upcond(0); var1 = 0; var2 = 0; SetStopProfittarget(0.4, pointstop); macdcond = macd(12,26)-ema(macd(12,26),9); if macdcond > macdcond[1] and macdcond[1] > macdcond[2] then var1 = 1; else var2 = var2 - 1; if C > ma(C,10) then var1 = var1 + 1; else var2 = var2 - 1; if date != date[1] then upcond = 0; if stime == 95000 and accumN(C>O,6) > 3 then upcond = 1; if upcond then var1 = var1 + 1; else var2 = var2 - 1; if stochasticsK(12,5) > stochasticsD(12,5,5) then var1 = var1 + 1; else var2 = var2 - 1; if macd(12,26) > ema(macd(12,26),9) then var1 = var1 + 1; else var2 = var2 - 1; if CCI(10) > -100 then var1 = var1 + 1; else var2 = var2 - 1; if CCI(10) < 100 then var2 = var2 - 1; else var2 = var2 - 1; if sar(0.02, 0.2) > sar(0.02, 0.2)[1] then var1 = var1 + 1; else var2 = var2 - 1; if CrossUp(var1, 3) then buy(); if Crossdown(var2, -3) then sell(); if stime == 145000 then { exitlong(); exitshort(); } 25. 지표 이 값을 넘으면 5이평값이 상승할 수 있는 선을 지표로 예를 들어 5000원이 되면 이전 값들과 다 합쳐서 5이평이 상승할 수 있으면 값은 5000원 하락지표도 마찬가지. 26. 시스템 진입 고가가 25의 지표값을 넘어설 경우 진입 청산 저가가 25의 하락지표값을 침범했을 경우이거나 수익률이 2%(변수)를 기록했을 때 청산 27. 이것 역시 오류가 나서 고친 수식 좀 부탁드립니다. var : value(0); value = ma(C,5) < ma(C,5)[1] and ma(C,5)[1] >= ma(C,5)[2] ; if ma(C,5)[MRO(value,40,1)] < ma(C,5)[MRO(value,40,2)] then sell(); 28. 1060번 답변입니다. 수정 좀 부탁드립니다. Input: Period(29), Period1(15), Period2(5), BaseLine1(30), BaseLine2(70); Var: value(0), value1(0), cond1(0), cond2(0), cond3(0); var : buyprice(0), buyidx(0), bpos(0); value= iff(dayOpen()>=preDayClose(), ema((C-(dayOpen()-preDayClose())-lowest(L-(dayOpen()-preDayClose()), Period)) / (highest(H-(dayOpen()-preDayClose()), Period) - lowest(L-(dayOpen()-preDayClose()), Period)) * 100, Period1), ema((C+(preDayClose()-dayOpen())-lowest(L+(preDayClose()-dayOpen()), Period)) / (highest(H+(preDayClose()-dayOpen()), Period) - lowest(L+(preDayClose()-dayOpen()), Period)) * 100, Period1)); value1= ema(value,period2); //매수식 if value>value1 and dayindex()>0 then { buy(); buyprice = C; buyidx = index; bpos = 1; } // 조건1 if bpos == 1 and highest(h,i-buyidx) > dayLow(0) * 1.1 and CrossDown(C, ma(C,5)) then cond1 = 1; else cond1 = 0; // 조건2 if bpos == 1 and highest(h,i-buyidx) > buyprice * 1.05 and Crossdown(C,ma(C,5)) then cond2 = 1; else cond2 = 0; // 조건3 if bpos == 1 and highest(h,i-buyidx) > buyprice * 1.05 and C < O then cond2 = 1; else cond2 = 0; //매수청산식 if cond1 or cond2 or cond3 then { exitlong(); bpos = 0; } 29. 이것도 오류가 있어서 수정부탁드립니다. var1 = CrossUp(C[2], ma(C,20)[2]); var2 = C > ma(C,20)+0.3; var3 = C[1] > ma(C,20)[1]; var4 = CrossDown(C[2], ma(C,20)[2]); var5 = C < ma(C,20)-0.3; var6 = C[1] <= ma(C,20)[1]; if var1 and var2 and var3 then buy(); if var4 and var5 and var6 then sell(); 30. 이것도 역시 연산자형태가 같아야 합니다라는 오류가 납니다. input : p1(3); var : sumV(0), maV(0), ii(0); sumv = 0; FOR ii = 1 to p1 { sumv = sumv + dayclose(ii); } mav = sumV / p1; var1 = C[1] > ma(C[1],10); var2 = C > ma(C,3)+1.5; var3 = C[1] < ma(C[1],10); var4 = C < ma(C,3)-1.5; if var1 and var2 and crossup(close, mav+3.0) then buy("매수"); if var3 and var4 and crossdown(close, mav-3.0) then sell("매도"); 31. 이것도 역시 연산자 오류가 납니다. var : cond(0), preCond(0), Hval(0), Lval(0), preHval(0), preLval(0), nontrend(0); if date <> date[1] then { cond = false; preCond = cond[1]; } Hval = highest(c,12); Lval = lowest(c,12); if Hval - Lval < 0.4 then nontrend = true; else nontrend = false; if nontrend == true then { preHval = Hval; preLval = Lval; cond = true; } if c>prehval&&precond==true then buy(); if c<prelval&&precond==true then sell(); 32. 수정부탁드립니다. Input : af(0.02), maxAF(0.2); If ma(C,5)>ma(C,5)[1] AND ma(C,5)[1]<=ma(C,5)[2] AND ma(C,5)>ma(C,20) AND ma(C,5)[1]>=ma(C,20)[1] AND C>ma(C,5)AND C[1] <= ma(C,5)[1] AND accumN(ma(C,5)>ma(C,20) AND ma(C,5)[1]<=ma(C,20)[1],20)>=1 then buy(); If C < sar(af,maxAf) AND C[1] >= sar(af,maxAF)[1] then sell();
프로필 이미지
잡다백수
2017-10-07
279
글번호 113231
시스템
답변완료

확인 부탁드립니다.

작성해 주신 식으로 구동해도 진입(구동)이 없습니다. 확인 부탁드립니다. 틱차트사용중입니다 매매 조건입니다. (매수로만 설명드립니다 매도는 반대 동일조건으로 해주세요) 1번. 매수포지션 1차 진입하여 손절되면 매도 조건시 2차 진입 (단, 매도 진입은 Data2의 20일선이 100일선 위에 있고 80일선이 상방일때만) * 55029 에서작성해주신 아래식에서 부등호가 ">"로 변경해야 되는거 아닌지 문의드립니다.? IsExitName("S손절",1) == true and avg1 < avg3 and avg2 < avg2[1] then buy("Buy4"); 2번. 매수, 매도 포지션 진입 후 익절이되면 당일 매매 끝 3번. 진입횟수를 2로 하면 1번과같은 조건으로 두번까지만 진입이 되게 해주시고, 첫번째 매매에서 익절이 되면 당일 매매는 종료하게 해주세요. input : short(12),long(26),sig(9),P1(3),P2(20),P3(100); input : 시작시간(102000), 종료시간(172000); input : 진입횟수(2); var : mav1(0,data1),mav2(0,data1),mav3(0,data1); var : Tcond(False,data1),count(0,data1),T1(0,data1); var : MACDO2(0,data2), MACDO1(0,data1); var : BH(0,data1),SL(0,data1),Xcond(false,data1); var : avg1(0,data2),avg2(0,data2),avg3(0,data2); MACDO2 = data2(MACD_OSC(short,long,sig)); MACDO1 = data1(MACD_OSC(short,long,sig)); mav1 = data1(ma(c,P1)); mav2 = data1(ma(c,P2)); mav3 = data1(ma(c,P3)); avg1 = data2(ma(c,20)); avg2 = data2(ma(c,80)); avg3 = data2(ma(c,100)); if stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; Tcond = true; Xcond = true; } if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{ Tcond = false; } if TotalTrades > TotalTrades[1] and (IsExitName("B익절1",1) or IsExitName("B익절2",1) or IsExitName("S익절1",1) or IsExitName("S익절2",1)) Then Xcond = true; if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; //진입 if Tcond == true and Xcond == false Then{ if MACDO2 > MACDO2[1] and crossup(mav2,mav3) Then{ if count == 0 and MarketPosition <= 0 Then buy("Buy1"); if count > 0 and count < 진입횟수 and MarketPosition == -1 then buy("Buy2"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != 1 and IsExitName("S손절",1) == false then buy("Buy3"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != 1 and IsExitName("S손절",1) == true and avg1 < avg3 and avg2 < avg2[1] then buy("Buy4"); } if MACDO2 < MACDO2[1] and CrossDown(mav2,mav3) then{ if count == 0 and MarketPosition >= 0 Then Sell("Sell1"); if count > 0 and count < 진입횟수 and MarketPosition == 1 then Sell("Sell2"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != -1 and IsExitName("B손절",1) == false then Sell("Sell3"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != -1 and IsExitName("B손절",1) == true and avg1 > avg3 and avg2 > avg2[1] then Sell("Sell4"); } } //청산1 if MarketPosition == 1 Then{ BH = highest(H,BarsSinceEntry); if BH >= EntryPrice+PriceScale*60 and BH < EntryPrice+PriceScale*80 Then ExitLong("B익절1",AtStop,BH-PriceScale*30); if BH >= EntryPrice+PriceScale*80 Then ExitLong("B익절2",AtStop,BH-PriceScale*20); ExitLong("B손절",AtStop,EntryPrice-PriceScale*40); } if MarketPosition == -1 Then{ SL = Lowest(L,BarsSinceEntry); if SL <= EntryPrice-PriceScale*60 and SL > EntryPrice-PriceScale*80 Then ExitShort("S익절1",AtStop,SL+PriceScale*30); if SL <= EntryPrice-PriceScale*80 Then ExitShort("S익절2",AtStop,sL+PriceScale*20); ExitShort("S손절",AtStop,EntryPrice+PriceScale*40); } if 종료시간 <= sTime or sTime < 시작시간 then { if MarketPosition == 1 then{ ExitLong("B장종료"); } if MarketPosition == -1 then{ ExitShort("S장종료"); } }
프로필 이미지
라떼처럼
2017-10-01
160
글번호 113230
시스템