답변완료
수식문의
var : cnt(0) ;input : period( 200) ,period2(100), intv(5);HH=Highest(H, period);cnt=Countif(Crossup(H,HH), period2);위와같이 하면 HH를 돌파하는 횟수를 모두 표현할 수 있는데 모든 횟수를 알고 싶은 게 아니라 이전 돌파와 다음 돌파 사이에 intv봉(5) 간격이 있어야횟수가 +1이 되도록 카운트를 하고 싶습니다. 예를 들어 intv가 5 이면 4일전에 돌파가 있고 2일전에 돌파가 있어도 cnt 는 +2가 되지 않고 +1이 되도록하고 싶습니다. ※ 주석도 함께 부탁드립니다. 수식을 이해 못하면 활용을 할 수가 없더군요. 항상 친절한 답변에 감사드립니다.^^
답변완료
종목검색식 부탁드림니다.
항상 노고에 감사드림니다.아래의 수식을 종목검색식으로 부탁드림니다.기간 = 20;M = MA(C, 기간);/* ① 최근 10봉 이상 상승 후 하락 전환 → 고정 저항선 */상승 = M > REF(M,1);연속상승 = SUM(상승,10)==10;하락전환 = (M < REF(M,1)) AND (REF(M,1) > REF(M,2));고점조건 = REF(연속상승,1) AND 하락전환;/* ② 변형 저항선 (이전 고점의 M 값 고정) */저항선 = VALUEWHEN(1, 고점조건, REF(M,1));/* ③ 저항선 돌파 조건 */Signal = CROSSUP(C, 저항선);/* ④ 신호 출력 */Signal;
답변완료
해외선물(나스닥) 섬머타임 타임에 따른 시작시간과 종료시간
해외선물(나스닥)은 서머타임을 실시함에 따라 시작시간과 종료시간이 1시간씩 변경이 됩니다.시스템에 적용시에는 시작시간과 종료시간을 변경하면 되지만, 프리시간과 본장에 사용하는 조건식을 하나로 사용하면 큰 문제점이 없지만 프리시간과 본장을 구분하여 사용(움직이는 흐름이 다르기 때문에 달리 사용)하여 시뮬레이션을 돌리면 거래시점이 시작 시간과 종료 시간이 각 1시간이 차이가 있어 변수값이 달라져 실제 적용시에는 많은 애로점이 있습니다.고로 서머타임 기간에는 서머타임 시간에 맞춰 시뮬레이션 하고 그렇지 않은 때에는 그렇지 않은 시간때에 시뮬레이션이 되도록 하나의 코딩으로 가능토록 코딩을 부탁드려봅니다.제가 본장은 동절기에는 StartTime(211400),EndTime(055623) 서머타임시에는 StartTime(211400),EndTime(055623) 을 사용합니다. 그렇다 보니 적용되지 않은 시간대가 시뮬레이션에 포함됨으로써 변수값을 적용하기가 어렵습니다.이를 해소토록 통함된 코딩을 부탁드립니다.
답변완료
마틴적용 수정 부탁합니다
Input : P(100), MartinMult(2), BaseQty(1);Vars : T(0), Bcond(False), Scond(False), var1(0), var2(0), value3(0), MartinCount(0), LossTrigger(0), PriceStep(PriceScale*5);value3 = MA(C, P);var1 = MA(C, 36);var2 = (Highest(High, 52)[25] + Lowest(Low, 52)[25]) / 2;//------------------------------// 추세 전환시 초기화//------------------------------if CrossUp(C, var1) then begin T = 1; Bcond = False; MartinCount = 0;end;if CrossDown(C, var1) then begin T = -1; Scond = False; MartinCount = 0;end;//------------------------------// 매수 조건//------------------------------if stime >= 093000 and stime < 150000 and T = 1 then begin if L >= var2 + PriceScale*2 then begin if TotalTrades = 0 or (MarketPosition = -1 and BarsSinceEntry >= 130 and BarsSinceExit(1) >= 43) or (TotalTrades >= 1 and MarketPosition = 0 and BarsSinceExit(1) >= 130) then Bcond = True; end; if Bcond and C > value3 then begin Buy("B1") BaseQty contracts at var1 + 0.2 limit; MartinCount = 1; LossTrigger = EntryPrice - PriceStep; // 마틴 기준선 설정 end; // 마틴 진입 if MarketPosition = 1 and MartinCount < 3 then begin if C <= LossTrigger then begin Buy("B-Martin") BaseQty * MartinMult contracts at Market; MartinCount = MartinCount + 1; LossTrigger = EntryPrice - PriceStep; // 다음 회차 기준선 업데이트 end; end;end;//------------------------------// 매도 조건//------------------------------if stime >= 093000 and stime < 150000 and T = -1 then begin if H <= var2 - PriceScale*2 then begin if TotalTrades = 0 or (MarketPosition = 1 and BarsSinceEntry >= 130 and BarsSinceExit(1) >= 43) or (TotalTrades >= 1 and MarketPosition = 0 and BarsSinceExit(1) >= 130) then Scond = True; end; if Scond and C < value3 then begin SellShort("S1") BaseQty contracts at var1 - 0.2 limit; MartinCount = 1; LossTrigger = EntryPrice + PriceStep; end; // 마틴 진입 if MarketPosition = -1 and MartinCount < 3 then begin if C >= LossTrigger then begin SellShort("S-Martin") BaseQty * MartinMult contracts at Market; MartinCount = MartinCount + 1; LossTrigger = EntryPrice + PriceStep; end; end;end;//------------------------------// 청산 시 초기화//------------------------------if MarketPosition = 0 then MartinCount = 0;