Bonjour,
Sur la base de l’indicateur suivant modifié par @ivan qui se place dans une fenêtre sous le prix, j’aimerais avoir le code d’un screener détectant les instruments dont la valeur de l’indicateur est +1 et -1.
Merci d’avance pour votre aide.
// Sonarlabs - Order Block Finder
// converted from TradingView
// Lower the sensitivity to show more order blocks. A higher sensitivity will show less order blocks
defparam drawonlastbaronly=true
Transparency = 80
sens = 0
once obcreatedbear = 0
once obcreatedbull = 0
once crossindexbear = 0
once crossindexbull = 0
// Custom Rate of Change (ROC) calculation. This is to calculate high momentum moves in the market.
pc = ((open - open[4]) / open[4]) * 100
// -----------------
sens = sens/100 //ExponentialAverage[8](pc) //sens/100
OBBullMitigation = close[1]
OBBearMitigation = close[1]
// If the ROC crossover our Sensitivty input - Then create a Bearish Order Block
// Sensitivty is negative as this is a Bearish OB
if pc crosses under -sens then
obcreatedbear = 1
crossindexbear = barindex
endif
// If the ROC crossover our Sensitivty input - Then create a Bullish Order Block
if pc crosses over sens then
obcreatedbull = 1
crossindexbull = barindex
endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Calculation
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// -------------------------------
// Bearish OB Creation
// -------------------------------
// Check if we should create a OB. Also check if we haven't created an OB in the last 5 candles.
if obcreatedbear and (crossindexbear - crossindexbear[1]) > 5 then
lastgreen = 0
hhighest = 0
// Loop through the most recent candles and find the first GREEN (Bullish) candle. We will place our OB here.
for i = 4 to 15
if close[i] > open[i] then
lastgreen = i
//populate the arrays of order block to draw them later
$left[plot]= barindex[lastgreen]
$top[plot]=high[lastgreen]
$bottom[plot]=low[lastgreen]
$right[plot]=barindex[lastgreen]
plot=plot+1 //increase the array column for next data
break
endif
next
endif
// -------------------------------
// Bullish OB Creation
// -------------------------------
// Check if we should create a OB, Also check if we haven't created an OB in the last 5 candles.
if obcreatedbull and (crossindexbull - crossindexbull[1]) > 5 then
lastred = 0
hhighest = 0
// Loop through the most recent candles and find the first RED (Beaarish) candle. We will place our OB here.
for ibull = 4 to 15
if close[ibull] < open[ibull] then
lastred = ibull
//populate the arrays of order block to draw them later
$leftbull[plotbull]= barindex[lastred]
$topbull[plotbull]=high[lastred]
$bottombull[plotbull]=low[lastred]
$rightbull[plotbull]=barindex[lastred]
plotbull=plotbull+1 //increase the array column for next data
break
endif
next
endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Cleanup
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Clean up Bearish OB boxes
if plot>0 then
for j = plot-1 downto 0 //0 to plot-1
// If the two last closes are above the high of the bearish OB - Remove the OB
if $left[j]>0 then //check if the zone still exist
itop = $top[j]
breakout = summation[max(1,barindex-$left[j])](OBBearMitigation>itop)>=1 //2
if breakout then
$left[j]=0
endif
endif
next
endif
//Clean up Bullish OB boxes
if plotbull>0 then
for jbull = plotbull-1 downto 0 //0 to plotbull-1
// If the two last closes are below the low of the bullish OB - Remove the OB
if $leftbull[jbull]>0 then //check if the zone still exist
ibot = $bottombull[jbull]
breakoutbull = summation[max(1,barindex-$leftbull[jbull])](OBBullMitigation<ibot)>=1
if breakoutbull then
$leftbull[jbull]=0
endif
endif
next
endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drawing
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if islastbarupdate then
//plot the Bearish boxes
if plot>0 then //islastbarupdate and
for j = plot-1 downto 0 //0 to plot-1
if $left[j]>0 then
//drawrectangle($left[j],$top[j],barindex,$bottom[max(0,j)]) coloured("red",Transparency)bordercolor("red",Transparency)
for k=0 to barindex do
if barindex[k]>$left[max(0,j)] and high[k] > $bottom[max(0,j)] and high[k]<$top[max(0,j)] then
drawrectangle(barindex[k],0,barindex[k],-1)coloured("red")
endif
next
endif
next
endif
//plot the Bullish boxes
if plotbull>0 then //islastbarupdate and
for jbull = plotbull-1 downto 0 //0 to plotbull-1
if $leftbull[jbull]>0 then
//drawrectangle($leftbull[jbull],$bottombull[jbull],barindex,$topbull[jbull]) coloured("green",Transparency)bordercolor("green",Transparency)
for i=0 to barindex do
if barindex[i]>$leftbull[max(0,jbull)] and low[i] < $topbull[max(0,jbull)] and low[i]>$bottombull[max(0,jbull)] then
drawrectangle(barindex[i],0,barindex[i],1)coloured("green")
endif
next
endif
next
endif
endif
return
salut. Vous avez contesté dans le fil antérieur. Voici le code :
sens = 0
once obcreatedbear = 0
once obcreatedbull = 0
once crossindexbear = 0
once crossindexbull = 0
// Custom Rate of Change (ROC) calculation. This is to calculate high momentum moves in the market.
pc = ((open - open[4]) / open[4]) * 100
// -----------------
sens = sens/100 //ExponentialAverage[8](pc) //sens/100
OBBullMitigation = close[1]
OBBearMitigation = close[1]
// If the ROC crossover our Sensitivty input - Then create a Bearish Order Block
// Sensitivty is negative as this is a Bearish OB
if pc crosses under -sens then
obcreatedbear = 1
crossindexbear = barindex
endif
// If the ROC crossover our Sensitivty input - Then create a Bullish Order Block
if pc crosses over sens then
obcreatedbull = 1
crossindexbull = barindex
endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Calculation
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// -------------------------------
// Bearish OB Creation
// -------------------------------
// Check if we should create a OB. Also check if we haven't created an OB in the last 5 candles.
if obcreatedbear and (crossindexbear - crossindexbear[1]) > 5 then
lastgreen = 0
// Loop through the most recent candles and find the first GREEN (Bullish) candle. We will place our OB here.
for i = 4 to 15
if close[i] > open[i] then
lastgreen = i
//populate the arrays of order block to draw them later
$left[plot]= barindex[lastgreen]
$top[plot]=high[lastgreen]
$bottom[plot]=low[lastgreen]
$right[plot]=barindex[lastgreen]
plot=plot+1 //increase the array column for next data
break
endif
next
endif
// -------------------------------
// Bullish OB Creation
// -------------------------------
// Check if we should create a OB, Also check if we haven't created an OB in the last 5 candles.
if obcreatedbull and (crossindexbull - crossindexbull[1]) > 5 then
lastred = 0
// Loop through the most recent candles and find the first RED (Beaarish) candle. We will place our OB here.
for ibull = 4 to 15
if close[ibull] < open[ibull] then
lastred = ibull
//populate the arrays of order block to draw them later
$leftbull[plotbull]= barindex[lastred]
$topbull[plotbull]=high[lastred]
$bottombull[plotbull]=low[lastred]
$rightbull[plotbull]=barindex[lastred]
plotbull=plotbull+1 //increase the array column for next data
break
endif
next
endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Cleanup
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Clean up Bearish OB boxes
if plot>0 then
for j = plot-1 downto 0 //0 to plot-1
// If the two last closes are above the high of the bearish OB - Remove the OB
if $left[j]>0 then //check if the zone still exist
itop = $top[j]
breakout = summation[max(1,barindex-$left[j])](OBBearMitigation>itop)>=1 //2
if breakout then
$left[j]=0
endif
endif
next
endif
//Clean up Bullish OB boxes
if plotbull>0 then
for jbull = plotbull-1 downto 0 //0 to plotbull-1
// If the two last closes are below the low of the bullish OB - Remove the OB
if $leftbull[jbull]>0 then //check if the zone still exist
ibot = $bottombull[jbull]
breakoutbull = summation[max(1,barindex-$leftbull[jbull])](OBBullMitigation<ibot)>=1
if breakoutbull then
$leftbull[jbull]=0
endif
endif
next
endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Drawing
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if islastbarupdate then
//plot the Bearish boxes
if plot>0 then //islastbarupdate and
for j = plot-1 downto 0 //0 to plot-1
if $left[j]>0 then
//drawrectangle($left[j],$top[j],barindex,$bottom[max(0,j)]) coloured("red",Transparency)bordercolor("red",Transparency)
if barindex>$left[max(0,j)] and high > $bottom[max(0,j)] and high<$top[max(0,j)] then
signal=-1
else
signal=0
endif
endif
next
endif
//plot the Bullish boxes
if plotbull>0 then //islastbarupdate and
for jbull = plotbull-1 downto 0 //0 to plotbull-1
if $leftbull[jbull]>0 then
if barindex>$leftbull[max(0,jbull)] and low < $topbull[max(0,jbull)] and low>$bottombull[max(0,jbull)] then
signalbull=1
else
signalbull=0
endif
endif
next
endif
endif
screener[signal or signalbull](signal as "SignalBear",signalbull as "SignalBull")