DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
DEFPARAM FLATBEFORE = 080000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 210000
atrLen = 21
m1 = 3.5 //"ATR Multiplier - ADX Rising"
m2 = 1.75 //"ATR Multiplier - ADX Falling"
adxLen = 14
adxThresh = 30 //"ADX Threshold"
aboveThresh = 1 //true, title = "ADX Above Threshold uses ATR Falling Multiplier Even if Rising?")
useHeiken = 1 //(false, title = "Use Heiken-Ashi Bars (Source will be ohlc4)")
// --- end of settings
source = MedianPrice
// DI-Pos, DI-Neg, ADX
hR = high-high[1]
lR = -(low-low[1])
if hr>lr then
dmPos=max(hr,0)
else
dmPos=0
endif
if lr>hr then
dmNeg=max(lr,0)
else
dmNeg=0
endif
sTR = (sTR[1] - sTR[1]) / adxLen + tr
sDMPos = (sDMPos[1] - sDMPos[1]) / adxLen + dmPos
sDMNeg = (sDMNeg[1] - sDMNeg[1]) / adxLen + dmNeg
DIP = sDMPos / sTR * 100
DIN = sDMNeg / sTR * 100
DX = abs(DIP - DIN) / (DIP + DIN) * 100
aadx = average[adxLen](DX)
// Heiken-Ashi
if barindex<2 then
xClose = close
xOpen = open
else
xClose = TotalPrice
xOpen = (xOpen[1] + close[1]) / 2
endif
xHigh = max(high, max(xOpen, xClose))
xLow = min(low, min(xOpen, xClose))
// Trailing ATR
v1 = abs(xHigh - xClose[1])
v2 = abs(xLow - xClose[1])
v3 = xHigh - xLow
trueRange = max(v1, max(v2, v3))
if useHeiken then
atr = WilderAverage[atrLen](trueRange)
else
atr = AverageTrueRange[atrLen]
endif
if aadx>aadx[1] and (adx < adxThresh or not aboveThresh) then
m=m1
elsif aadx<aadx[1] or (adx > adxThresh and aboveThresh) then
m=m2
else
m = m[1]
endif
if DIP >= DIN then
mUp=m
else
mUp=m2
endif
if DIN >= DIP then
mDn=m
else
mDn=m2
endif
if useHeiken then
src=xClose
c=Xclose
t=(xHigh+xLow)/2
else
src=source
c=close
t=MedianPrice
endif
up = t - mUp * atr
dn = t + mDn * atr
if max(src[1], c[1]) > TUp[1] then
TUp = max(up,TUp[1])
else
TUp = up
endif
if min(src[1], c[1]) < TDown[1] then
TDown = min(dn, TDown[1])
else
TDown = dn
endif
c1= (close crosses over TUp)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
c2= (close crosses over TDown)
IF c2 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 5
SET TARGET pPROFIT 10