커뮤니티
시스템식 부탁드립니다
2013-08-24 11:50:15
165
글번호 66791
아래 수식은 smi 를 이용해서 신호가 나올때 곧바로 진입하지 말고 몇개봉 이내에서
5틱 유리하게 진입하라는 식입니다
이를 스토캐스틱 클래식을 이용하여 동일한 식을 예스로 만들어 주시면 감사하겠습니다..
Params : 기간(17),값1(8),값2(8), 시그널기간(4)
Var : StMomentum(0), StMomentumSig(0), CrossOver(False), CrossUnder(False)
Var : OverBought(False), OverSold(False), OverPrice(0), UnderPrice(0)
Var : BarNum(0), OverNum(0), UnderNum(0)
BarNum = BarNum + 1 //봉의 번호
StMomentum = (100*(EMA(EMA((C-0.5*(Highest(H,기간)+lowest(L,기간))),값1),값2))/(0.5*EMA(EMA((highest(H,기간)-lowest(L,기간)),값1),값2)))
StMomentumSig = EMA((100*(EMA(EMA((C-0.5*(highest(H,기간)+lowest(L,기간))),값1),값2))/(0.5*EMA(EMA((highest(H,기간)-lowest(L,기간)),값1),값2))),시그널기간)
CrossOver = StMomentum Cross Over StMomentumSig //상향돌파
CrossUnder = StMomentum Cross Under StMomentumSig //하향돌파
OverBought = StMomentum >= 50 //과매수
OverSold = StMomentum <= -50 //과매도
IF CrossOver then OverNum = BarNum End if //최근 상향돌파시점의 봉번호
IF CrossUnder then UnderNum = BarNum End if//최근 하향돌파시점의 봉번호
//돌파시 종가
IF CrossOver = True Then OverPrice = Close End if
IF CrossUnder = True Then UnderPrice = Close End if
//진입
If (BarNum-OverNum)>=0 And (BarNum-OverNum)<=3
And CrossUnder=False
And OverBought=False Then
Buy("B1") Next Bar at OverPrice - 5 Ticks Limit
End if
// (BarNum-OverNum)>=0 And (BarNum-OverNum)<=3
// 상향돌파 이후 3봉 경과전에
// CrossUnder=False 현재봉에서는 반대방향(하향돌파)이 아닐때
// OverBought=False 과매수 구간이 아닐때
// Buy Next Bar at OverPrice - 5 Ticks Limit
// 조건만족후 조건만족시 종가에서 5 Tick 이하로 도달시 매수
//추가
If (BarNum-OverNum)=3 And CrossUnder=False And OverBought=False Then
Buy("B2") Next Bar at Market
End if
//4봉에서 시장가로 진입하라는 로직
If (BarNum-UnderNum)>=0 And (BarNum-UnderNum)<=2
And CrossOver=False
And OverSold=False Then
Sell("S1") Next Bar at UnderPrice + 3 Ticks Limit
End if
// If (BarNum-UnderNum)>=0 And (BarNum-UnderNum)<=2
// 하향돌파 이후 2개봉 경과전에
// CrossOver=False 현재봉에서는 반대방향(상향돌파)이 아닐때
// OverSold=False 과매도 구간이 아닐때
//Sell Next Bar at UnderPrice + 3 Ticks Limit
// 조건만족후 조건만족시 종가에서 +3 Tick 이상 도달시 매도
//추가
If (BarNum-UnderNum)=3 And CrossOver=False And OverSold=False Then
Sell("S2") Next Bar at Market
End if
//4봉에서 시장가로 진입하라는 로직
//청산
If CrossOver Then //하향돌파시 매수잔고 청산
ExitLong Next Bar at Market
End if
If CrossUnder Then //상향돌파시 매도잔고 청산
ExitShort Next Bar at Market
End if
//청산추가
SetTrailingStop(58 Ticks, 58 Ticks, "Point") //TrailingStop 추가
SetProfitTarget(40 Ticks, "Point") //목표수익 추가
SetStopLoss(20 Ticks, "Point") //스탑로스 추가
스토클래식 클래식 시스템식입니다
Params : HighLowTerm(5), kLength(3), dLength(3), OverBought(80), OverSold(20)
Var : kClassic(0), dClassic(0)
KClassic = MAFC(FastK(High,Low,Close,HighLowTerm), kLength)
DClassic = MAFC(KClassic,dLength)
If KClassic Cross Over DClassic And KClassic <=OverSold Then
Buy Next Bar at Market
End if
If KClassic Cross under DClassic And KClassic >=Overbought Then
sell Next Bar at Market
End if
감사합니다
답변 1
예스스탁 예스스탁 답변
2013-08-26 09:41:16
안녕하세요
예스스탁입니다.
input : HighLowTerm(5), kLength(3), dLength(3),OverS(20),OverB(80) ;
Var : OverBought(false),OverSold(false),kClassic(0), dClassic(0),CrossOver(False), CrossUnder(False);
Var : OverPrice(0), UnderPrice(0);
Var : BarNum(0), OverNum(0), UnderNum(0);
BarNum = BarNum + 1;
KClassic = MA(FastK(HighLowTerm), kLength);
DClassic = MA(KClassic,dLength);
OverBought = KClassic >= OverB; //과매수
OverSold = KClassic <= OverS; //과매도
CrossOver = crossup(kClassic,DClassic) and OverSold == true;
CrossUnder = CrossDown(kClassic,DClassic) and OverBought == true;
IF CrossOver then OverNum = BarNum;
IF CrossUnder then UnderNum = BarNum;
//돌파시 종가
IF CrossOver == True Then OverPrice = Close;
IF CrossUnder == True Then UnderPrice = Close;
//진입
If MarketPosition <= 0 and
(BarNum-OverNum)>=0 And (BarNum-OverNum)<=3
And CrossUnder==False
And OverBought==False Then
Buy("B1",atlimit,OverPrice - PriceScale*5);
// (BarNum-OverNum)>=0 And (BarNum-OverNum)<=3
// 상향돌파 이후 3봉 경과전에
// CrossUnder=False 현재봉에서는 반대방향(하향돌파)이 아닐때
// OverBought=False 과매수 구간이 아닐때
// Buy Next Bar at OverPrice - 5 Ticks Limit
// 조건만족후 조건만족시 종가에서 5 Tick 이하로 도달시 매수
//추가
If MarketPosition <= 0 and
(BarNum-OverNum)==3 And CrossUnder==False And OverBought==False Then
Buy("B2",AtMarket);
//4봉에서 시장가로 진입하라는 로직
If MarketPosition >= 0 and
(BarNum-UnderNum)>=0 And (BarNum-UnderNum)<=2
And CrossOver==False
And OverSold==False Then
Sell("S1",atlimit,UnderPrice + PriceScale*3);
// If (BarNum-UnderNum)>=0 And (BarNum-UnderNum)<=2
// 하향돌파 이후 2개봉 경과전에
// CrossOver=False 현재봉에서는 반대방향(상향돌파)이 아닐때
// OverSold=False 과매도 구간이 아닐때
//Sell Next Bar at UnderPrice + 3 Ticks Limit
// 조건만족후 조건만족시 종가에서 +3 Tick 이상 도달시 매도
//추가
If MarketPosition >= 0 and
(BarNum-UnderNum)==3 And CrossOver==False And OverSold==False Then
Sell("S2",AtMarket);
//4봉에서 시장가로 진입하라는 로직
//청산
If MarketPosition == 1 and CrossDown(kClassic,DClassic) Then //하향돌파시 매수잔고 청산
ExitLong("BX",AtMarket);
If MarketPosition == -1 and crossup(kClassic,DClassic) Then //상향돌파시 매도잔고 청산
ExitShort("sx",AtMarket);
//청산추가
SetStopTrailing(58*PriceScale, 58*PriceScale,PointStop); //TrailingStop 추가
SetStopProfittarget(40*PriceScale, PointStop); //목표수익 추가
SetStopLoss(20*PriceScale,PointStop); //스탑로스 추가
즐거운 하루되세요
> HI_gapilee1 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다
> 아래 수식은 smi 를 이용해서 신호가 나올때 곧바로 진입하지 말고 몇개봉 이내에서
5틱 유리하게 진입하라는 식입니다
이를 스토캐스틱 클래식을 이용하여 동일한 식을 예스로 만들어 주시면 감사하겠습니다..
Params : 기간(17),값1(8),값2(8), 시그널기간(4)
Var : StMomentum(0), StMomentumSig(0), CrossOver(False), CrossUnder(False)
Var : OverBought(False), OverSold(False), OverPrice(0), UnderPrice(0)
Var : BarNum(0), OverNum(0), UnderNum(0)
BarNum = BarNum + 1 //봉의 번호
StMomentum = (100*(EMA(EMA((C-0.5*(Highest(H,기간)+lowest(L,기간))),값1),값2))/(0.5*EMA(EMA((highest(H,기간)-lowest(L,기간)),값1),값2)))
StMomentumSig = EMA((100*(EMA(EMA((C-0.5*(highest(H,기간)+lowest(L,기간))),값1),값2))/(0.5*EMA(EMA((highest(H,기간)-lowest(L,기간)),값1),값2))),시그널기간)
CrossOver = StMomentum Cross Over StMomentumSig //상향돌파
CrossUnder = StMomentum Cross Under StMomentumSig //하향돌파
OverBought = StMomentum >= 50 //과매수
OverSold = StMomentum <= -50 //과매도
IF CrossOver then OverNum = BarNum End if //최근 상향돌파시점의 봉번호
IF CrossUnder then UnderNum = BarNum End if//최근 하향돌파시점의 봉번호
//돌파시 종가
IF CrossOver = True Then OverPrice = Close End if
IF CrossUnder = True Then UnderPrice = Close End if
//진입
If (BarNum-OverNum)>=0 And (BarNum-OverNum)<=3
And CrossUnder=False
And OverBought=False Then
Buy("B1") Next Bar at OverPrice - 5 Ticks Limit
End if
// (BarNum-OverNum)>=0 And (BarNum-OverNum)<=3
// 상향돌파 이후 3봉 경과전에
// CrossUnder=False 현재봉에서는 반대방향(하향돌파)이 아닐때
// OverBought=False 과매수 구간이 아닐때
// Buy Next Bar at OverPrice - 5 Ticks Limit
// 조건만족후 조건만족시 종가에서 5 Tick 이하로 도달시 매수
//추가
If (BarNum-OverNum)=3 And CrossUnder=False And OverBought=False Then
Buy("B2") Next Bar at Market
End if
//4봉에서 시장가로 진입하라는 로직
If (BarNum-UnderNum)>=0 And (BarNum-UnderNum)<=2
And CrossOver=False
And OverSold=False Then
Sell("S1") Next Bar at UnderPrice + 3 Ticks Limit
End if
// If (BarNum-UnderNum)>=0 And (BarNum-UnderNum)<=2
// 하향돌파 이후 2개봉 경과전에
// CrossOver=False 현재봉에서는 반대방향(상향돌파)이 아닐때
// OverSold=False 과매도 구간이 아닐때
//Sell Next Bar at UnderPrice + 3 Ticks Limit
// 조건만족후 조건만족시 종가에서 +3 Tick 이상 도달시 매도
//추가
If (BarNum-UnderNum)=3 And CrossOver=False And OverSold=False Then
Sell("S2") Next Bar at Market
End if
//4봉에서 시장가로 진입하라는 로직
//청산
If CrossOver Then //하향돌파시 매수잔고 청산
ExitLong Next Bar at Market
End if
If CrossUnder Then //상향돌파시 매도잔고 청산
ExitShort Next Bar at Market
End if
//청산추가
SetTrailingStop(58 Ticks, 58 Ticks, "Point") //TrailingStop 추가
SetProfitTarget(40 Ticks, "Point") //목표수익 추가
SetStopLoss(20 Ticks, "Point") //스탑로스 추가
스토클래식 클래식 시스템식입니다
Params : HighLowTerm(5), kLength(3), dLength(3), OverBought(80), OverSold(20)
Var : kClassic(0), dClassic(0)
KClassic = MAFC(FastK(High,Low,Close,HighLowTerm), kLength)
DClassic = MAFC(KClassic,dLength)
If KClassic Cross Over DClassic And KClassic <=OverSold Then
Buy Next Bar at Market
End if
If KClassic Cross under DClassic And KClassic >=Overbought Then
sell Next Bar at Market
End if
감사합니다
다음글
이전글