답변완료
문의 드립니다
input : StartTime(213000),EndTime(55000);
input : 익절틱수(400),손절틱수(0);
var : Tcond(False);
var : entry(0);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
entry = 0;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true Then
{
if MarketPosition <= 0 and entry < 1 Then
buy("b",atlimit,dayhigh-PriceScale*400);
if MarketPosition == 1 Then
exitlong("bx",atlimit,lowest(L,BarsSinceEntry)+PriceScale*400);
if MarketPosition >= 0 and entry < 1 Then
sell("s",atlimit,daylow+PriceScale*700);
if MarketPosition == -1 Then
ExitShort("sx",atlimit,Highest(H,BarsSinceEntry)-PriceScale*300);
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
위 수식의 청산은 주문싯점이 아닌 저점대비 올라온 폭의 청산입니다.
예를들어서 -100틱 매수후 +100틱 청산일때 -100틱에 매수가 되었으나
저점이 더 내려가서 반등시 그 저점에서 +100틱에 청산이 되는 경우 입니다.
주문싯점에서 +100틱에 청산 되는 수식어로 변경되었으면 합니다.
미리 감사드립니다.
2024-04-09
562
글번호 178403
시스템
답변완료
수식 요청 드립니다.
안녕하세요.
1. 연결선물 당일청산 다수의 진입과 스위칭 또는 청산을 반복하는 분봉 시스템에서
당일손실제한청산 최대손절은 1.5P 입니다.
1차 진입후 당일손실제한청산 1.5P
2차 진입후 당일손실제한청산 1.0P
3차 진입후 당일손실제한청산 0.5P 로 축소되는 당일손실제한청산 수식 요청 드립이다.
#진입수식(신호조건 예제)
var : EMA1(0),EMA2(0);
EMA1= ema(ema(ema(c,2),2),2);
EMA2 = ema(ema(ema(c,4),4),4);
if CrossDown(EMA1,EMA2) Then{
Sell("S");
}
if CrossUP(EMA1,EMA2) Then{
Buy("B");
}
2024-04-08
704
글번호 178401
시스템
답변완료
진입 손절 청산 시스템 수식 부탁드립니다.
담당자님 안녕하세요! 먼저 감사드립니다.
해외선물 준비하고 있습니다.
볼린저 밴드를 활용한 매수 전략과 청산 전략에 대해 수식 부탁드립니다.
진입 조건 - 포지션이 0이면서, T가 ‘1’이고, 주가가 하단밴드보다 낮을 경우, 주가가 하단 밴드
를 돌파하면 1계약 매수
손절 조건 - T가 ‘-1’이되거나, 100틱이상 하락 시 모두 손절
청산 조건 - 주가가 상단 밴드를 돌파 후 상단 밴드를 하향 돌파 시 모두 청산
감사합니다.
2024-04-08
744
글번호 178396
시스템
답변완료
문법에러가 나는지 고쳐주세요
아래 내용에서 맨 마지막줄의 gg[0]에서 에러가 왜 나는지 모르겠어요ㅜㅜ
그냥 gg[0]만 넣으면 문제가 없는데, gg[0]>gg[1]을 비교했을때 에러가 나고 있습니다.
어떻게 고쳐야 할까요?
aa = Avg(C, 5); //5일선
bb = Avg(C, 20); //20일선
dd = Avg(C, 120); //120일선
ee = Avg(C, 40); //40일선
gg = tema(c,4);
gg=aa>bb And aa>dd And aa>ee And ee[0]>ee[1];
if gg[0]>gg[1] then
2024-04-08
974
글번호 178395
지표
답변완료
재문의 드립니다
아래는 선생님께서 작성해주신 지표인데
필터로 쓰기전에 플롯을 해서 제대로 나오는지 살펴보았는데
전일이나 전전일 adx의 고가 값이 다 100으로 고정되어 있네요
당일꺼는 움직이는거 같은데
당일께 만약 adx가 60을 하이로 찍었으면
내일은 hdax[1]이 60을 나타내야 할텐데요
확인부탁드려요~
Inputs : Period(14);
Var : idx(0),Counter(0), TRange(0), PlusDM14(0),MinusDM14(0);
var : PlusDM(0), MinusDM(0),DMIv(0);
var : DP(0),DM(0),hd(0),ld(0);
var : cnt(0);
Array : Hadx[10](0);
if bdate != Bdate[1] Then
{
idx = 0;
DP = 0;
DM = 0;
}
else
idx = idx+1;
if idx == 0 Then
hd = C-O;
Else
hd = H-H[1];
if idx == 0 Then
ld = C-O;
Else
ld = L-L[1];
If idx >= 0 and idx <= Period+1 Then
{
DP = 0;
DM = 0;
PlusDM14 = 0;
MinusDM14 = 0;
TRange = 0;
For Counter = 0 To idx
{
If hd < 0 Then
PlusDM = 0;
Else
PlusDM = hd;
If ld < 0 Then
MinusDM = 0;
Else
MinusDM = ld;
var1 = PlusDM;
Var2 = MinusDM;
If Var2 >= var1 Then
PlusDM = 0;
If var1 >= Var2 Then
MinusDM = 0;
TRange = TRange + TrueRange[Counter];
PlusDM14 = PlusDM14 + PlusDM;
MinusDM14 = MinusDM14 + MinusDM;
}
If TRange <> 0 Then
{
DP = 100 * PlusDM14 / TRange;
DM = 100 * MinusDM14 / TRange;
}
Else
{
DP = 0;
DM = 0;
}
}
If idx > Period+1 Then
{
If hd < 0 Then
PlusDM = 0;
Else
PlusDM = hd;
If ld < 0 Then
MinusDM = 0;
Else
MinusDM = ld;
var1 = PlusDM;
Var2 = MinusDM;
If Var2 >= var1 Then
PlusDM = 0;
If var1 >= Var2 Then
MinusDM = 0;
If Period > 0 Then Begin
TRange = TRange[1] - (TRange[1] / Period) + TrueRange;
PlusDM14 = PlusDM14[1] - (PlusDM14[1] / Period) + PlusDM;
MinusDM14 = MinusDM14[1] - (MinusDM14[1] / Period) + MinusDM;
End;
If TRange <> 0 Then
{
DP = 100 * PlusDM14 / TRange;
DM = 100 * MinusDM14 / TRange;
}
Else
{
DP = 0;
DM = 0;
}
}
If DP + DM == 0 Then
DMIv = 0;
Else
DMIv = 100 * AbsValue(DP - DM) / (DP + DM);
var : CummDMI(0),ADXV(0);
If idx >= 1 AND Period > 0 Then
{
If idx < Period Then
{
CummDMI = 0;
for Counter = 0 To idx - 1
{
CummDMI = CummDMI + DMIV[Counter];
}
ADXv = CummDMI / idx;
}
Else
ADXv = (ADXv * (Period - 1) + DMIv) / Period;
}
if Bdate != Bdate[1] Then
{
For cnt = 9 DownTo 1
{
Hadx[cnt] = Hadx[cnt-1];
}
Hadx[0] = ADXV;
}
if ADXV > Hadx[0] Then
Hadx[0] = Adxv;
Plot1(hadx[0]);
Plot2(hadx[1]);
2024-04-08
900
글번호 178391
지표