커뮤니티
시스템식 문의
2013-05-21 11:05:26
218
글번호 63378
늘 감사드립니다.
답변 1
예스스탁 예스스탁 답변
2013-05-21 10:48:53
안녕하세요
예스스탁입니다.
1~8모두 사용자함수로 작성해 사용하시면 됩니다.
1.
사용자함수명 :mhh
반환값형 : 숫자형
input : value(Numeric),idx(Numeric);
if CurrentBar == 1 Then
var1 = value;
if CurrentBar >= 1 and CurrentBar <= idx Then{
if value > var1 Then
var1 = value;
}
mhh = var1;
2
사용자함수명 :mll
반환값형 : 숫자형
input : value(Numeric),idx(Numeric);
if CurrentBar == 1 Then
var1 = value;
if CurrentBar >= 1 and CurrentBar <= idx Then{
if value < var1 Then
var1 = value;
}
mll = var1;
3.
사용자함수명 : mmacd
반환값형 : 숫자형
input : price(Numeric),Period1(Numeric),Period2(Numeric);
mmacd = ema(Price,Period1)-ema(Price,Period2);
4
사용자함수명 : mmacdsig
반환값형 : 숫자형
input : price(Numeric),Period1(Numeric),Period2(Numeric),Period3(Numeric);
mmacdsig= ema(ema(Price,Period1)-ema(Price,Period2),Period3);
5.
사용자함수명 : mupperband
반환값형 : 숫자형
Input : price(Numeric),Period(Numeric), Dv(Numeric);
mupperband = ma(price, Period) + (Dv * std(price, Period));
6.
사용자함수명 : mlowerband
반환값형 : 숫자형
Input : price(Numeric),Period(Numeric), Dv(Numeric);
mlowerband = ma(price, Period) + (Dv * std(price, Period));
7.
사용자함수명 : mStochasticsK
반환값형 : 숫자형
Input : Price(Numeric),Period1(Numeric),Period2(Numeric);
Var : Value_Lowest(0), Value_Highest(0),FK(0);
Value_Lowest = Lowest(Price, Period1);
Value_Highest = Highest(Price, Period1);
FK = (Price - Value_Lowest) / (Value_Highest - Value_Lowest) * 100;
mStochasticsK = ema(fk,Period2);
8.
사용자함수명 : mStochasticsD
반환값형 : 숫자형
Input : Price(Numeric),Period1(Numeric),Period2(Numeric),Period3(Numeric);
Var : Value_Lowest(0), Value_Highest(0),FK(0),SK(0);
Value_Lowest = Lowest(Price, Period1);
Value_Highest = Highest(Price, Period1);
FK = (Price - Value_Lowest) / (Value_Highest - Value_Lowest) * 100;
SK = ema(fk,Period2);
mStochasticsD = ema(Sk,Period3);
9. 시스템(매수)
청산함수는 진입신호당 한번씩만 발생을 합니다.
그러므로 문의하신 내용의 경우
아래와 같이 청산함수를 많이 사용하셔야 합니다.
포지션 진입하고 순번을 정해 청산이 발생합니다.
필요하신 만큰 추가하셔야 합니다.
input : Imoney(10000000);
var : vol(0),diff(0),Xcnt(0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then
vol = int(int(Imoney/C)/10)*10;
Else
vol = int(Imoney/C);
}
if CodeCategory == 2 Then
vol = int(Imoney/C);
if CodeCategory == 6 or CodeCategory == 8 Then
vol = int((Imoney)/(C*BigPointValue));
if MarketPosition == 0 and stime == 140000 Then
buy("b",OnClose,def,vol);
if MarketPosition == 1 Then{
if CurrentContracts < CurrentContracts[1] Then
Xcnt = Xcnt+1;
if stime == 140000 Then{
var1 = Imoney-((CurrentContracts*c)*BigPointValue);
if CodeCategory == 1 Then{
if BasePrice < 50000 Then
diff = int(int(abs(var1)/C)/10)*10;
Else
diff = int(abs(var1)/C);
}
if CodeCategory == 2 Then
diff = int(abs(var1)/C);
if CodeCategory == 6 or CodeCategory == 8 Then
diff = int((abs(var1))/(C*BigPointValue));
if var1 > 0 Then
buy("bb",OnClose,def,diff);
if var1 < 0 Then{
if Xcnt == 0 Then
ExitLong("bx1",OnClose,def,"",diff,1);
if Xcnt == 1 Then
ExitLong("bx2",OnClose,def,"",diff,1);
if Xcnt == 2 Then
ExitLong("bx3",OnClose,def,"",diff,1);
if Xcnt == 3 Then
ExitLong("bx4",OnClose,def,"",diff,1);
if Xcnt == 4 Then
ExitLong("bx5",OnClose,def,"",diff,1);
if Xcnt == 5 Then
ExitLong("bx6",OnClose,def,"",diff,1);
if Xcnt == 6 Then
ExitLong("bx7",OnClose,def,"",diff,1);
if Xcnt == 7 Then
ExitLong("bx8",OnClose,def,"",diff,1);
if Xcnt == 8 Then
ExitLong("bx9",OnClose,def,"",diff,1);
if Xcnt == 9 Then
ExitLong("bx10",OnClose,def,"",diff,1);
if Xcnt == 10 Then
ExitLong("bx11",OnClose,def,"",diff,1);
if Xcnt == 11 Then
ExitLong("bx12",OnClose,def,"",diff,1);
if Xcnt == 12 Then
ExitLong("bx13",OnClose,def,"",diff,1);
if Xcnt == 13 Then
ExitLong("bx14",OnClose,def,"",diff,1);
if Xcnt == 14 Then
ExitLong("bx15",OnClose,def,"",diff,1);
if Xcnt == 15 Then
ExitLong("bx16",OnClose,def,"",diff,1);
if Xcnt == 16 Then
ExitLong("bx17",OnClose,def,"",diff,1);
if Xcnt == 17 Then
ExitLong("bx18",OnClose,def,"",diff,1);
if Xcnt == 18 Then
ExitLong("bx19",OnClose,def,"",diff,1);
if Xcnt == 19 Then
ExitLong("bx20",OnClose,def,"",diff,1); }
}
}
10 시스템(매도)
input : Imoney(10000000);
var : vol(0),diff(0),Xcnt(0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then
vol = int(int(Imoney/C)/10)*10;
Else
vol = int(Imoney/C);
}
if CodeCategory == 2 Then
vol = int(Imoney/C);
if CodeCategory == 6 or CodeCategory == 8 Then
vol = int((Imoney)/(C*BigPointValue));
if MarketPosition == 0 and stime == 140000 Then
sell("s",OnClose,def,vol);
if MarketPosition == -1 Then{
if CurrentContracts < CurrentContracts[1] Then
Xcnt = Xcnt+1;
if stime == 140000 Then{
var1 = Imoney-((CurrentContracts*c)*BigPointValue);
if CodeCategory == 1 Then{
if BasePrice < 50000 Then
diff = int(int(abs(var1)/C)/10)*10;
Else
diff = int(abs(var1)/C);
}
if CodeCategory == 2 Then
diff = int(abs(var1)/C);
if CodeCategory == 6 or CodeCategory == 8 Then
diff = int((abs(var1))/(C*BigPointValue));
if var1 > 0 Then
sell("ss",OnClose,def,diff);
if var1 < 0 Then{
if Xcnt == 0 Then
ExitShort("bx1",OnClose,def,"",diff,1);
if Xcnt == 1 Then
ExitShort("bx2",OnClose,def,"",diff,1);
if Xcnt == 2 Then
ExitShort("bx3",OnClose,def,"",diff,1);
if Xcnt == 3 Then
ExitShort("bx4",OnClose,def,"",diff,1);
if Xcnt == 4 Then
ExitShort("bx5",OnClose,def,"",diff,1);
if Xcnt == 5 Then
ExitShort("bx6",OnClose,def,"",diff,1);
if Xcnt == 6 Then
ExitShort("bx7",OnClose,def,"",diff,1);
if Xcnt == 7 Then
ExitShort("bx8",OnClose,def,"",diff,1);
if Xcnt == 8 Then
ExitShort("bx9",OnClose,def,"",diff,1);
if Xcnt == 9 Then
ExitShort("bx10",OnClose,def,"",diff,1);
if Xcnt == 10 Then
ExitShort("bx11",OnClose,def,"",diff,1);
if Xcnt == 11 Then
ExitShort("bx12",OnClose,def,"",diff,1);
if Xcnt == 12 Then
ExitShort("bx13",OnClose,def,"",diff,1);
if Xcnt == 13 Then
ExitShort("bx14",OnClose,def,"",diff,1);
if Xcnt == 14 Then
ExitShort("bx15",OnClose,def,"",diff,1);
if Xcnt == 15 Then
ExitShort("bx16",OnClose,def,"",diff,1);
if Xcnt == 16 Then
ExitShort("bx17",OnClose,def,"",diff,1);
if Xcnt == 17 Then
ExitShort("bx18",OnClose,def,"",diff,1);
if Xcnt == 18 Then
ExitShort("bx19",OnClose,def,"",diff,1);
if Xcnt == 19 Then
ExitShort("bx20",OnClose,def,"",diff,1); }
}
}
즐거운 하루되세요
> 에구머니 님이 쓴 글입니다.
> 제목 : 시스템식 문의
> 늘 감사드립니다.
다음글
이전글