커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

수식 문의 드립니다

수고하십니다 전주봉 5 10 이평상향크로스 발싱시 분봉에 5 10 이평선을 추세선으로 그리고십 어요 다른분게서 무의 수식중에 Array:고점[10,2](0),저점[10,2](0); 이런문법 설명종 부작드립니다
프로필 이미지
커피한잔
2022-07-06
1256
글번호 160475
검색
답변완료

수식 질문드립니다.

input : a(1),b(1),,,,,,,,,, z(1); 26개를 0/1 조합해보면, 총 2의 26승이 나옵니다. 이걸 시뮬하려면 총 67108864 개라서 AMD 5950x 기준 20년간 시뮬해야합니다. intel 11500 이라면 200년 가까이 시뮬 돌려야합니다. 현실적으로 불가능하고, a+b+c+.............+z >= 13 인 경우만 시뮬할 방법이 있을지 궁금합니다. 이정도만 되도 30분 안쪽으로 해결 될듯합니다.
프로필 이미지
캣피쉬
2022-07-06
1386
글번호 160474
시스템
답변완료

문의 드립니다

안녕하세요 수정할 부분이 있어서 다시 올립니다~ 시가 종가 차이가 n틱 이상일때 1회씩 카운팅하는 부분에서 "마지막 진입 가격보다 아래 있을때만"이란 조건도 만족할때 카운팅하도록 수정할수 있을까요~? >>>안녕하세요 예스스탁입니다. 1 input: n(30), k(5); var: counting(0); if Bdate != Bdate[1] or (MarketPosition == 0 and TotalTrades > TotalTrades[1]) Then counting = 0; if C <= O-PriceScale*n Then { counting = counting+1; if counting >= 3 and counting <= k+2 Then Buy("b"); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { var1 = CurrentContracts-CurrentContracts[1]; Condition1 = true; } if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx1" Then { Condition1 = False; counting = 1; } if Condition1 == true Then ExitLong("bx1",AtLimit,lowest(L,BarsSinceEntry)+PriceScale*n,"",MaxContracts-var1,1); ExitLong("bx2",AtLimit,lowest(L,BarsSinceEntry)+PriceScale*n*2); } } 2 input: n(3), k(5); var: counting(0); if Bdate != Bdate[1] or (MarketPosition == 0 and TotalTrades > TotalTrades[1]) Then counting = 0; if C <= O*(1-n/100) Then { counting = counting+1; if counting >= 3 and counting <= k+2 Then Buy("b"); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { var1 = CurrentContracts-CurrentContracts[1]; Condition1 = true; } if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx1" Then { Condition1 = False; counting = 1; } if Condition1 == true Then ExitLong("bx1",AtLimit,lowest(L,BarsSinceEntry)*(1+n/100),"",MaxContracts-var1,1); ExitLong("bx2",AtLimit,lowest(L,BarsSinceEntry)*(1+(n*2)/100)); } } 즐거운 하루되세요 > JTH 님이 쓴 글입니다. > 제목 : 문의 드립니다 > input: n(30), k(5); var: counting(0); 분봉 마감에서 시가 - 종가 차이가 n틱을 넘게 하락하면 1회로 카운팅하여, 3회 카운팅된때부터 다음봉 시가에 1차 매수 4회 카운팅된 후 다음봉 시가에 2차 매수 K+2회 카운팅 된 후에 다음봉 시가에 k차 매수 매수가 시작된 이후부터 최저가에서 n틱 상승 가격에 k-1회 매수분 물량 매도 카운팅은 1회로 초기화 최저가에서 2n틱 상승 가격에 나머지 1회 매수분 물량 매도 카운팅은 0회로 초기화 *n틱 대신에 n%로 바꾼 수식도 부탁드립니다
프로필 이미지
JTH
2022-07-06
1480
글번호 160473
시스템
답변완료

안녕하세요

혹시 아래 수식을 당일기준으로 변경 가능할까요? 전일종가랑 이어지지않고 당일기준으로 부탁드리겟습니다! Input : shortPeriod(5), longPeriod(20); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { PlotPaintBar(H,L,"강조",Red,Def,4); } # 매도/매수청산 If CrossDown(value1, value2) Then { PlotPaintBar(H,L,"강조",Blue,Def,4); }
프로필 이미지
최원석
2022-07-05
1498
글번호 160472
강조
답변완료

매도 청산식 요청드립니다.

아래의 식은 예전에 요청드렸던 분할매도청산식인데 수정이 필요한 부분이 있어 요청을 드립니다. 예를 들어 3%,4%,5%,7%,10% 차례대로 분할매도청산 식에서 평단가가 3%가 되었을때 매도를 안하다가 4% 가 되면 4%로 매도되고 주가가 떨어지면서 3%가 매도가 됩니다. 결과론적으로 condition2 가 매도가 되어야 condition1 이 시스템식이 적용됩니다. 확인좀 부탁드리겠습니다. 모가 문제인지..ㅜ.ㅜ -------------------------------------------------------------------------------- #매수진입 if MarketPosition == 1 Then { #전봉대비 수량 감소(일부 청산발생을 위미) if CurrentContracts < CurrentContracts[1] Then { #청산가 저장 var1 = LatestExitPrice(0); Condition1 = False; Condition2 = False; Condition3 = False; Condition4 = False; Condition5 = False; } #전봉대비 수량 증가(추가 진입발생을 의미) if CurrentContracts > CurrentContracts[1] Then { #현재수량 저장 Var3 = CurrentContracts; Condition1 = False; Condition2 = False; Condition3 = False; Condition4 = False; Condition5 = False; } #일부청산이 한번이상 발생하고 #현재 시간이 일부청산후 10분 이후이고 #종가가 청산가 보다 작으면 #전량 청산 if var1 > 0 and C < AvgEntryPrice*1.007 then ExitLong("bx"); #평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산 if Condition1 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수"))Then ExitLong("3%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.4),1); #평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산 if Condition2 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then ExitLong("4%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.3),1); #평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Condition3 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor(Var3*0.1),1); #평단가+7%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Condition4 == False AND ((LatestEntryName(0) == "A매수") OR (LatestEntryName(0) == "B매수") or (LatestEntryName(0) == "C매수")) Then ExitLong("7%익절",AtLimit,AvgEntryPrice*1.07,"",Floor(Var3*0.1),1); #평단가+10%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 전량 청산 ExitLong("10%익절",AtLimit,AvgEntryPrice*1.10); #평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산 if Condition1 == False AND ((LatestEntryName(0) == "D매수"))Then ExitLong("1-D%익절",AtLimit,AvgEntryPrice*1.01,"",Floor(Var3*0.3),1); #평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산 if Condition2 == False AND ((LatestEntryName(0) == "D매수")) Then ExitLong("2-D%익절",AtLimit,AvgEntryPrice*1.02,"",Floor(Var3*0.3),1); #평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Condition3 == False AND ((LatestEntryName(0) == "D매수")) Then ExitLong("3-D%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.3),1); #평단가+6%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Condition4 == False AND ((LatestEntryName(0) == "D매수")) Then ExitLong("4-D%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.1),1); #평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산 if Condition1 == False AND ((LatestEntryName(0) == "E매수"))Then ExitLong("본절",AtLimit,AvgEntryPrice,"",Floor(Var3*0.6),1); #평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산 if Condition2 == False AND ((LatestEntryName(0) == "E매수")) Then ExitLong("1-E%익절",AtLimit,AvgEntryPrice*1.01,"",Floor(Var3*0.3),1); #평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Condition3 == False AND ((LatestEntryName(0) == "E매수")) Then ExitLong("2-E%익절",AtLimit,AvgEntryPrice*1.02,"",Floor(Var3*0.1),1); } Else#매수진입중이 아니면 { #변수 0으로 초기화 var1 = 0; Var2 = 0; } if MarketPosition == 1 Then ExitLong("손절",AtStoP,손절);
프로필 이미지
맴맴잉
2022-07-05
1493
글번호 160471
시스템
답변완료

피보나치 지표

안녕하세요. 해외선물 지표 중 피보나치 되돌림 지표가 있나요? (정확한 명칭이 피보나치 되돌림 인지는 모르겠습니다. 없다면 피보나치 비율을 적용할 수 있는 지표를 만들어 주실수 있습니까?
프로필 이미지
부활
2022-07-05
1457
글번호 160470
지표
답변완료

수식 부탁드립니다.

Input:전환비율(5); input : StartTime(090000),EndTime(055500); Input :익절(25),손절(33),당일수익(45),당일손실(50); Var : N1(0),dayPl(0),Tcond(false),Xcond(false); Var : j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""); var : TL1(0),Text1(0),ADXV1(0),tl2(0),tl3(0),tx2(0),tx3(0),t(0); Array:고[10,4](0),저[10,4](0); HH = H; LL = L; If Index == 0 Then { 고[1,1] = HH; 고[1,2] = 0; 고[1,3] = sDate; 고[1,4] = sTime; 저[1,1] = LL; 저[1,2] = 0; 저[1,3] = sDate; 저[1,4] = sTime; } If Index > 0 Then { hiBar = hiBar + 1; loBar = loBar + 1; } If HH[hiBar] < HH Then hiBar = 0; If LL[loBar] > LL Then loBar = 0; Condition1 = 저[1,1] * (1 + (전환비율/100)) < HH and hiBar == 0; Condition2 = 고[1,1] * (1 - (전환비율/100)) > LL and loBar == 0; 처리구분 = ""; 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 { T = 1; If 최종꼭지점 == "저점" Then { TL_SetEnd(TL2,저[1,3],저[1,4],고[1,1]* (1 - (전환비율/100)) ); Text_SetLocation(TX2,저[1,3],저[1,4],고[1,1]* (1 - (전환비율/100)) ); For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH[hiBar]; 고[1,2] = Index - hiBar; 고[1,3] = sDate[hiBar]; 고[1,4] = sTime[hiBar]; hiBar = -1; loBar = -1; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetSize(TL1,1); TL_SetColor(TL1,RED); TL2 = TL_New(고[1,3],고[1,4],고[1,1]*(1-(전환비율/100)) ,NextBarSdate,NextBarStime,고[1,1]*(1-(전환비율/100)) ); TL_SetColor(TL2,Cyan); TL_SetStyle(TL2,3); Tx2 = Text_New(NextBarSdate,NextBarStime,고[1,1]*(1-(전환비율/100)),NumToStr(고[1,1]*(1-(전환비율/100)),2)); Text_SetColor(Tx2,Cyan); } Else If 고[1,1] < HH[hiBar] Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH[hiBar]; 고[1,2] = Index - hiBar; 고[1,3] = sDate[hiBar]; 고[1,4] = sTime[hiBar]; hiBar = -1; loBar = -1; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); TL_SetBegin(TL2,고[1,3],고[1,4],고[1,1]* (1-(전환비율/100)) ); Text_SetString(TX2,NumToStr(고[1,1]*(1-(전환비율/100)),2)); } 최종꼭지점 = "고점"; } If 처리구분 == "저점처리" Then { t = -1; If 최종꼭지점 == "고점" Then { TL_SetEnd(TL3,고[1,3],고[1,4],저[1,1]* (1 + (전환비율/100)) ); Text_SetLocation(TX3,고[1,3],고[1,4],저[1,1]* (1 + (전환비율/100)) ); For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL[loBar]; 저[1,2] = Index - loBar; 저[1,3] = sDate[loBar]; 저[1,4] = sTime[loBar]; hiBar = -1; loBar = -1; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetSize(TL1,1); TL_SetColor(TL1,BLUE); TL3 = TL_New(저[1,3],저[1,4],저[1,1]* (1 + (전환비율/100)) ,NextBarSdate,NextBarStime,저[1,1]* (1 + (전환비율/100)) ); TL_SetColor(TL3,Magenta); TL_SetStyle(TL3,3); TX3 = Text_New(NextBarSdate,NextBarStime,저[1,1]*(1+(전환비율/100)),NumToStr(저[1,1]*(1+(전환비율/100)),2)); Text_SetColor(TX3,Magenta); } Else If 저[1,1] > LL[loBar] Then { 저[1,1] = LL[loBar]; 저[1,2] = Index - loBar; 저[1,3] = sDate[loBar]; 저[1,4] = sTime[loBar]; hiBar = -1; loBar = -1; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); TL_SetBegin(TL3,저[1,3],저[1,4],저[1,1]* (1 + (전환비율/100)) ); Text_SetString(TX3,NumToStr(저[1,1]*(1+(전환비율/100)),2)); } 최종꼭지점 = "저점"; } TL_SetEnd(TL2,NextBarSdate,NextBarStime,고[1,1]* (1 - (전환비율/100)) ); Text_SetLocation(TX2,NextBarSdate,NextBarStime,고[1,1]* (1 - (전환비율/100)) ); TL_SetEnd(TL3,NextBarSdate,NextBarStime,저[1,1]* (1 + (전환비율/100)) ); Text_SetLocation(TX3,NextBarSdate,NextBarStime,저[1,1]* (1 + (전환비율/100)) ); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } 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; Xcond = false; N1 = NetProfit; IF Endtime <= starttime Then { SetStopEndofday(0); } } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then Xcond = true; } if Tcond == true and Xcond == false then { if MarketPosition >= 0 and T == 1 and L > 고[1,1]* (1 - (전환비율/100)) Then Sell("s",AtStop,고[1,1]* (1 - (전환비율/100))); if MarketPosition <= 0 and T == -1 and H < 저[1,1]* (1 + (전환비율/100)) Then Buy("b",AtStop,저[1,1]* (1 + (전환비율/100))); } if MarketPosition == 1 then { ExitLong("bl",AtStop, max(EntryPrice-손절,고[1,1]* (1 - (전환비율/100)))); ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then { ExitShort("sl",AtStop, min(EntryPrice+손절,저[1,1]* (1 + (전환비율/100)))); ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); } SetStopProfittarget(익절,PointStop); SetStopLoss(손절,PointStop); ============================================================================ 1.그 동안 만들어주신 시스템으로 짜집기해서 만들어 봤는데, 맞는지 검토 한번 해주세요 # 0. 진입조건 : 전환비율(분홍점선) 돌파시 매수, 파란점선 붕괴시 매도 # - 종가봉 완성 전에 조건만족시 즉시 진입 #1. 매매시간조정 09:00~익일 05:55 #2. 1회 매매시 익절 25pt, 손절 33pt #3. 하루 수익 45pt, 하루 손실 50pt 달성시 매매중지 2. 다음 조건으로 시스템 하나 더 부탁드립니다. # 0. 진입조건 : 전환비율(분홍점선)+7pt 돌파시 매도, 전환비율(파란점선)-7pt 붕괴시 매수 # - 종가봉 완성 전에 조건만족시 즉시 진입 # 1~3. 조건은 동일
프로필 이미지
제이디1
2022-07-05
1668
글번호 160468
시스템

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

프로필 이미지
hakona
2022-07-06
238
글번호 160467
시스템
답변완료

옵션 매매건수 데이터

시스템트레이딩 초보라서 그러는데 참조데이터에 선물 데이터 같은 옵션 매수호가 총건수, 옵션 매도호가 총건수 추가하는 방법 좀 알려주시면 감사하겠습니다.
프로필 이미지
자선사업가
2022-07-05
1314
글번호 160466
지표
답변완료

동일전략만 중복제한

안녀하세요. 아래 다른 글에서 하루한번만 진입하도록 제한하는 방식을 entry를 사용하여 다음과 같이 알려주셨습니다. -------------------------------- if Bdate != Bdate[1] Then entry = 0; if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; --------------------------------- 그런데, 만일 아래와 같이 2개의 전략이 합성된 시스템을 운용중일경우 ------------------------- if crossup(c,2*DayHigh(1)) then { buy("매수1"); } if crossup(c,2*Dayclose(1)) then { buy("매수2); } -------------------------------------- entry<1로 제한하면 어느전략이든지 관계없이 하루에 1번만 진입하게 되는것 같습니다. 저는 동일한 전략일경우에만 하루1번만으로 제한하고 싶습니다. (즉, 매수1이후에 매수2신호가 뜨면 허용되도록) 어떻게 수식을 작성하면 될런지요?
프로필 이미지
건곤대
2022-07-05
1386
글번호 160465
시스템