답변완료
식수정
Inputs : Period(20), Sence(1.5), CC_DN(Yellow);
Input : BBP1(20), dv1(2);
input : BBP2(20),dv2(2),P2(10);
var : BBdown(0,Data1),BBUp(0,Data1),BandB(0,Data1);
var : bbup2(0,Data2),bbdn2(0,Data2),mav2(0,Data2),B(0,Data1),S(0,Data1),X(0,Data1);
Vars:
VLineUp(0,Data1),
VLineDn(0,Data1),
HHighest(0,Data1),
LLowest(0,Data1),
JustChanged(FALSE,Data1),
VLine(0,Data1), DBN(0,Data1);
var : ci(0,Data1),t(0,Data1),v1(0,Data1),v2(0,Data1),v3(0,Data1),v5(0,Data1),v6(0,Data1);
Array:
Highs[35](0,Data1),
Lows[35](0,Data1),
RRange[35](0,Data1),
UpWave[1](FALSE,Data1),
DnWave[1](FALSE,Data1);
If data1(STime == 180000) Then
DBN = 0;
DBN = DBN + 1;
v1 = Period;
v2 = v1 - 1;
v3 = v1 - 2;
v5 = Sence;
v6 = data1(H-L);
JustChanged = FALSE;
if Data1(Index) >= Period Then
ci = ci+1;
if ci <= v2 then begin
Highs[ci] = Close;
Lows[ci] = Close;
RRange[ci] = (H-L) /2;
end;
if ci == v1 then begin
if Highs[v2] >= Highs[v3] then begin
UpWave[1] = TRUE;
HHighest = Highs[v2];
VLineUp = HHighest - (v5 * data1(MA(v6,v2)));
end;
if Highs[v2] < Highs[v3] then begin
DnWave[1] = TRUE;
LLowest = Lows[v2];
VLineDn = LLowest + (v5 * data1(MA(v6,v2)));
end;
end;
if CurrentBar > v1 then begin
if DnWave[1] and Close > VLineDn then begin
DnWave[1] = FALSE;
UpWave[1] = TRUE;
JustChanged = TRUE;
HHighest = Close;
LLowest = 0;
end;
if UpWave[1] and Close < VLineUp and JustChanged == FALSE then begin
UpWave[1] = FALSE;
DnWave[1] = TRUE;
JustChanged = TRUE;
LLowest = Close;
HHighest = 0;
end;
if JustChanged == FALSE then begin
if Close > HHighest then
HHighest = Close;
else if Close < LLowest then
LLowest = Close;
end;
VLineUp = HHighest - (v5 * data1(MA(v6,v2)));
VLineDn = LLowest + (v5 * data1(MA(v6,v2)));
if UpWave[1] then
t = 1;
else if DnWave[1] then
t= -1;
end;
BBDown = data1(BollBandDown(BBP1,Dv1));
BBUp = data1(BollBandUp(BBP1,Dv1));
BandB = Data1(((C-BBDown)/(BBUp-BBDown))*100);
bbup2 = Data2(BollBandUp(BBP2,dv2));
bbdn2 = Data2(BollBandUp(BBP2,dv2));
mav2 = Data2(ma(C,P2));
if t == 1 and
crossup(BandB,0) and
bbup2-bbdn2 <= PriceScale*100 and
Data2(C>O) and
Data2(C>mav2) Then
Buy("b");
if t == -1 and
crossdown(BandB,0) and
bbup2-bbdn2 <= PriceScale*100 and
Data2(C<O) and
Data2(C<mav2) Then
Sell("s");
if MarketPosition == 1 Then
{
if Data2(C<O and mav2 < mav2[1]) Then
ExitLong("bx1");
if Data1(CountIf(C<O,2) == 2 and C < L[1]) Then
ExitLong("bx2");
}
if MarketPosition == -1 Then
{
if Data2(C>O and mav2 > mav2[1]) Then
ExitShort("sx1");
if Data1(CountIf(C>O,2) == 2 and C > H[1]) Then
ExitShort("sx2");
}
안녕하세요
위식에서 매도만 발생하는데
매수식도 나올수 있게 겁토부탁드려요
2023-01-09
952
글번호 165238
시스템
답변완료
수식부탁드립니다
추가 질문입니다
손실시 스위칭은 진입봉에서는 안되고 다음 봉에서만 되는 건가요?
수고하세요~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 부탁드립니다
> 안녕하세요
예스스탁입니다.
if문은 봉완성기준(다음봉시가수신)입니다.
if조건의 MarketPosition도 봉완성시에 체크되므로
상향돌파 진입시에 다음봉에서 30틱 하락하면 스위칭되는 내용만 추가해 주시고
이익청산을 강제청산함수로 지정해 주시면 됩니다.
var1 = ma(C,20);
if MarketPosition == 0 and CrossUp(c,var1) Then
{
Buy("b",OnClose,DEf,1);
Sell("bs1",AtStop,c-PriceScale*30);
}
if MarketPosition == 1 Then
{
Sell("bs",AtStop,EntryPrice-PriceScale*30,MaxContracts*2);
}
if MarketPosition == -1 Then
{
Buy("sb",AtStop,EntryPrice+PriceScale*30,MaxContracts*2);
}
SetStopProfittarget(PriceScale*30,PointStop);
즐거운 하루되세요
> 와시1000 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다
> var1 = ma(C,20);
if MarketPosition == 0 and CrossUp(c,var1) Then
Buy("b",OnClose,DEf,1);
if MarketPosition == 1 Then
{
ExitLong("Bp",AtLimit,EntryPrice+PriceScale*30);
Sell("bs",AtStop,EntryPrice-PriceScale*30,MaxContracts*2);
}
if MarketPosition == -1 Then
{
ExitShort("Sp",AtLimit,EntryPrice-PriceScale*30);
Buy("sb",AtStop,EntryPrice+PriceScale*30,MaxContracts*2);
}
안녕하세요
이평선 넘어가면 30틱 이익나면 끝내고 30틱 손실나면 계속 늘리는
식인데 진입후 바로 이익 손실이나면 다음 봉에서 실행되는 데
해결 방법 없을까요?
2023-01-09
635
글번호 165235
시스템