커뮤니티

예스랭귀지 Q&A

글쓰기

신대륙발견 님에 의해서 삭제되었습니다.

프로필 이미지
신대륙발견
2021-10-27
17
글번호 153206
지표
답변완료

문의 드립니다.

안녕하세요. 지난번에 작성해주신 수식을 테스트 하는 중에 수정이 필요한 부분이 있어서 문의 드립니다. 작성해주신 코드에서 2번 항목[지표 값이 갱신(새로운 6연속 양봉 발생) 된 이후] B) [포지션을 보유하고 있을 경우 (A 또는 B에서 진입한 경우)]의 -> 매수 포지션(A)를 손절 또는 수익 발생 후 C 또는 D를 돌파하는 경우 C,D 돌파거래를 각각 한번 거래를 진행한다. -> 매도 포지션(B)를 손절 또는 수익 발생 후 C 또는 D를 돌파하는 경우 C,D 돌파 거래를 각각 한번 거래를 진행한다. 또한 4번 항목 4. 목표 값 및 손절 값을 도달 못할 시 익일 오전 5:30분 (장 종료 30분전)에 보유 중인 모든 포지션을 자동 청산한다. 추가 부탁드립니다. 제가 직접 코드에 setstopendofday(xtime)을 넣었더니 익일 종가 청산 이후 다음날 거래에서 거래가 안됩니다. 꼭 답변 부탁 드립니다. 매번 감사합니다. 혹시 위에 문의 드린 내용이 구현 가능하지 않는다면 대체 방안을 알려 주시면 감사하겠습니다. ----------------------------------------------------------------------- A : 최초로 발생한 6연속 양봉의 (최고점) B : 최초로 발생한 6연속 양봉의 최저점 C : 두번째로 발생한 6연속 양봉의 (최고점) D : 두번째로 발생한 6연속 양봉의 최저점 거래시간: [진입시간: 금일 오전 11시부터 익일 오전 1:00, 청산시간: 금일 오전 11시부터, 익일 오전 5:30분 (장종료 30분전까지)] 1. 지표 값이 생성(최초로 발생한 6연속 양봉) 된 이후 -> A 돌파 시 한번의 매수 기회 / B 돌파 시 한번의 매도 기회가 주어진다. 예) A돌파 후 B에서 손절 -> B 스위칭 -> A도달시 손절 후 스위칭을 하지 않는다. 예) A돌파 후 목표가 청산 - > B돌파 이후 목표가 청산 - > A 또는 B 다시 돌파시 거래하지 않는다. 목표가: 1) 매수 진입 시: A+ (A-B) / 매도 진입시: B - (A-B) 2) 매수 진입(A 돌파) 시 손절 또는 수익 발생 후 다시 A를 돌파 하여도 거래하지 않는다. 매도 진입(B 돌파) 시 손절 또는 수익 발생 후 다시 B를 돌파 하여도 거래하지 않는다. 손절가: 1) A 돌파 시, B 값에 손절 후 스위칭(최초 B값 진입 시 스위칭 진행) / B 돌파 시, A 값에 손절 후 스위칭(최초 A값 진입 시 스위칭 진행) *목표가 및 손절가에 도달하지 못하고 지표 값이 갱신 될 경우 2번으로 넘어간다. 2. 지표 값이 갱신(새로운 6연속 양봉 발생) 된 이후 A) 보유하고 있는 포지션이 없을 경우 -> C 돌파 시 한번의 매수 기회 / D 돌파 시 한번의 매도 기회가 주어진다. 예) C돌파 후 B에서 손절 -> D 스위칭 -> C도달시 손절 후 스위칭을 하지 않는다. 예) C돌파 후 목표가 청산 - > D돌파 이후 목표가 청산 - > C 또는 D 다시 돌파시 거래하지 않는다. 목표가: 1) 매수 진입 시: C + (C-D) / 매도 진입시: D - (C-D) 2) 매수 진입(C 돌파) 시 손절 또는 수익 발생 후 다시 C를 돌파 하여도 거래하지 않는다. 매도 진입(D 돌파) 시 손절 또는 수익 발생 후 다시 D를 돌파 하여도 거래하지 않는다. 손절가: 1) C 돌파 시, D 값에 손절 후 스위칭(최초 D값 진입 시 스위칭 진행) / D 돌파 시, C 값에 손절 후 스위칭(최초 C값 진입 시 스위칭 진행) B) 포지션을 보유하고 있을 경우 (A 또는 B에서 진입한 경우) -> 매수 또는 매도를 이미 진입한 경우 C, D를 이용하여 목표가 및 손절가를 새롭게 갱신한다. 목표가: 1) 매수 진입 시: C + (C-D) / 매도 진입시: D - (C-D) 2) 매수 포지션을 손절 또는 수익 발생 후 C를 돌파하는 경우 단 한번 거래를 진행한다. 매도 포지션을 손절 또는 수익 발생 후 D를 돌파하는 경우 단 한번 거래를 진행한다. 손절가: 1) C 돌파 시, D 값에 손절 후 스위칭(최초 D값 진입 시 스위칭 진행) / D 돌파 시, C 값에 손절 후 스위칭(최초 C값 진입 시 스위칭 진행) 3. 지표 값이 지속적으로 갱신 될 경우 (E,F / G,H / I,J ....) -> 2번을 반복한다. 4. 목표 값 및 손절 값을 도달 못할 시 익일 오전 5:30분 (장 종료 30분전)에 보유 중인 모든 포지션을 자동 청산한다. ------------------------------------------------------------- input : n(6); input : StartTime(110000),EndTime(010000),Xtime(053000); var : HH(0),LL(0),Tcond(false); if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then Tcond = true; if Bdate != Bdate[1] Then { var1 = 0; HH = 0; LL = 0; Condition1 = False; Condition2 = False; } if (Bdate[n] != Bdate and CountIf(C>O,6) == 6) or (bdate[n] == bdate and CountIf(C>O,6) == 6 and C[6] < O[6]) Then { HH = Highest(H,6); LL = Lowest(L,6); } if Tcond == true and HH > 0 and LL > 0 Then { if CrossUp(C,HH) Then { if Condition1 == False Then Buy("b"); Else ExitShort("sx"); Condition1 = true; } if CrossDown(C,LL) Then { if Condition2 == False Then Sell("s"); Else ExitLong("bx"); Condition2 = true; } if MarketPosition == 1 Then ExitLong("bp",AtLimit,HH+(HH-LL)); if MarketPosition == -1 Then ExitShort("sp",AtLimit,LL-(HH-LL)); } -------------------------------------------------
프로필 이미지
7out
2021-10-27
751
글번호 153205
시스템
답변완료

문의드립니다

혹시 이게 가능한지요? 신호가 나오는 캔들의 종가에 매수나 매도 진입인데요. 종가에 바로 진입하지 않고 조정받았다가 종가를 돌파할때 매수나 매도 진입 가능하게 수식을 짤 수 있나요? 즉, 신호가 나왔어도 조정받고 다시 종가를 돌파할 때 매수, 다시 종가를 깰 때 매도, 이렇게 진입이 조정 가능한지 질문 드립니다. 가능하다면 아래 수식에 첨가해 주시면 감사하겠습니다. input : StartTime(101200),EndTime(114000); input : Length(20), D1(2); input : 익절1(30),손절1(30),청산구분시간(103000),익절2(50),손절2(30),익절연속횟수(3),손절연속횟수(2); var : Tcond(false),profit(0),loss(0); if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; profit = 0; loss = 0; } if TotalTrades > TotalTrades[1] Then { if IsExitName("bp1.",1) or IsExitName("bp2.",21) or IsExitName("bp1",1) or IsExitName("bp2",21) or IsExitName("sp1.",1) or IsExitName("sp2.",1) or IsExitName("sp1",1) or IsExitName("sp2",1) Then profit = profit+1; Else profit = 0; if IsExitName("bl1.",1) or IsExitName("bl2.",1) or IsExitName("bl1",1) or IsExitName("bl2",1) or IsExitName("sl1.",1) or IsExitName("sl2.",1) or IsExitName("sl1",1) or IsExitName("sl2",1) Then loss = loss+1; Else loss = 0; } var1 = BollBandUp(Length,D1); var2 = BollBandDown(Length,D1); if Tcond == true Then { If CrossUP(H,var1) and (c > o or (C==O and C >= C[1])) and profit < 익절연속횟수 and loss < 손절연속횟수 then { Buy("b",OnClose,DEF,1); if sTime >= StartTime and sTime < 청산구분시간 Then { ExitLong("bp1.",AtLimit,C+PriceScale*익절1,"",1,1); ExitLong("bl1.",AtStop,C-PriceScale*손절1,"",1,1); } if sTime >= 청산구분시간 and sTime < Endtime Then { ExitLong("bp2.",AtLimit,C+PriceScale*익절2,"",1,1); ExitLong("bl2.",AtStop,C-PriceScale*손절2,"",1,1); } } If CrossDown(L,Var2) and (C < O or (C==O and C < C[1])) and profit < 익절연속횟수 and loss < 손절연속횟수 then { Sell("s",OnClose,DEF,1); if sTime >= StartTime and sTime < 103000 Then { ExitShort("sp1.",AtLimit,C-PriceScale*익절1,"",1,1); ExitShort("sl1.",AtStop,C+PriceScale*손절1,"",1,1); } if sTime >= 103000 and sTime < Endtime Then { ExitShort("sp2.",AtLimit,C-PriceScale*익절2,"",1,1); ExitShort("sl2.",AtStop,C+PriceScale*손절2,"",1,1); } } } if MarketPosition == 1 Then { if sTime >= StartTime and sTime < 청산구분시간 Then { ExitLong("bp1",AtLimit,EntryPrice+PriceScale*익절1,"",1,1); ExitLong("bl1",AtStop,EntryPrice-PriceScale*손절1,"",1,1); } if sTime >= 청산구분시간 and sTime < Endtime Then { ExitLong("bp2",AtLimit,EntryPrice+PriceScale*익절2,"",1,1); ExitLong("bl2",AtStop,EntryPrice-PriceScale*손절2,"",1,1); } } if MarketPosition == -1 Then { if sTime >= StartTime and sTime < 103000 Then { ExitShort("sp1",AtLimit,EntryPrice-PriceScale*익절1,"",1,1); ExitShort("sl1",AtStop,EntryPrice+PriceScale*손절1,"",1,1); } if sTime >= 103000 and sTime < Endtime Then { ExitShort("sp2",AtLimit,EntryPrice-PriceScale*익절2,"",1,1); ExitShort("sl2",AtStop,EntryPrice+PriceScale*손절2,"",1,1); } } IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { IF Endtime <= starttime Then { SetStopEndofday(0); } }
프로필 이미지
호정0688
2021-10-27
694
글번호 153204
시스템
답변완료

문의 드립니다.

input : price(83.50); if MarketPosition == 0 and H < Price Then Buy("b",AtStop,Price); ExitLong("Bp",AtLimit,Price+PriceScale*20); ExitLong("Bl",AtStop,Price-PriceScale*5); 위에 로직은 기준가 설정 후 매수용인데요. 매도 진입 후 손절5틱 익절20틱으로 부탁드립니다.
프로필 이미지
선물대장
2021-10-27
550
글번호 153202
시스템
답변완료

수고하십니다

수고하십니다 7445번 재차요청입니다 아래 수식은 직전파동 조정대입니다 여기에 추가 요청 합니다 Input:종가사용여부(0),파동선두께(0),수치표시(1); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),tl2(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,100) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,100) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 수치표시 == -1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 2, 1); Text_SetColor(Text1,BLACK); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,red); } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); TL_SetEnd(TL2,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == -1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == -1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); Text_SetColor(Text1,BLACK); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,blue); } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]); If 수치표시 == -1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; } #===============피보나치 되돌림=======================# Array: fr[15,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호 <= 2차원 배열입니다. If Index == 0 Then // 첫번째 칼럼에는 피보나치 비율을 { fr[1,1] = 0; fr[3,1] = 0.382; fr[4,1] = 0.50; fr[5,1] = 0.618; fr[7,1] = 1; } If 최종꼭지점[1] == "고점" and 최종꼭지점 == "저점" Then // 추세가 바뀔 때 피보나치 라인을 계산 { for j = 1 to 15 { If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 기존의 라인은 지우고 fr[j,2] = 고[1,1] - ((고[1,1] - 저[2,1]) * fr[j,1]); // 피보나치 비율을 곱해서 계산 fr[j,3] = TL_New(고[1,3],고[1,4],fr[j,2],sDate,sTime,fr[j,2]); // 라인을 생성 TL_SetExtRight(fr[j,3],true); } } Else If 최종꼭지점[1] == "저점" and 최종꼭지점 == "고점" Then { for j = 1 to 15 { If fr[j,3] > 0 Then TL_Delete(fr[j,3]); fr[j,2] = 저[1,1] + ((고[2,1] - 저[1,1]) * fr[j,1]); fr[j,3] = TL_New(저[1,3],저[1,4],fr[j,2],sDate,sTime,fr[j,2]); TL_SetExtRight(fr[j,3],true); } } Else // 추세변동이 없으면 기존 피보나치 라인을 연장한다. { for j = 1 to 15 { TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]); } } for j = 1 to 15 { If 수치표시 == 1 Then { If fr[j,4] > 0 Then Text_Delete(fr[j,4]); fr[j,4] = Text_New(고[1,3],고[1,4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 0, 1); Text_SetColor(fr[j,4], Lgreen); Text_SetLocation(fr[j,4], sdate, stime, fr[j,2]); } If 수치표시 == 1 Then { If fr[j,4] > 0 Then Text_Delete(fr[j,4]); fr[j,4] = Text_New(저[1,3],저[1,4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2)); Text_SetStyle(fr[j,4], 0, 1); Text_SetColor(fr[j,4], Lgreen); Text_SetLocation(fr[j,4], sdate, stime, fr[j,2]); }
프로필 이미지
2wnwn
2021-10-27
694
글번호 153201
지표
답변완료

수식 부탁드립니다.

첨부된 이미지 같이 가격 캔들과 다음수식과 다이버전스가 발생했을때 스윙로우, 스윙하이 함수를 이용하여 보조지표와 캔들 차트에 선이 그려지도록 수식이 작성될수 있을까요? 항상 감사합니다. Inputs: 카운팅시작일자(20211021), 카운팅시작시간(070000),Period(112); var : Tcond(false); var : sum(0); var : hh(0),ll(0),tl11(0),tl12(0),tl21(0),tl22(0); if sdate >= 카운팅시작일자 and stime >= 카운팅시작시간 Then Tcond = true; if Tcond == true Then { if (sdate != sdate[1] and stime >= 카운팅시작시간) or (sdate == sdate[1] and stime >= 카운팅시작시간 and stime[1] < 카운팅시작시간) Then if Bdate != Bdate[1] Then { var1 = 0; Var2 = 0; } if C > O Then var1 = var1+ v; if C < O Then Var2 = Var2+ v; Var3 = var1-Var2; Plot1(Var3,"누적",IFf(Var3 > 0,REd,BLUe)); PlotBaseLine1(0);
프로필 이미지
수색대대
2021-10-27
781
글번호 153200
지표
답변완료

지표 질문입니다

1. 전일하고 연속되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시 2. 당일부터 표시되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시 감사합니다
프로필 이미지
유튜버
2021-10-28
476
글번호 153199
지표
답변완료

부탁 드립니다.

항상 도움 주셔서 감사 드립니다. 타주기 수식 부탁 드립니다. 1)분봉에서 분봉 사용 2)분봉에서 일봉 사용 input:p(10),sig(30); var1=obv(); var2=ma(var1,p); var3=var1-var2; var4=ma(var3,sig); 참고 수식) input : n(numeric),ntime(numeric),P(numeric),sig(numeric); var : S1(0),D1(0),TM(0),TF(0),cnt(0),sum(0),mav(0); Array : diff[100](0),CC[100](0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then {
프로필 이미지
yes
2021-10-27
709
글번호 153198
지표
답변완료

문의 드립니다.

안녕하세요 항상 감사합니다. 1. 이평선 B가 우상향 일때 20봉전 이내에 이평선 A가 B를 골든크로스 해있다면 이평선 B가 우상하는 시점에 표시 2. 이평선이 상승중 또는 하락중일 때 색상말고 굵기를 다르게 할 수 있나요? 감사드립니다.
프로필 이미지
올독
2021-10-27
804
글번호 153197
시스템
답변완료

분봉 초카운트

안녕하세요 아래수식은 틱차트에서 틱카운트하는 수식으로서 마찬가지로 1분봉차트에서 1분을 초단위로 카운트되는 수식을 부탁드립니다 if Ticks == BarInterval then { Plot1(Ticks,"Ticks",RED); } Else { Plot1( Ticks,"Ticks",BLUE); } 감사합니다
프로필 이미지
bestkim
2021-10-27
576
글번호 153196
지표