커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

수식 오류 문의드립니다

안녕하세요 수식을 테스트하던중 문제상황이 발생해 문의드립니다 사용한 수식은 아래와 같고 문제가 되었던 상황은 캡처로 첨부하였습니다 input : TT(224300), TD(20220215), MDD(200000) ; var : HB(14574), LB(14481), Hx(20000), Lx(1); var : e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), Hstate(true), Lstate(true), N(0), unitP(0), exitC(0), rHB(0), rLB(0); N = Highest(ATr(14), 100); unitP = floor(MDD/(N*5*4*600)); exitC = (2-(MaxEntries-1)/2)*N; e60 = Ema(C,60); if Condition1 == False and sDate >= TD and sTime >= TT Then { Condition1 = true; Hcount = 0; Lcount = 0; T1 = TotalTrades; } if Condition1 == true Then { B = 0; S = 0; if TotalTrades-T1 > 0 Then { For cnt = 1 to TotalTrades-T1 { if MarketPosition(cnt) == 1 Then B = B+1; if MarketPosition(cnt) == -1 Then S = S+1; } } Hcount = B + IFf(MarketPosition == 1,1,0); Lcount = S + IFf(MarketPosition == -1,1,0); if B>0 && B == Hcount then HB = rHB; if S>0 && S == Lcount then LB = rLB; if Hstate == true then { Buy("b1",AtStop,HB,unitP); Buy("b2",AtStop,HB+0.5*N,unitP); Buy("b3",AtStop,HB+N,unitP); Buy("b4",AtStop,HB+1.5*N,unitP); } if Lstate == true then { Sell("s1",AtStop,LB,unitP); Sell("s2",AtStop,LB-0.5*N,unitP); Sell("s3",AtStop,LB-N,unitP); Sell("s4",AtStop,LB-2.5*N,unitP); } if marketposition ==1 Then { rHB = Highest(H, BarsSinceEntry) ; if e60 < HB+2*N Then exitlong("exitB1", atstop, HB-exitC); if e60 >= HB+2*N and CrossDown(close, e60) Then { ExitLong("exitB2") ; Hstate = false ; } exitlong("exitB3", AtLimit, Hx); } if marketposition == -1 Then { rLB = Lowest(L, BarsSinceEntry); if e60 > LB-2*N Then ExitShort("exitS1", atstop, LB+exitC); if e60 <= LB-2*N and CrossUp(close, e60) Then { ExitShort("exitS2"); Lstate = false ; } exitshort("exitS3", AtLimit, Lx); } if Hcount > 3 Then Hstate = False; if Lcount > 3 Then Lstate = False; if H >= Hx then Hstate = false; if L <= Lx then Lstate = false; } MessageLog("N %.2f, P %.2f, eC %.2f",N , unitP, exitC); MessageLog("HB %.2f, rHB %.2f, Hec %.2f, B %.f, Hc %.f, Hs %4s", HB, rHB, HB - exitC, B, Hcount, Hstate); MessageLog("LB %.2f, rLB %.2f, Lec %.2f, S %.f, Lc %.f, Ls %4s", LB, rLB, LB + exitC, S, Lcount, Lstate); 문제상황 1. 손절조건이 되서 청산되었으나 LB = rLB로 업데이트 되지 않았고 업데이트 되지 않아 초기치로 설정한 LB로 곧바로 다시 진입 '청산 => 재진입'이 일어난 시간을 확인해보면 5초의 갭이 있어 청산-매수 시점이 겹쳐 생긴 문제는 아닌듯 (1-1) 2. 차트상에선 청산신호가 나왔으나, 실제 청산 주문이 들어가지 않음 시스템 모니터 기록에도 청산 주문이 안들어가있음(2-1) 주문은 안들어갔으나, LB=rLB로 업데이트 3. 청산이 안된채로 조건이 되자 다시 진입 청산조건이 되자 이전에 남아있던 12계약은 그대로 있고 4계약만 청산됨 +) 캡쳐는 못했는데, exitL2 조건으로 청산되어 청산후 Hstate == false가 되어 거래정지가 되어야 하는 상황에서도 동일하게 Hstate 안바뀌고, HB 도 업데이트 안되 재진입하는 상황이 발생했습니다 관계가 있는진 모르겟으나 이 케이스도 위에 예시처럼 시스템 실행하고 처음 진입했을때 입니다 이런 문제 원인이 무엇인지 못찾겠어 가능하다면 확인 부탁드립니다 감사합니다
프로필 이미지
jshwang2
2022-02-16
1162
글번호 156334
시스템
답변완료

분할매수

먼저 감사드립니다. 아래 보내주신 수정프로그램 실행시 다음봉에 매수신호는 발생하여 처리가능한데 b2. b3. b4. 신호가 동시에 발생합니다. 조언부탁드립니다. if MarketPosition == 0 and ma(c,60) > ma(c,120) and c > o then { Buy("b1"); #첫매수조건이 만족하면 지정한 가격을 셋팅해서 #매수 다음봉만 가격조건 충족하는 것을 감시 Buy("b2.",atlimit,EntryPrice * 0.95); Buy("b3.",atlimit,EntryPrice * 0.90); Buy("b4.",atlimit,EntryPrice * 0.80); } #첫매수후 다다음봉부터 지정한 가격조건 충족하면 매수 if MarketPosition == 1 Then { ExitLong("bx",atlimit, AvgEntryPrice * 1.10); if MaxEntries == 1 Then Buy("b2",atlimit,EntryPrice * 0.95); if MaxEntries == 2 Then Buy("b3",atlimit,EntryPrice * 0.90); if MaxEntries == 3 Then Buy("b4",atlimit,EntryPrice * 0.80); }
프로필 이미지
kobal321
2022-02-15
1267
글번호 156333
시스템
답변완료

사용자함수 수식문의 좀 도와주세요. ㅠㅠ

특정날짜(시작과 끝)를 입력받아서 그 사이의 봉의 개수와 날짜 사이의 일수를 구하는 함수를 만들고 싶습니다. 아래같은 논리로 사용자함수를 만들고 싶어요. input 시작일, 종료일; var : 봉개수, 일수; 제어문 {봉개수 = 숫자;} 제어문 {일수 = 숫자;} 아무리 머리를 싸매고 고민을해도 로직이 안 그려집니다. ㅠㅠ 염치불구하고 부탁 드려봅니다.
프로필 이미지
윤이
2022-02-15
1365
글번호 156332
사용자 함수
답변완료

이평선 수식부탁합니다

안녕하세요 국내 주식을 하고 있습니다 예를 들어, 이평선 20일 기준 평균가95프로 선을 내려갈때 주식 1개를 매매하고 90프로 선을 내려갈때 주식2 개를 매매한다고 햇을때 수식 부탁합니다. 분봉은 10분을 쓰고 잇습니다
프로필 이미지
강물처름
2022-02-15
1111
글번호 156331
시스템
답변완료

검색식 문의 드립니다

안녕하세요 후행스팬이 볼린저 밴드 상단선을 통과하는 종목을 검색식 입력했는데 종목이 검색되질않는데 뭐가 잘못된건까요? input : P(20),dv(2); var : BBup(0); BBup = BollBandUp(P,dv); if CrossUp(c[25],var1[25]) Then Find(1);
프로필 이미지
동동이아빠
2022-02-15
1495
글번호 156330
검색
답변완료

한방향 매매신호 첫신호만 표시

항상 감사드립니다 아래 시스템1은 매수,매도신호가 번갈아 가며 신호가 나옵니다 시스템2 에서 동일방향 재진입금지를 삭제했을때 시스템1에서 나오는 매수/매도 첫신호만 나오도록 수정하고 싶습니다 매수1,매수2,매수3 ,매수4 =====>매수1만 표시 매도1,매도2,매도3,매도4 =====>매도1만표시 ++++시스템1 ++++ if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and #동일방향 재진입금지# Var10>Var20 and t60==1 Then BUY("B_1"); if ((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != -1) or (MarketPosition == 1)) and #동일방향 재진입금지# Var10<Var20 and t60==-1 Then sell("S_1"); ++++시스템 2 +++ if Var10>Var20 and t60==1 Then BUY("B_1"); if Var10<Var20 and t60==-1 Then sell("S_1"); 감사합니다
프로필 이미지
조민철
2022-02-15
1300
글번호 156329
시스템
답변완료

수식 작성 요청 드립니다.(중간)

* 항상 많은 도움에 고맙습니다. * 아래 수식을 매매식으로 전완 좀 부탁 드립니다. 기준 1. 새로운 수평선 시작되고 4개봉이 경과힌 후에 현재 중간선이 이전 중간선 을 CrossUp 하면 매수 2. 새로운 수평선 시작되고 4개봉이 경과힌 후에 현재 중간선이 이전 하단선 을 CrossDown 하면 매도 3. 새로운 수평선 시작되고 4개봉이 경과힌 후에 현재 수평상단선이 이전전 중간선 을 CrossDown 하면 매도 4. 새로운 수평선 시작되고 4개봉이 경과힌 후에 현재 수평상단선이 이전전 하단선 을 CrossUp 하면 매수 ## 아래 수식 input : n(50); var : hh(0),ll(0),idx(0),tf(0); var : TL1(0),TL2(0),d1(0),t1(0),TL3(0); if Bdate != Bdate[1] Then idx = 0; Else idx = idx+1; TF = idx%n; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { hh = h; ll = l; d1 = sDate; t1 = sTime; #TL_Delete(TL1); TL1 = TL_new(d1,t1,hh,NextBarSdate,NextBarStime,hh); #TL_Delete(TL2); TL2 = TL_new(d1,t1,ll,NextBarSdate,NextBarStime,ll); #TL_Delete(TL3); TL3 = TL_new(d1,t1,(hh+ll)/2,NextBarSdate,NextBarStime,(hh+ll)/2); } if h > hh Then { hh = h; TL_SetBegin(TL1,d1,t1,hh); TL_SetBegin(TL3,d1,t1,(hh+ll)/2); } if l < ll Then { ll = l; TL_SetBegin(TL2,d1,t1,ll); TL_SetBegin(TL3,d1,t1,(hh+ll)/2); } TL_SetEnd(TL1,NextBarSdate,NextBarStime,hh); TL_SetEnd(TL2,NextBarSdate,NextBarStime,ll); TL_SetEnd(TL3,NextBarSdate,NextBarStime,(hh+ll)/2); * 고맙습니다.
프로필 이미지
요타
2022-02-16
1340
글번호 156328
시스템
답변완료

시스템 문의

안녕하세요 관리자님 먼저 늘 감사드립니다. 제가 아래와 같은 수식을 만들고 싶은데 도움 부탁 드립니다. 조건이 A, B, C, D라는 조건이 있고 각 조건이 만족하는 것에 대해서 점수를 부여하여 +3점 이상은 매수 -3점 이상은 매도 예를들어 A조건 만족 하면 A=1 B조건 만족 하면 B=1 C조건 불만족 하면 C=-1 D조건 만족 하면 D=1 이런 식으로 나오면 총 +3점 이상으로 매수 진행 이런 시스템을 만들고 싶습니다. 조언 부탁 드립니다. 감사 드립니다.
프로필 이미지
blueo
2022-02-15
1056
글번호 156327
시스템
답변완료

수식 문의 드립니다.

안녕하세요, 늘 도움 많이받고 있습니다. 아래는 이전에 작성해주셨던 수평 추세선 cross시 매매하는 수식인데, 아래 수식으로 피라미딩 매매를 할 때, 1) 각 봉 위치 이전에 차트에 만들어진 수평선 중 가장 낮은값을 가지는 수평선을 crossdown하면 즉시 전량 매수청산 2) 당일 하루동안 한번 Crossup 하여 매수주문 한 수평선은 당일 매수 조건에서 제외 (다음날부터는 매수가능) 하는 수식을 추가하고 싶습니다. 답변 주심에 항상 감사드립니다. input : left(5), right(5); var : swing_low(0),swing_high(0),Dir(0),cnt(0); Array : line[300](0); swing_low = SwingLow(1, L, left, right, left+right+1); swing_high = SwingHigh(1, H, left, right,left+right+1); if (swing_low != -1 ) Then { var11 = sdate[right]; var12 = STime[right]; var13 = Low[right]; var21 = var11[1]; var22 = var12[1]; var23 = var13[1]; var31 = var21[1]; var32 = var22[1]; var33 = var23[1]; if var23 > 0 Then { Value11 = TL_New(var11,var12,var13,sDate,sTime,var13); TL_SetExtRight(value11,true); TL_SetColor(value11,BLACk); TL_SetSize(value11,2); line[0] = var13; For cnt = 1 to 299 { line[cnt] = line[cnt-1][1]; } } } if ( swing_high != -1 ) Then{ var51 = sdate[right]; var52 = STime[right]; var53 = high[right]; var61 = var51[1]; var62 = var52[1]; var63 = var53[1]; var71 = var61[1]; var72 = var62[1]; var73 = var63[1]; if var63 > 0 Then { value31 = TL_New(var51,var52,var53,sDate,sTime,Var53); TL_SetExtRight(value31,true); TL_SetColor(value31,BLACk); TL_SetSize(value31,2); line[0] = var53; For cnt = 1 to 299 { line[cnt] = line[cnt-1][1]; } } } Condition1 = False; Condition2 = False; For cnt = 0 to 299 { if line[cnt] > 0 and C > line[cnt] and C[1] < line[cnt] Then Condition1 = true; if line[cnt] > 0 and C < line[cnt] and C[1] > line[cnt] Then Condition2 = true; } if Condition1 == true Then Buy("B",onclose,DEF,"",Floor(CurrentContracts*(1/2))),1); if Condition2 == true Then exitlong("Bx",onclose,DEF,"",Floor(CurrentContracts*(1/2))),1);
프로필 이미지
김예스
2022-02-15
919
글번호 156326
시스템
답변완료

함수요청

안녕하세요? 아래 작성주신 지표함수 (글번호 74517번)을 활용하여 전략을 작성하고 싶습니다. (글번호 75951번의 작성 주실 스크립트를 다시 응용해보고자 합니다.) Input : short(12), long(26), signal(9); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); var : d1(0),t1(0),tl1(0),tl2(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { d1 = sDate; t1 = sTime; HH = macdo; LL = macdo; Condition1 = False; } if d1 > 0 Then { if macdo > hh Then hh = macdo; if macdo < ll Then ll = macdo; if Condition1 == False and hh >= ll+0.5 Then { Condition1 = true; var1 = DayHigh; Var2 = DayLow; TL1 = TL_New(d1,t1,var1,NextBarSdate,NextBarStime,var1); TL2 = TL_New(d1,t1,var2,NextBarSdate,NextBarStime,var2); } if Condition1 == true Then { TL_SetEnd(TL1,sDate,sTime,var1); TL_SetEnd(TL2,sDate,sTime,var2); } } 선물 5분봉으로 거래를 하고자 하는데 9시에 장이 개장하고 상기 지표(의미있는 고점 HH, 의미있는 저점 LL) 에서 100ma가 HH 위에 있다가 아래로 이탈하면 익봉 시가에서 5틱 위로 지정가 매도 진입 (이탈 완성 시가에 5틱 위로 지정가 주문이 안되면 이탈봉 종가를 기준으로 5틱 위 지정가로 주문을 생성하고 싶습니다. 다만 주문이 생성되고 n개봉 이내에서 체결이 안되면 그 매도주문은 취소를 하고 다음 신호를 기다릴 것입니다.) 100ma가 LL 아래에 있다가 위로 돌파하면 익봉 시가에서 5틱 아래 지정가 매수 진입 (이탈 완성 시가에 5틱 아래로 지정가 주문이 안되면 돌파봉 종가를 기준으로 5틱 아래 지정가로 주문을 생성하고 싶습니다. 다만 주문이 생성되고 n개봉 이내에서 체결이 안되면 그 매수주문은 취소를 하고 다음 신호를 기다릴 것입니다.) 현주가가 100ma 상향돌파 완성하면 익봉 시가에 매도 청산 (역시 상향돌파의 의미가 그 값이 작다가 커졌다는 의미입니다. 즉 매도 진입 당시에는 현주가가 100ma 아래 있었고 매도 진입 이후 현주가가 100ma를 돌파하면 익봉시가에 매도분 청산입니다.) 현주가가 100ma 하향이탈 완성하면 익봉 시가에 매수 청산 (역시 하향이탈의 의미가 그 값이 컸다가 작아졌다는 의미입니다. 즉 매수 진입 당시에는 현주가가 100ma 위에 있었고 매수 진입 이후 현주가가 100ma를 돌파하면 익봉시가에 매수분 청산입니다.) 진입봉에서 청산이 발생하면 안됩니다. 매수든 매도든 진입과 청산은 각 1번입니다. 따라서 매수 신호 발생 후 매도 신호가 발생되면 매수청산만 하고 신규진입은 하지 않습니다. 15시 15분 강제청산입니다.
프로필 이미지
흰둥이아빠
2022-02-15
962
글번호 156325
시스템