커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

문의

답변주신 내용 참고삼아 제가 원했던 수식을 작성해보았습니다. input : uppyra검증1(0.00),상승pyra1(0.00),상승N1(20); input : uppyra검증2(0.00),상승pyra2(0.00),상승N2(10); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증1 and H >= LP+상승Pyra1 and ((C2[BarsSinceEntry]< 0.99) and (C2[BarsSinceEntry] >= 0.01) and MaxContracts < 상승N1)) Then buy("bb1"); if data2(C >= C2[BarsSinceEntry]+uppyra검증2 and H >= LP+상승Pyra2 and ((C2[BarsSinceEntry]< 2.99) and (C2[BarsSinceEntry] >= 1.00) and MaxContracts < 상승N2)) Then buy("bb2"); 그런데, 이 수식에 변경사항이 있습니다. 피라미딩수식은 그대로 살리고 그 안의 진입가격 구간만 밖으로 꺼내고 그 진입가격은 주종목을 따르는 형식이 필요합니다. 주종목 옵션 가격구간 (0.01 ~ 0.99)을 전제로 한 선물보조차트 피라미딩 방식1 주종목 옵션 가격구간 (1.00 ~ 2.99)을 전제로 한 선물보조차트 피라미딩 방식2 ************************************************************************************ 안녕하세요 예스스탁입니다. 첫매수가를 기준으로 구분해 드립니다. Input : 최대(2.99),최소(0.01); input: 시간1(090000),시간2(144500),봉갯수3(1),상승4(0.10),통제range5(10.00); input : uppyra검증(0.00),상승pyra(0.00),상승N1(10),상승N2(20); var : V1(0,data2),C2(0,data1),LP(0,data1); C2 = data2(c); if data2(bdate != bdate[1]) Then { v1 = 0; } if data2(stime >= 시간1 and stime < 시간2) Then { v1 = v1 + 1; if data2(v1 == 봉갯수3 and C > lowD(0)+상승4 and HighD(0) < lowD(0)+통제range5) and 최대 >= C and C >= 최소 Then buy(); } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증 and H >= LP+상승Pyra and ((C2[BarsSinceEntry]< 1.00 and MaxContracts < 상승N1) or (C2[BarsSinceEntry] >= 1.0 and MaxContracts < 상승N2))) Then buy("bb"); } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 진입가격별 피라미딩 > 옵션 진입가격에 제한을 둔 수식입니다. 진입가격별로 피라미딩 수량을 조절하는 부분만 변경해주세요. 피라미딩그룹은 2개면 됩니다. 예) 1.00 에서 2.99 구간 진입했을 때는 10개 적용 0.01 에서 0.99 구간 진입했을 때는 20개 적용 ******************************************************************************** 안녕하세요 예스스탁입니다. 첫매수가를 기준으로 구분해 드립니다. Input : 최대(2.99),최소(0.01); input: 시간1(090000),시간2(144500),봉갯수3(1),상승4(0.10),통제range5(10.00); input : uppyra검증(0.00),상승pyra(0.00),상승N1(10),상승N2(20); var : V1(0,data2),C2(0,data1),LP(0,data1); C2 = data2(c); if data2(bdate != bdate[1]) Then { v1 = 0; } if data2(stime >= 시간1 and stime < 시간2) Then { v1 = v1 + 1; if data2(v1 == 봉갯수3 and C > lowD(0)+상승4 and HighD(0) < lowD(0)+통제range5) and 최대 >= C and C >= 최소 Then buy(); } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증 and H >= LP+상승Pyra and ((C2[BarsSinceEntry]< 1.00 and MaxContracts < 상승N1) or (C2[BarsSinceEntry] >= 1.0 and MaxContracts < 상승N2))) Then buy("bb"); } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 진입가격별 피라미딩 > 옵션 진입가격에 제한을 둔 수식입니다. 진입가격별로 피라미딩 수량을 조절하는 부분만 변경해주세요. 피라미딩그룹은 2개면 됩니다. 예) 1.00 에서 2.99 구간 진입했을 때는 10개 적용 0.01 에서 0.99 구간 진입했을 때는 20개 적용 ******************************************************************************** Input : 최대(2.99),최소(0.01); input: 시간1(090000),시간2(144500),봉갯수3(1),상승4(0.10),통제range5(10.00); input : uppyra검증(0.00),상승pyra(0.00),상승N(0); var : V1(0,data2),C2(0,data1),LP(0,data1); C2 = data2(c); if data2(bdate != bdate[1]) Then { v1 = 0; } if data2(stime >= 시간1 and stime < 시간2) Then { v1 = v1 + 1; if data2(v1 == 봉갯수3 and C > lowD(0)+상승4 and HighD(0) < lowD(0)+통제range5) and 최대 >= C and C >= 최소 Then buy(); } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then LP = C2; if data2(C >= C2[BarsSinceEntry]+uppyra검증 and MaxContracts < 상승N and H >= LP+상승Pyra) Then buy("bb"); }
프로필 이미지
좌오비우오비
2020-02-21
312
글번호 136184
시스템
답변완료

수식문의 드립니다.

매수 : 두봉 의 최저점 대비 5 % 상승시 즉시 실시간 매수 메도 : 두봉 의 최고점 대비 5 % 하락시 즉시 실시간 매도 매도: 매입가 와 최고점 비교 수익의 5% 가 최고점 대비 하락시 즉시 실시간 매도 매도: 5개 봉 중 최고점대비 5% 하락시 즉시 실시간 매도
프로필 이미지
기관장
2020-02-21
299
글번호 136182
시스템
답변완료

제가 테스트로 만든 매도 시스템 인데요.

제가 테스트로 만든 매도 시스템 인데요. 1:50 분에 행잉맨이 발생하면 2:20 분에 close < high[1] 이면 매도 2:30 분에 close < high[1] 이면 매도 이런 단순한 프로그램인데요. 이 시스템이 생성한 파일을 보면 매도가 발생했다는 메시지가 나오는데요. 실제 매도는 안되요(매도 시스템을 적용했을때요) 한달 내내 이문제로 씨름 하고 있는데요 뭐가 문제인지 도저히 알수가 없어서.. 고수님들께 문의 드려요. 아래 파일을 한번 봐주시면 감사드리겠습니다. ---------------------------------------------------- input : starttime(220000),endtime(020000),intervalMin(2),intervalHammer(4),interval25(1), interval30(2),deceisionDuration(1),hat(1.3),head(1.4),pricegap(0.07); var : S1(0),D1(0),TM(0),TF(0); var : CurMin(0); var : curTime(0); var : con2(False); var : file_name("c:₩dantawang4-gc-xxxxxxxx.csv"); curMin = TimeToMinutes(time)-TimeToMinutes(sTime); if(NextBarOpen > 0) Then { Print(file_name,"bar open 봉번호=%f 봉시작=%f 봉끝=%f barsinceentry[0]=%f BarsSinceEntry=%f " ,index, sTime,Time, BarsSinceEntry[0],BarsSinceEntry); if HangingMan2(hat, head, pricegap) == True Then { con2 = True; Print(file_name, "xHangingMan2--------------------------------------------------------------------------!"); Print(file_name,"[x-curtime=%f time=%f curmin=%f con2=%s time to create hanginman", CurrentTime(),time, curMin, con2 ); Value1 = time; #CurrentTime() ; } } #MessageLog("curmin=%f intervalHammer=%f Close=%f", curmin, intervalHammer, Close); Print(file_name,"curTime=%f time=%f curMin >= IntervalHammer %f >= %f " ,CurrentTime(),time, curmin, intervalHammer); #Print(file_name, " %f current HangingMan2 time now!" , curTime); if curMin >= IntervalHammer then { Print(file_name," [curtime=%f time=%f Value1time=%f stime=%f con2=%s] <----------",CurrentTime(),time, Value1, stime,con2); Print(file_name," TimeToMinutes(time) - TimeToMinutes(Value1)=%f TimeToMinutes(currunt) - TimeToMinutes(Value1)=%f",TimeToMinutes(time) - TimeToMinutes(Value1), TimeToMinutes(CurrentTime()) - TimeToMinutes(Value1)); Print(file_name, "%f %f e(%f>=%f) " , TimeToMinutes(time) , TimeToMinutes(Value1) , TimeToMinutes(time) - TimeToMinutes(Value1) , intervalMin); if( con2 == True and ( TimeToMinutes(time) - TimeToMinutes(Value1) >= IntervalMin) ) Then { #curTime = CurrentTime() + 1 ; Print(file_name, "curTime=%f %f exit time!" ,CurrentTime(), Value1); Condition10 = False; Condition1 = False; con2 = False; Value10 = 0.0; } } #----해머나 행잉맨을 찾은 후에-------------------------------------------------------------------------- #-----condition10=true이면 #25-30 분 사이에 결정. Print(file_name , "%f curMin >= interval25 %f >= %f and %f < %f" ,time, curMin, interval25 ,curMin , Interval25 + deceisionDuration ); if curMin >= interval25 and curMin < Interval25 + deceisionDuration then { Print(file_name , "1---------------------------------------------"); Print(file_name , "curTime=%f time=%f Close=%f < Close[1]=%f ",CurrentTime(), time,Close, Close[1]); if( con2 == True and Close < Close[1] ) Then { #Sell("sell1"); #sell("s",AtMarket); Sell ("HM", AtStop,High[1]); MessageLog("HangingMan sell!"); Print(file_name, "curTime=%f time=%f HangingMan sell! ",CurrentTime(), time); Print(file_name,"curTime=%f time=%f High[1]=%f Low[1]=%f Close[1]=%f",CurrentTime(), time,High[1], Low[1], Close[1]); Condition10 = false; con2 = false; Condition1 = false; } } #----해머나 행잉맨을 찾은 후에-------------------------------------------------------------------------- #-----condition10=true이면 #30-35 분 사이에 결정. Print(file_name , "curTime=%f time=%f curMin >= interval30 %f >= %f and %f < %f" ,CurrentTime(), time,curMin, interval30 ,curMin , interval30 + deceisionDuration ); if curMin >= interval30 and curMin < Interval30 + deceisionDuration then { Print(file_name , "2---------------------------------------------"); Print(file_name , "curTime=%f time=%f Close < Close[1] Close=%f < Close[1]=%f ",CurrentTime(),time, Close, Close[1]); if( con2 == True and Close < Close[1] ) Then { #if MarketPosition[0] == 0 Then{ #Sell("sell2"); #sell("s2",AtMarket); Sell ("HM2", AtStop,High[1]); Print(file_name, "curTime=%f time=%f HangingMan sell! ",CurrentTime(), time); Print(file_name,"curTime=%f time=%f High[1]=%f Low[1]=%f Close[1]=%f",CurrentTime(), time,High[1], Low[1], Close[1]); #} Condition10 = false; con2 = false; Condition1 = false; #Value10 = 0.0; } } # Condition1 == true 이면 다음 시그널 시작 #특정 시간 이후 청산. if BarsSinceEntry == 1 Then { Print(file_name, "curTime=%f time=%f EXIT SHORT! ", CurrentTime(),time); exitShort(); } if MarketPosition[0] == -1 AND BarsSinceEntry == 0 AND High > High[1] Then { Print(file_name,"------------------------reached high!=============="); Print(file_name,"curTime=%f time=%f High[1]=%f", CurrentTime(),time,High[1]); Print(file_name,"------------------------reached high!=============="); exitShort(); } if MarketPosition[0] == -1 AND BarsSinceEntry == 1 AND High > High[2] Then { Print(file_name,"------------------------reached high!=============="); Print(file_name,"curTime=%f time=%f High[2]=%f", CurrentTime(), time,High[2]); Print(file_name,"------------------------reached high!=============="); exitShort(); }
프로필 이미지
초딩트레이더
2020-02-21
383
글번호 136177
시스템
답변완료

지표문의

안녕하세요 보내주신 내용 잘 받았습니다. 감사합니다. 그리고 이해했습니다. 그런데, 죄송하지만 제가 프로그램 및 컴퓨터를 잘 몰라서, 그냥 5분, 15분, 30분 60분, 360분 볼린져 밴드챠트를 15분 기준으로 작성해 주시면 않될련지요? 바로 복사해서 붙혀넣기만 하면 되게 부탁드립니다. 번거롭게해서 죄송하지만 부탁드립니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 지표문의 > 안녕하세요 예스스탁입니다. 1 타주기의 계산은 기본차트의 배수가 되는 주기만 가능합니다. 하나수식에서 여러 타주기는 시간상 모두 작성해 드릴수 없습니다. 아래식으로 기본차트 주기의 배수로 "타주기분"조정해서 반복적용하시면 됩니다. input : 타주기분(15),P(20),Dv(2); var : S1(0),D1(0),TM(0),TF(0); var : cnt(0),SumSqrt(0),Stdv(0); var : sum(0),BBmd(0),Bbup(0),BBdn(0); Array : 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%타주기분; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{ for cnt = 1 to 99{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then{ sum = 0; for cnt = 0 to P-1{ sum = sum + CC[cnt]; } BBmd = sum/P; SumSqrt = 0; For cnt = 0 To P - 1 { SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2; } Stdv = SquareRoot(SumSqrt / P); BBup = BBmd + (Dv * Stdv); BBdn = BBmd - (Dv * Stdv); plot1(BBmd); plot2(BBup); plot3(BBdn); } } 2 분봉에서 틱은 계산이 불가능합니다. 반대로 틱봉에서 분봉도 정확히 계산이 가능하지 않고 위 1번식 적용해서 근사값으로 보셔야 합니다. 틱봉에서 배수로 높은 다른 틱봉의 그리는 수식은 아래와 같습니다. 100틱봉에서 500틱은 N에 5로 지정해 주시면 됩니다. input : N(5),P(20),Dv(2); var : D1(0),TF(0),idx(0); var : cnt(0),SumSqrt(0),Stdv(0); var : sum(0),BBmd(0),Bbup(0),BBdn(0); Array : CC[100](0); if Bdate != Bdate[1] Then { D1 = sdate; idx = 0; } Else idx = idx+1; if D1 > 0 then { TF = idx%N; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then { for cnt = 1 to 99 { CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P] > 0 then { sum = 0; for cnt = 0 to P-1 { sum = sum + CC[cnt]; } BBmd = sum/P; SumSqrt = 0; For cnt = 0 To P - 1 { SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2; } Stdv = SquareRoot(SumSqrt / P); BBup = BBmd + (Dv * Stdv); BBdn = BBmd - (Dv * Stdv); plot1(BBmd); plot2(BBup); plot3(BBdn); } } 즐거운 하루되세요 > softtoug 님이 쓴 글입니다. > 제목 : 지표문의 > 안녕하세요 하기 지표문의 드립니다. 도움 부탁드립니다 * 한개의 챠트에 시간대별 볼린져 밴드를 그물망 챠트처럼 만들고 싶습니다. 5분, 15분, 30분, 60분, 360분 이렇게 5개의 시간대별 볼린져 밴드 챠트가 한 챠트에 보여지게 부탁드립니다. 기준은 15분 봉으로 부탁드립니다. - 옵션으로 상기 챠트에 900틱 시간대도 추가한 옵션 부탁드립니다. 감사합니다.
프로필 이미지
softtoug
2020-02-21
353
글번호 136176
지표
답변완료

산식검토

검색조건(30분봉 차트 기준) 1. 27%이상 상승한 장대가 33일내에 있을것 2. countdown( crossdown(stockD(20,12,12),20) , 80)>0 상기조건을 아래와같이 했는데 검색이 않됩니다 그리고 장대조건을 60일 이내로 하려고 했는데 30분봉차트와 500봉의 제한에 맞추다보니 아래산식에서33으로 됐습니다 60으로 할수 있는방법이 있을까요?? 일단은 검색식이 작동을 해야하는데 어디서 실수한건지??? [아래] Condition1= DayClose(0)/DayClose(1)>=1.27 ; If CountIF(Condition1==True,499)>0 and countdown( crossdown(stockD(20,12,12),20) , 80)>0 Then Find(1);
프로필 이미지
티끌
2020-02-21
302
글번호 136174
종목검색
답변완료

질문드립니다

안녕하세요 국선 3분봉에서 장시작과 동시에 첫번째 캔들이 20이평선을 터치하는 순간 매도진입시키는 방법이 궁금합니다. 감사합니다.
프로필 이미지
맘속의행복
2020-02-20
330
글번호 136173
시스템
답변완료

종목검색식 부탁합니다..

수고하십니다. 아래와 같은 내용의 식을 for문이나 array를 사용하여 간단하게 식 하나로 바꾸어 주시면 고맙겠습니다.. [어떤 함수를 사용해야 하는지 잘 모름...사용자 메뉴얼이 어디 있는지 알려주세요...] Q1]일봉 종목검색에서 오늘 종가가 월시가를 돌파하고, 종가가 월시가 위에 [계속] 존재하고 있는 종목을 검색 or 1일전에 종가가 월시가를 돌파하고, 종가가 그후로 월시가 위에 계속 존재하고 있는 종목을 검색 or 2일전에 종가가 월시가를 돌파하고, 종가가 그후로 월시가 위에 계속 존재하고 있는 종목을 검색 or ........ N일전에 종가가 월시가를 돌파하고, 종가가 그후로 월시가 위에 계속 존재하고 있는 종목을 검색 N이 큰 경우 위의 각각의 경우에 검색되는 모든 종목을 한 식으로 검색하여 전부 볼 수 있게하는 검색식 부탁합니다.. var1 = monthopen(0) ; if (crossup(c,var1) and countif(c>var1,1)==1) or (crossup(c[1],var1) and countif(c>var1,2)==2) or (crossup(c[2],var1) and countif(c>var1,3)==3) or ...... (crossup(c[N],var1) and countif(c>var1,N)==N) then Find(1); Q2] 월이 바뀐 경우, 위 로직에 전 달 월시가 var1[1]을 적용하려면 식이 어떻게 수정되어야 하는지요? 수고하세요..
프로필 이미지
오이도인
2020-02-21
323
글번호 136172
종목검색
답변완료

문의드립니다.

input : Period(12),Period1(20); input : P(20); mav = ma(C,P); var1 = trix(Period); var2 = ma(C,Period1); if crossup(var1,0) Then value1 = var2; if var2 > value1 Then value1 = var2; if CrossDown(var1,0) Then value2 = var2; if var2 < value2 Then value2 = var2; plot1(value1); plot2(value2); 에서 1. 매수 1-1 ) value1의 가격이 전봉과 같고 value2의 가격도 전봉과 같아야하고 value1의 가격과 value2의 가격폭은 45틱 이상이어야하며 전봉의 20이평가격이 전봉의 value2의 가격과같고 20 이평이 value2보다 커야하고 20 이평이 전봉보다 커야한다. ( 단, 종가가 value2보다 25틱 이상일경우 5봉이내에 음봉에서 매수 ) - 5봉이상이면 취소 1-2 ) value1의 가격이 전봉과 같고 value2의 가격도 전봉과 같아야하고 value1의 가격과 value2의 가격폭은 45틱 이상이어야하며 ( 단, value1의 가격이 전봉과 같지않으면 폭의 크기 45틱이상 조건무시 ) 저가는 value2보다 작거나 같고 종가는 value2보다 커야한다. 2. 매수청산 2-1 ) 매수조건 1-1) 2-2 ) 매수조건 1-2) 2-3 ) 매수이후 50틱 이상이면 5틱익절 ( 트레일링 ) 2-4 ) 매수이후 볼밴하단을 계속 확인하여 볼밴 촤상단의 15틱 밑에서 청산 >>> 저번에 작성해주신 ExitLong("btr",AtStop,highest(BBdn,BarsSinceEntry)-PriceScale*15); 를 적용하니 청산이 제대로 안되는것같은데 다시 검토부탁합니다. 2-5 ) value2 밑 15틱에서 손절 매도는 반대 제가 작성해서 적용해보니 제대로 작동이 안되는것 같아 다시 부탁드립니다.
프로필 이미지
as8282
2020-02-20
314
글번호 136171
시스템
답변완료

주문 가격 정정

안녕하세요, 1. 주문 취소 기능이 제공되는 지요 ? . 시뮬레이션할 때만이라도 취소 기능이 제공되면 유용할 것 같습니다. 2. 주문 취소가 안된다면 . buy("매수", AtStop, 가격1)로 주문을 한 상태에서 . 주문이 체결되기 전에 (즉 Marketposition이 0인 상태) . buy("매수", AtStop, 가격2)를 호출하면, . 기존 주문은 취소되고, 새로운 가격(가격2)으로 변경되는지요? * 피라미딩은 '허용안함'으로 설정되어 있습니다. 고맙습니다.
프로필 이미지
타타타
2020-02-20
365
글번호 136170
시스템
답변완료

어제 신호난거 오늘 보려면

수고하십니다 stochastics FAST (10, 5) 에서 어제 매수신호가 난걸 오늘 볼수있는 수식은 어떻게 하는지요? 감사합니다
프로필 이미지
골더
2020-02-20
388
글번호 136169
종목검색