커뮤니티

수정부탁드립니다

프로필 이미지
빙글이
2017-06-29 11:18:03
118
글번호 110811
답변완료
// 사용지표 SM CCI Average(14,100,-100,12,1) Params : Em_period1(3), Org_period1(5); Params : Period(14), UpBase(100), DnBase(-100), SignalPeriod(12), SignalType(1); Vars : SP(0), TickSize(0), OPP(0); Vars : st( 0 ), et( 0 ); V1 = Dayofweek((10000 * Year(D)) + (100 * 3) + 1); If V1 = 0 Then Value2 = 8 Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜 V2 = Dayofweek((10000 * Year(D)) + (100 * 11) + 1); If V2 = 0 Then Value4 = 1 Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜 If date > (10000 * Year(D)) + (100 * 3) + value2 And date < (10000 * Year(D)) + (100 * 11) + value4 Then Begin st = 070000; // 써머타임 적용 시, 장시작 시간 et = 060000; // 써머타임 적용 시, 장종료 시간 End Else Begin st = 080000; // 장 시작 시간 et = 070000; // 장 종료 시간 End; condition1 = (IntPortion(time/10000) > IntPortion(et/10000) And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1]; ///////////////////////////////////////////////////////////////// SP = SignalPosition; OPP = OpenPositionProfit; TickSize = OneTick * PriceScale; V0 = CCI(Period); V99 = XAverage(C, Em_period1); V98 = Average(C, Org_period1); If SignalType == 1 Then V1 = Average(V0, SignalPeriod) Else V1 = Xaverage(V0, SignalPeriod); // V0 = CCI , V1 = CCIAvg // 매수진입 Cond1 = CrossUp(V0 , V1); // 매수청산 Cond2 = CrossDown(V99, V98); // 매도진입 Cond3 = CrossDown(V0 , V1); // 매도청산 Cond4 = CrossUp(V99, V98); // 15틱 수익 상태 , AtStop Cond5 = (25 * TickSize <= OPP); MessageLog("OPP = %.2f Ts = %.2f", OPP, 15 * TIcksize); // CCI -150 Or + 150 , AtLimit Cond6 = (150 < ABS(V0)); If st < Time Or Time < et Then Begin If SP = 0 Then Begin If Cond1 Then Buy("Buy"); If Cond3 Then Sell("Sell"); End; If SP = 1 Then Begin If Cond2 Or Cond5 Then ExitLong("ExitL_P"); If Cond6 Then ExitLong("ExitL_L"); End; If Sp = -1 Then Begin If Cond4 Or Cond5 Then ExitShort("ExitS_P"); If Cond6 Then ExitShort("ExitS_L"); End; End; 위 수식을 예스랭귀지에 맞게 수정부탁드립니다 시그널메이커에서 작성된수식입니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-06-29 13:25:04

안녕하세요 예스스탁입니다. input : Em_period1(3), Org_period1(5); input : Period(14), UpBase(100), DnBase(-100), SignalPeriod(12), SignalType(1); Var : SP(0), OPP(0); Var : st(0), et(0),Year(0); var : V1(0),V2(0),v0(0),v99(0),v98(0); var : cond1(false),cond2(false),cond3(false),cond4(false),cond5(false),cond6(false); Year = int(sdate/10000); V1 = Dayofweek((10000 * Year) + (100 * 3) + 1); If V1 == 0 Then Value2 = 8; Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜 V2 = Dayofweek((10000 * Year) + (100 * 11) + 1); If V2 == 0 Then Value4 = 1; Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜 If date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4 Then Begin st = 070000; // 써머타임 적용 시, 장시작 시간 et = 060000; // 써머타임 적용 시, 장종료 시간 End Else Begin st = 080000; // 장 시작 시간 et = 070000; // 장 종료 시간 End; condition1 = (IntPortion(time/10000) > IntPortion(et/10000) And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1]; ///////////////////////////////////////////////////////////////// SP = MarketPosition; OPP = OpenPositionProfit; V0 = CCI(Period); V99 = ema(C, Em_period1); V98 = ma(C, Org_period1); var1 = ma(V0, SignalPeriod); var2 = ema(V0, SignalPeriod); If SignalType == 1 Then V1 = var1; Else V1 = var2; // V0 = CCI , V1 = CCIAvg // 매수진입 Cond1 = CrossUp(V0 , V1); // 매수청산 Cond2 = CrossDown(V99, V98); // 매도진입 Cond3 = CrossDown(V0 , V1); // 매도청산 Cond4 = CrossUp(V99, V98); // 15틱 수익 상태 , AtStop Cond5 = (25 * PriceScale <= OPP); // CCI -150 Or + 150 , AtLimit Cond6 = (150 < ABS(V0)); If st < sTime Or sTime < et Then Begin If SP == 0 Then Begin If Cond1 Then Buy("Buy"); If Cond3 Then Sell("Sell"); End; If SP == 1 Then Begin If Cond2 Or Cond5 Then ExitLong("ExitL_P"); If Cond6 Then ExitLong("ExitL_L"); End; If Sp == -1 Then Begin If Cond4 Or Cond5 Then ExitShort("ExitS_P"); If Cond6 Then ExitShort("ExitS_L"); End; End; 즐거운 하루되세요 > 빙글이 님이 쓴 글입니다. > 제목 : 수정부탁드립니다 > // 사용지표 SM CCI Average(14,100,-100,12,1) Params : Em_period1(3), Org_period1(5); Params : Period(14), UpBase(100), DnBase(-100), SignalPeriod(12), SignalType(1); Vars : SP(0), TickSize(0), OPP(0); Vars : st( 0 ), et( 0 ); V1 = Dayofweek((10000 * Year(D)) + (100 * 3) + 1); If V1 = 0 Then Value2 = 8 Else Value2 = 15 - V1; // 3월 두번째 일요일 날짜 V2 = Dayofweek((10000 * Year(D)) + (100 * 11) + 1); If V2 = 0 Then Value4 = 1 Else value4 = 8 - V2; // 11월 첫번째 일요일 날짜 If date > (10000 * Year(D)) + (100 * 3) + value2 And date < (10000 * Year(D)) + (100 * 11) + value4 Then Begin st = 070000; // 써머타임 적용 시, 장시작 시간 et = 060000; // 써머타임 적용 시, 장종료 시간 End Else Begin st = 080000; // 장 시작 시간 et = 070000; // 장 종료 시간 End; condition1 = (IntPortion(time/10000) > IntPortion(et/10000) And IntPortion(time[1]/10000) <= IntPortion(et/10000)) Or st <> st[1]; ///////////////////////////////////////////////////////////////// SP = SignalPosition; OPP = OpenPositionProfit; TickSize = OneTick * PriceScale; V0 = CCI(Period); V99 = XAverage(C, Em_period1); V98 = Average(C, Org_period1); If SignalType == 1 Then V1 = Average(V0, SignalPeriod) Else V1 = Xaverage(V0, SignalPeriod); // V0 = CCI , V1 = CCIAvg // 매수진입 Cond1 = CrossUp(V0 , V1); // 매수청산 Cond2 = CrossDown(V99, V98); // 매도진입 Cond3 = CrossDown(V0 , V1); // 매도청산 Cond4 = CrossUp(V99, V98); // 15틱 수익 상태 , AtStop Cond5 = (25 * TickSize <= OPP); MessageLog("OPP = %.2f Ts = %.2f", OPP, 15 * TIcksize); // CCI -150 Or + 150 , AtLimit Cond6 = (150 < ABS(V0)); If st < Time Or Time < et Then Begin If SP = 0 Then Begin If Cond1 Then Buy("Buy"); If Cond3 Then Sell("Sell"); End; If SP = 1 Then Begin If Cond2 Or Cond5 Then ExitLong("ExitL_P"); If Cond6 Then ExitLong("ExitL_L"); End; If Sp = -1 Then Begin If Cond4 Or Cond5 Then ExitShort("ExitS_P"); If Cond6 Then ExitShort("ExitS_L"); End; End; 위 수식을 예스랭귀지에 맞게 수정부탁드립니다 시그널메이커에서 작성된수식입니다