답변완료
틱봉을 분봉으로 만들어서 청산하기
# 해외선물_ 틱봉 100틱 설정
# 매수 진입 후, 30분봉이 두번 연속 양봉이 나오면 이익청산
# 매도 진입 후, 30분봉이 두번 연속 음봉이 나오면 이익청산
위의 코딩 부탁드립니다.
아래처럼 여기저기 따와서 코딩했는데 안되네요..
도움되실까 하여 아래 제가 여기저기 따온 코드를 수록하였습니다.
# 진입 : 골든크로스 매수/ 데드크로스로 매도 -------------------------------------------------------------
Input : shortPeriod(5), longPeriod(20);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy("매수");
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell("매도");
}
input : convert(30);
var : S1(0), D1(0), TM(0), TF1(0), rng1(0), rng2(0), OOO1(0), OOO2(0), CCC1(0), CCC2(0), cnt(0);
Array : OO[10](0), CC[10](0);
if bdate != bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1; # TM = TimeToMinutes(stime) - S1
Else
TM = TimeToMinutes(stime)+1440-S1; # 아니면 TM = TimeToMinutes(stime) + 1440 - S1
TF1 = TM % convert; # TF1 = TM 나누기 convert(30)의 '나머지'
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then # TF[1]이 보다 유일하게 커질때가 30분 정각이다.(틱봉에선 반영이 잘 안되지만, 그래도 근사값을 구할수는 있다)
{
OO[0] = O;
CC[0] = C;
for cnt = 1 to 99
{
OO[cnt] = OO[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
}
if OO[1] != OO[2] Then
{
rng1 = CC[1]-OO[1];
rng2 = CC[2]-OO[2];
OOO1 = OO[1];
OOO2 = OO[2];
CCC1 = CC[1];
CCC2 = CC[2];
}
// 청산<익절> ---------------------------------------------------------------------------------------------------------------
if MarketPosition == 1 Then
{
if OOO1 > CCC1 and OOO2 > CCC2 Then # 첫번째 봉 음봉 and 두번째 봉 음봉 (2개 연속 봉 같은방향)
ExitLong("2차 매수익절_1안", AtLimit, 0, "매수");
else if CurrentContracts == 1 Then
ExitLong("2차 매수본절익절_1안", atstop, EntryPrice, "매수", 1, 1);
}
else if MarketPosition == -1 Then
{
if OOO1 < CCC1 and OOO2 < CCC2 Then # 첫번째 봉 양봉 and 두번째 봉 양봉 (2개 연속 봉 같은방향)
ExitShort("2차 매도익절_1안", AtLimit, 0, "매도");
else if CurrentContracts == 1 Then
ExitShort("2차 매도본절익절_1안", atstop, EntryPrice, "매도", 1, 1);
}
// 손절
SetStopLoss(10, PointStop);
2020-01-21
184
글번호 135334
지표
답변완료
질문 올립니다.
늘 친절하신 가르치심에 감사드립니다.
"한권으로 끝내는 시스템 트레이딩" 책 240쪽 위에서 5번째 줄에 보면, "전 봉 종가를 기준으로"라고 되어 있는데, 241쪽 소스 제6라인에서 보면, C-ATR(20)*YoYoMult라고 되어 있는데, 혹시 C[1]-ATR(20)*YoYoMult라야 되는 것은 아닌가 해서 질문 올립니다.
((242쪽 코드 제11라인에서 보면 C[1]+ATR(20)*SpikeMult라고 되어 있는 것과 같은 맥락으로, 241쪽에서도 C가 아니라, C[1]이 아닐까 싶은 생각이 들어서요...))
감사합니다.
2020-01-21
168
글번호 135332
시스템
답변완료
문의드립니다
모든 신호는 항생을 기준으로 하고 매수매도만 미니항생으로 해보려고 하는데 미니항생에 Data2를 불러와서 짜봐도 잘 되지 않습니다
아래식을 위 처럼 운용하려면 어떻게 식을 짜야하나요?
Input: FastLen(10), SlowLen(500), ChLen(30), TrailBar(160), stopPer(1.0), 최소수익1(0.4),수익감소1(20), Ratio(0.2);
Vars: FastMA(0), SlowMA(0),LEntryPrice(0), SEntryPrice(0), LCount(-999), SCount(-999), ReCnt(0), MP(0), BH(0),BL(0), ShotMaxRatio(0), LongMaxRatio(0);
FastMA = ma(C , FastLen );
SlowMA = ma(C , SlowLen );
if!(stime >= 033500 and stime <= 040000) then{
If CrossUp(FastMA , SlowMA) and index > 1 then {
LEntryPrice = Highest(H , TrailBar )[1];
LCount = index;
LongMaxRatio = FastMA * (1+((Ratio/100)));
}
If MarketPosition <> 1 AND index < LCount + ChLen AND LEntryPrice <= LongMaxRatio then
Buy ("매수진입", atstop,LEntryPrice);
If CrossDown(FastMA , SlowMA) and index > 1 then {
SEntryPrice = Lowest(L , TrailBar )[1];
SCount = index;
ShotMaxRatio = FastMA * (1-((Ratio/100)));
}
If MarketPosition <> -1 AND index < SCount + ChLen AND SEntryPrice > ShotMaxRatio then
Sell ("매도진입", atstop,SEntryPrice );
}
If MarketPosition == 1 then {
LCount = -999;
ExitLong ("매수청산", atstop, Lowest(L , TrailBar ));
BH = highest(H,BarsSinceEntry);
if BH >= EntryPrice*(1+최소수익1/100) Then
ExitLong("bx1",AtStop,BH-(BH-EntryPrice)*(수익감소1/100));
}
If MarketPosition == -1 then {
SCount = -999;
ExitShort ("매도청산", atstop, Highest(H , TrailBar ));
BL = Lowest(L,BarsSinceEntry);
if BL <= EntryPrice*(1-최소수익1/100) Then
ExitShort("sx1",AtStop,BL+(EntryPrice-BL)*(수익감소1/100));
}
SetStopLoss(stopPer, PercentStop);
if sTime == 034800 Then
{
exitlong("장마감매수청산");
exitshort("장마감매도청산");
}
2020-01-21
164
글번호 135325
시스템
답변완료
수식문의드립니다.
첫번째
=================================================
((C(8)*1.15< C(7)) or (C(9)*1.15< C(8)) or (C(10)*1.15< C(9)) or (C(11)*1.15< C(10)) or (C(12)*1.15< C(11)) or (C(13)*1.15< C(12)) or (C(14)*1.15< C(13)) or (C(15)*1.15< C(14)))
and
avg(C(1),5) < avg(C(4),5)
and
avg(C(1),5) < avg(C,5)
and
avg(C,25) > avg(C(7),25)
and
avg(C,73) > avg(C(7),73)
=====================================
두번째
M=ma(C,기간,종류);
N=Highest(M,봉개수)+Lowest(M,봉개수)-ma(C,기간,종류);
CrossUP(M,N)
기간 100
종류 단순
봉개수 100
===================================================
이 2가지 수식을 종목검색 가능하게 해주세요~~
새해 복마니 받으세요~
2020-01-21
208
글번호 135303
종목검색