Jump to content

⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

[REQ] Any Dick Diamond Material


Recommended Posts

Guest grandpost
Posted
If someone has any Dick Diamond courses or SPREADSHEET please share. Thank you
Guest grandpost
Posted
no hope for any of dick diamond material
  • 3 months later...
  • 1 year later...
  • 7 months later...
  • 1 year later...
Posted
Dick Diamond -Trading as a Business - The Methods and Rules I've Used To Beat the Markets for 40 Years gives you a behind-the-scenes look at how Dick Diamond has become a successful independent trader for more than four decades. This vital resource reveals Diamond's methods for analyzing the market and knowing the right time to get in and out of trades. With this book in hand, you'll be able to tap into Diamond's strategy of 80/20 trading which offers a dramaticaly increased chance of making a winning trade. Diamond also includes his six statistics that are critical for determining where the stock market is headed.--- request
  • 8 years later...
Posted (edited)
Dick Diamond -Trading as a Business - The Methods and Rules I've Used To Beat the Markets for 40 Years gives you a behind-the-scenes look at how Dick Diamond has become a successful independent trader for more than four decades. This vital resource reveals Diamond's methods for analyzing the market and knowing the right time to get in and out of trades. With this book in hand, you'll be able to tap into Diamond's strategy of 80/20 trading which offers a dramaticaly increased chance of making a winning trade. Diamond also includes his six statistics that are critical for determining where the stock market is headed.--- request

 

Dick Diamond's materials are very hard to find. EWI has his course charging for $7100?

 

Learn More :: Elliott Wave International

Edited by sapperindi
  • 3 years later...
Posted (edited)

Yes bro, Robert Miner is one of the best in terms of EW and Fib. Dick Diamond is great at his thinking and philosophy. for a person to make money consistently over 48 years, he must have done something right.

 

Btw, he only uses 4 metastock indicators, that's all. nothing fancy

Edited by sapperindi
Posted

More links:

Interview with Dick Diamond: An Interview with Dick Diamond – his market of choice is the S&P 500 e-mini futures contract – for forex traders that might be analogous to EUR/USD - Market News - 22 August 2014 - Traders' Blogs

The interview mentions a custom indicator for Metastock called RMO:

RMO ATM 4.0

Here is a link to a forum where someone mentioned the book is not very good except for one paragraph:

"Two things are very important: 1) You must get in early based on the indicators. GET in early. 2) After you've set your protective stop, put in a bid and get out. You must get in and get out. This is not about making a lot of money on an individual trade. If you made a thousand trades in a year - which is very attainable -- and didn't make any trades winning over 2 or 3 points, you would make a lot of money for yourself. I'd expect you to probably do even a little better. But I'm telling you, it's not about making a lot of money on one trade. All you want to do is have successful trades. It takes discipline to wait for the right time. Get in, get out, and get the heck out of the way."

Plan the Trade | Page 590 | Forex Factory

 

Posted

Thanks FredUrble. RMO on tradingview

// This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International  
// https://creativecommons.org/licenses/by-nc-sa/4.0/
// © Zeiierman {
//@version=6
indicator('Range Oscillator (Zeiierman)', overlay = false, precision = 1)
//~~}

// ~~ Tooltips {
var string t1 = 'The minimum number of bars required to qualify a range box. A higher value ensures the range is well-established, but may reduce responsiveness.'
var string t2 = 'Multiplier that adjusts the vertical size of the range box based on ATR. Larger values create wider boxes and accommodate higher volatility.'
var string t4 = 'Number of horizontal levels (bands) used in the heatmap. More levels give finer granularity but may introduce noise.'
var string t5 = 'Defines how many bars must touch a level to consider it \'hot\'. Lower values make the heatmap more reactive.'
var string t6 = 'Color for strong bullish zones. Highlights areas where price faces less resistance in uptrends.'
var string t7 = 'Color for strong bearish zones. Highlights areas where price faces less resistance in downtrends.'
var string t8 = 'Color for weak bearish zones. Highlights pressure zones in downtrends.'
var string t9 = 'Color for weak bullish zones. Highlights pressure zones in uptrends.'
var string t10 = 'Color used during trend transitions or when no valid heatmap color is available.'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Inputs {
length = input.int(50, minval = 1, step = 1, title = 'Minimum Range Length', tooltip = t1, group = 'Range Oscillator')
mult   = input.float(2.0, minval = 0.1, step = 0.1, title = 'Range Width Multiplier', tooltip = t2, group = 'Range Oscillator')

levelsInp  = input.int(2, title = 'Number of Heat Levels', minval = 2, maxval = 100, group = 'Heat-map', tooltip = t4)
heatThresh = input.int(1, title = 'Minimum Touches per Level', minval = 1, group = 'Heat-map', tooltip = t5)

strongbullish  = input.color(#09ff00, title = 'Strong Bullish Color', group = 'Style', inline = 'c', tooltip = t6)
strongbearish  = input.color(color.rgb(255, 0, 0), title = 'Strong Bearish Color', group = 'Style', inline = 'c1', tooltip = t7)
weakbearish    = input.color(color.maroon, title = 'Weak Bearish Color', group = 'Style', inline = 'c1', tooltip = t7 + ' ' + ' ' + t8)
weakbullish    = input.color(color.green, title = 'Weak Bullish Color', group = 'Style', inline = 'c', tooltip = t6 + ' ' + ' ' + t9)
transitionzone = input.color(color.blue, title = 'Transition Color', group = 'Style', inline = 'c2', tooltip = t10)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Heatmap Function {
getHeatColor(float val, int trendDir, int levelsInp, int heatThresh, color weakbullish, color strongbullish, color weakbearish, color strongbearish, series float high_ser = high, series float low_ser = low, bool pointMode = false) =>
    series float source = high_ser
    float hi = ta.highest(pointMode ? source : high_ser, 100)
    float lo = ta.lowest(pointMode ? source : low_ser, 100)
    float rng = hi - lo
    float step = rng > 0 ? rng / levelsInp : na

    color coldTrendCol = trendDir == 1 ? weakbullish : weakbearish
    color hotTrendCol = trendDir == 1 ? weakbullish : weakbearish

    var array<float> levelVals = array.new<float>(101, na)
    var array<color> levelColors = array.new<color>(101, na)
    var array<int> levelCounts = array.new<int>(101, na)

    if na(step) or step == 0
        na
    else
        for i = 0 to levelsInp - 1 by 1
            float lvl = lo + step * i
            if pointMode
                lvl := lo + step * (i + 0.5)
                lvl
            int cnt = 0
            for j = 0 to 100 - 1 by 1
                bool touch = false
                if pointMode
                    touch := source[j] >= lvl - step / 2 and source[j] < lvl + step / 2
                    touch
                else
                    touch := high_ser[j] >= lvl and low_ser[j] <= lvl
                    touch
                if touch
                    cnt := cnt + 1
                    cnt
            color col = color.from_gradient(cnt, heatThresh, heatThresh + 10, color.new(coldTrendCol, 80 - cnt), hotTrendCol)
            array.set(levelVals, i, lvl)
            array.set(levelColors, i, col)
            array.set(levelCounts, i, cnt)

        for i = levelsInp to 100 by 1
            array.set(levelVals, i, na)
            array.set(levelColors, i, na)
            array.set(levelCounts, i, na)

        float minD = 1e10
        color best = na
        for k = 0 to levelsInp - 1 by 1
            float lvl = array.get(levelVals, k)
            if not na(lvl)
                float d = math.abs(val - lvl)
                if d < minD
                    minD := d
                    best := array.get(levelColors, k)
                    best
        best
        //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Calculations {
atrRaw   = nz(ta.atr(2000), ta.atr(200))
rangeATR = atrRaw * mult

sumWeightedClose = 0.0
sumWeights = 0.0
for i = 0 to length - 1 by 1
    delta = math.abs(close[i] - close[i + 1])
    w = delta / close[i + 1]
    sumWeightedClose := sumWeightedClose + close[i] * w
    sumWeights := sumWeights + w
    sumWeights
ma = sumWeights != 0 ? sumWeightedClose / sumWeights : na

distances = array.new_float(length)
for i = 0 to length - 1 by 1
    array.set(distances, i, math.abs(close[i] - ma))
maxDist = array.max(distances)
inRange = maxDist <= rangeATR
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Trend Direction for Heatmap {
var int trendDir = 0
trendDir := close > ma ? 1 : close < ma ? -1 : nz(trendDir[1])
noColorOnFlip = trendDir != trendDir[1]
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}

// ~~ Oscillator {
osc = rangeATR != 0 ? 100 * (close - ma) / rangeATR : na

blue = transitionzone
green = strongbullish
red = strongbearish
heatColor = getHeatColor(osc, trendDir, levelsInp, heatThresh, weakbullish, strongbullish, weakbearish, strongbearish, osc, osc, true)
oscColor = na(heatColor) or noColorOnFlip ? blue : heatColor

breakUp = close > ma + rangeATR
breakDn = close < ma - rangeATR
oscColor := breakUp ? green : breakDn ? red : oscColor

osc_ = plot(osc, 'Range Oscillator', color = oscColor, linewidth = 2)
hline(100, 'Upper Bound', color = color.gray, linestyle = hline.style_dotted)
hline(0, 'Zero', color = color.gray, linestyle = hline.style_dotted)
hline(-100, 'Lower Bound', color = color.gray, linestyle = hline.style_dotted)
zero_ = plot(0, '', display = display.none, editable = false)
fill(osc_, zero_, ta.highest(osc, 100), 0, oscColor, color(na))
fill(osc_, zero_, 0, ta.lowest(osc, 100), color(na), oscColor)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
 

 

 

 

Posted
# Range Oscillator (Zeiierman) - ThinkScript Conversion
# Assembled by Chewie
declare lower;

#---- Inputs ----#
input length = 50;
input mult = 2.0;
input atrLength = 200;
input fillOpacity = 60;          # 0–100 visual strength of shaded fill
input backgroundIsDark = yes;    # set to 'no' for white/light chart backgrounds

# Base RGB color settings
input strongBull_R = 0;
input strongBull_G = 180;
input strongBull_B = 0;

input strongBear_R = 180;
input strongBear_G = 0;
input strongBear_B = 0;

input weakBull_R = 0;
input weakBull_G = 128;
input weakBull_B = 0;

input weakBear_R = 128;
input weakBear_G = 0;
input weakBear_B = 0;

input transition_R = 0;
input transition_G = 0;
input transition_B = 255;

#---- Core Calculations ----#
def ATR = MovingAverage(AverageType.WILDERS, TrueRange(high, close, low), atrLength);
def rangeATR = ATR * mult;

# Weighted moving average using GetValue()
def sumWeightedClose = fold idx1 = 0 to length - 1
    with acc = 0
    do acc + (AbsValue(GetValue(close, idx1) - GetValue(close, idx1 + 1)) / GetValue(close, idx1 + 1)) * GetValue(close, idx1);

def sumWeights = fold idx2 = 0 to length - 1
    with acc2 = 0
    do acc2 + AbsValue(GetValue(close, idx2) - GetValue(close, idx2 + 1)) / GetValue(close, idx2 + 1);

def ma = if sumWeights != 0 then sumWeightedClose / sumWeights else Double.NaN;

# Max distance over the lookback
def maxDist = fold idx3 = 0 to length - 1
    with m = 0
    do Max(m, AbsValue(GetValue(close, idx3) - ma));

def inRange = maxDist <= rangeATR;

# Trend direction
def trendDir = if close > ma then 1 else if close < ma then -1 else trendDir[1];

# Oscillator
def osc1 = if rangeATR != 0 then 100 * (close - ma) / rangeATR else Double.NaN;

def breakUp = close > ma + rangeATR;
def breakDn = close < ma - rangeATR;

#---- Simulated Opacity Blend ----#
def w = Max(0, Min(1, fillOpacity / 100));
def bgR = if backgroundIsDark then 0 else 255;
def bgG = if backgroundIsDark then 0 else 255;
def bgB = if backgroundIsDark then 0 else 255;

def bullFillR = Round(strongBull_R * w + bgR * (1 - w), 0);
def bullFillG = Round(strongBull_G * w + bgG * (1 - w), 0);
def bullFillB = Round(strongBull_B * w + bgB * (1 - w), 0);

def bearFillR = Round(strongBear_R * w + bgR * (1 - w), 0);
def bearFillG = Round(strongBear_G * w + bgG * (1 - w), 0);
def bearFillB = Round(strongBear_B * w + bgB * (1 - w), 0);

#---- Plot and Color Logic ----#
plot Osc = osc1;
Osc.SetLineWeight(2);
Osc.AssignValueColor(
    if breakUp then CreateColor(strongBull_R, strongBull_G, strongBull_B)
    else if breakDn then CreateColor(strongBear_R, strongBear_G, strongBear_B)
    else if trendDir > 0 then CreateColor(weakBull_R, weakBull_G, weakBull_B)
    else if trendDir < 0 then CreateColor(weakBear_R, weakBear_G, weakBear_B)
    else CreateColor(transition_R, transition_G, transition_B)
);

plot OSC2 = osc1;
osc2.SetPaintingStrategy( PaintingStrategy.HISTOGRAM ); #else if osc2 > 0 and osc2 < 100 then color.dark_green else if osc2 < -100 then color.red else if osc2 > -100 and < 0 then color.dark_red else color.current
osc2.assignvalueColor(if osc2 > 200 then color.cyan else if osc2 < -200 then color.magenta else if osc2 > 100 and osc2 < 200 then color.green else if osc2 < 50 and osc2 > 0 then color.yellow else if osc2 > 50 and osc2 < 100 then color.dark_green else if osc2 < 0 and osc2 > -50 then color.dark_orange else if osc2 < -100 and osc2 > -200 then color.red else if osc2 > -100 and osc2 < -50 then color.dark_red else color.current);
# Reference Lines
plot Upper = 100;
plot Lower = -100;
plot ZeroLine = 0;
Upper.SetDefaultColor(Color.red);
Lower.SetDefaultColor(Color.GREEN);
ZeroLine.SetDefaultColor(Color.DARK_gray);


#---- Shaded Fills ----#
# Bullish fill above zero
AddCloud(
    if osc >= 0 then osc else Double.NaN,
    0,
    CreateColor(bullFillR, bullFillG, bullFillB),
    CreateColor(bullFillR, bullFillG, bullFillB)
);

# Bearish fill below zero
AddCloud(
    if osc <= 0 then osc else Double.NaN,
    0,
    CreateColor(bearFillR, bearFillG, bearFillB),
    CreateColor(bearFillR, bearFillG, bearFillB)
);

# Optional highlight clouds for extreme zones
AddCloud(
    if osc > 100 then osc else Double.NaN,
    100,
    CreateColor(strongBull_R, strongBull_G, strongBull_B),
    CreateColor(strongBull_R, strongBull_G, strongBull_B)
);
AddCloud(
    if osc < -100 then osc else Double.NaN,
    -100,
    CreateColor(strongBear_R, strongBear_G, strongBear_B),
    CreateColor(strongBear_R, strongBear_G, strongBear_B)
);

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

⤴️-Paid Ad- Check advertising disclaimer here. Add your banner here.🔥

×
×
  • Create New...