커뮤니티
수정부탁드립니다
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;
위 수식을 예스랭귀지에 맞게 수정부탁드립니다
시그널메이커에서 작성된수식입니다
다음글
이전글