3rs Wave tradingview indicator to mt4

MQL4 Indicateurs Experts

Spécifications

I need someone who is able to convert Lonesometheblue's 3rdWave tradingview indicator from to an EA/Indicator. The indicator works very well but it only alerts buy or sell in tradingview, I need it to also alert the price of the beginning of wave 0 and 2 to use them as SL when automating the strategy. The ideal would be to make an EA with its own alerts of the indicator but the basic thing is to make some function that returns the value of "0" and "2" that are painted on the graph in order to be able to take them as a reference for the value of the SL to automate with an external EA.

Public 3rd Wave code script: 

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LonesomeTheBlue

//@version=5
indicator('3rd Wave', overlay=true, max_bars_back=500, max_lines_count=500, max_labels_count=500)
 
// import necessary functions to calculate and show the zigzag
import LonesomeTheBlue/CreateAndShowZigzag/1 as ZigZag

prd = input.int(defval=8, title='ZigZag Period', minval=2, maxval=50, group='setup')
ret_rate_min = input.float(defval=0.382, title='Min/Max Retracements', minval=0.100, maxval=0.900, inline='retrate', group='setup')
ret_rate_max = input.float(defval=0.786, title='', minval=0.100, maxval=0.900, inline='retrate', group='setup')
checkvol_support = input.bool(defval=true, title='Check Volume Support', group='setup')
target1_enb = input.bool(defval=true, title='Target 1', inline='t1', group='targets')
target1_ret = input.float(defval=1., title='', inline='t1', group='targets', tooltip = "%X of wave 1 from the begining of wave 2")
target2_enb = input.bool(defval=true, title='Target 2', inline='t2', group='targets')
target2_ret = input.float(defval=1.618, title='', inline='t2', group='targets', tooltip = "%X of wave 1 from the begining of wave 2")
target3_enb = input.bool(defval=false, title='Target 3', inline='t3', group='targets')
target3_ret = input.float(defval=2.618, title='', inline='t3', group='targets', tooltip = "%X of wave 1 from the begining of wave 2")
target4_enb = input.bool(defval=false, title='Target 4', inline='t4', group='targets')
target4_ret = input.float(defval=3.618, title='', inline='t4', group='targets', tooltip = "%X of wave 1 from the begining of wave 2")
showwave12 = input.bool(defval=true, title='Show Wave 1 and 2', group='colors')
showbo = input.bool(defval=true, title='Zone', inline='bocol', group='colors')
bupcol = input.color(defval=color.rgb(0, 255, 0, 85), title='', inline='bocol', group='colors')
bdncol = input.color(defval=color.rgb(255, 0, 0, 85), title='', inline='bocol', group='colors')
showzigzag = input.bool(defval=false, title='Zig Zag', inline='zzcol', group='colors')
upcol = input.color(defval=color.lime, title='', inline='zzcol', group='colors')
dncol = input.color(defval=color.red, title='', inline='zzcol', group='colors')

// definitions for zigzag arrays
var max_array_size = 10 // max length for zigzag array
var zigzag = array.new_float(0)
oldzigzag = array.copy(zigzag) // keep old zigzag

// get the zigzag
dir = ZigZag.getZigzag(zigzag, prd, max_array_size)
// show the zigzag
if showzigzag
    ZigZag.showZigzag(zigzag, oldzigzag, dir, upcol, dncol)


int len = array.size(zigzag) >= 8 ? bar_index - math.round(array.get(zigzag, 7)) : 1
bool vol_support = (not checkvol_support or (checkvol_support and ta.linreg(volume, len, 0) - ta.linreg(volume, len, 1) > 0))
var bool can_check_it = true
bool thereisbo = false
if (dir != dir[1])
    can_check_it := true
    can_check_it

// check if there is possible 3rd wave and show breakout if there is any
if array.size(zigzag) >= 8 and can_check_it
    w12 = math.abs(array.get(zigzag, 2) - array.get(zigzag, 4)) / math.abs(array.get(zigzag, 4) - array.get(zigzag, 6))
    if w12 >= ret_rate_min and w12 <= ret_rate_max and (dir == 1 and high > array.get(zigzag, 4) or dir == -1 and low < array.get(zigzag, 4))
        can_check_it := false
        if vol_support
            thereisbo := true
            // draw bo
            if showbo
                box.new(left=math.round(array.get(zigzag, 7)), top=array.get(zigzag, 4), right=bar_index, bottom=array.get(zigzag, 6), border_color=color.blue, border_width=1, border_style=line.style_dotted, bgcolor=dir == 1 ? bupcol : bdncol)
           
            if showwave12
                line.new(x1=math.round(array.get(zigzag, 7)), y1=array.get(zigzag, 6), x2=math.round(array.get(zigzag, 5)), y2=array.get(zigzag, 4))
                line.new(x1=math.round(array.get(zigzag, 5)), y1=array.get(zigzag, 4), x2=math.round(array.get(zigzag, 3)), y2=array.get(zigzag, 2))
                label.new(x=math.round(array.get(zigzag, 7)), y=array.get(zigzag, 6), text='0', color=color.new(color.white, 100), textcolor=color.blue, style=dir == 1 ? label.style_label_up : label.style_label_down)
                label.new(x=math.round(array.get(zigzag, 5)), y=array.get(zigzag, 4), text='1', color=color.new(color.white, 100), textcolor=color.blue, style=dir == 1 ? label.style_label_down : label.style_label_up)
                label.new(x=math.round(array.get(zigzag, 3)), y=array.get(zigzag, 2), text='2', color=color.new(color.white, 100), textcolor=color.blue, style=dir == 1 ? label.style_label_up : label.style_label_down)
   
            // draw label
            label.new(x=bar_index, y=array.get(zigzag, 6), color=dir == 1 ? upcol : dncol, style=dir == 1 ? label.style_triangleup : label.style_triangledown, size=size.small)
   
            base = array.get(zigzag, 2)
            wave1 = math.abs(array.get(zigzag, 4) - array.get(zigzag, 6))
            if target1_enb
                line.new(x1=bar_index, y1=math.max(base + dir * wave1 * target1_ret, 0), x2=math.round(array.get(zigzag, 7)), y2=math.max(base + dir * wave1 * target1_ret, 0), style=line.style_dashed)
            if target2_enb
                line.new(x1=bar_index, y1=math.max(base + dir * wave1 * target2_ret, 0), x2=math.round(array.get(zigzag, 7)), y2=math.max(base + dir * wave1 * target2_ret, 0), style=line.style_dashed)
            if target3_enb
                line.new(x1=bar_index, y1=math.max(base + dir * wave1 * target3_ret, 0), x2=math.round(array.get(zigzag, 7)), y2=math.max(base + dir * wave1 * target3_ret, 0), style=line.style_dashed)
            if target4_enb
                line.new(x1=bar_index, y1=math.max(base + dir * wave1 * target4_ret, 0), x2=math.round(array.get(zigzag, 7)), y2=math.max(base + dir * wave1 * target4_ret, 0), style=line.style_dashed)

alertcondition(thereisbo and dir ==  1, title = "Breakout Long",  message = "Breakout Long")
alertcondition(thereisbo and dir == -1, title = "Breakout Short", message = "Breakout Short")


Public  import LonesomeTheBlue/CreateAndShowZigzag/1 as ZigZag:

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LonesomeTheBlue

//@version=5

// @description Functions in this library creates/updates zigzag array and shows the zigzag
library("CreateAndShowZigzag")

Trz(float [] zigzag, int mLoc)=>
    for x = array.size(zigzag) - 1 to array.size(zigzag) > 1 ? 0 : na by 2
        if bar_index - array.get(zigzag, x) <= mLoc
            break
        array.pop(zigzag)
        array.pop(zigzag)

addtozigzag(float [] zigzag, float value) =>
    array.unshift(zigzag, bar_index)
    array.unshift(zigzag, value)

updatezigzag(float [] zigzag, float value, int dir) =>
    if array.size(zigzag) == 0
        addtozigzag(zigzag, value)
    else
        if dir == 1 and value > array.get(zigzag, 0) or dir == -1 and value < array.get(zigzag, 0)
            array.set(zigzag, 0, value)
            array.set(zigzag, 1, bar_index)

export getZigzag(float [] zigzag, int prd, int mLoc)=>
    Trz(zigzag, mLoc)
    float ph = ta.highestbars(high, prd) == 0 ? high : na
    float pl = ta.lowestbars(low, prd) == 0 ? low : na
    var int dir = 0
    dir := ph and na(pl) ? 1 :
           pl and na(ph) ? -1 :
           dir
    bool bothexist = ph and pl
    bool dirchanged = dir != dir[1]
    if ph or pl
        if bothexist
            updatezigzag(zigzag, dir == 1 ? ph : pl, dir)
            dir := -dir
            addtozigzag(zigzag, dir == 1 ? ph : pl)
        else
            if dirchanged  //and not nz(bothexist[1], false)
                addtozigzag(zigzag, dir == 1 ? ph : pl)
            else
                updatezigzag(zigzag, dir == 1 ? ph : pl, dir)
    [dir, bothexist]

export showZigzag(float [] zigzag, float [] zigzagold, int dir, bool specialcase, color upcol, color dncol)=>
    var line zzline = na
    if specialcase
        line.set_xy1(zzline, math.round(array.get(zigzag, 3)), array.get(zigzag, 2))
    if array.get(zigzag, 0) != array.get(zigzagold, 0) or array.get(zigzag, 1) != array.get(zigzagold, 1)
        if array.get(zigzag, 2) == array.get(zigzagold, 2) and array.get(zigzag, 3) == array.get(zigzagold, 3)
            line.delete(zzline)
        zzline := line.new(x1=math.round(array.get(zigzag, 1)), y1=array.get(zigzag, 0), x2=math.round(array.get(zigzag, 3)), y2=array.get(zigzag, 2), color=dir == 1 ? upcol : dncol)

export getTN()=>
    int TN = 8
    tick__ = syminfo.mintick
    while tick__ < 1
        TN += 1
        tick__ *= 10
    tick__ := high
    while tick__ > 1
        TN += 1
        tick__ /= 10
    TN


Répondu

1
Développeur 1
Évaluation
(268)
Projets
602
34%
Arbitrage
64
20% / 58%
En retard
147
24%
Travail
Publié : 1 article, 22 codes
2
Développeur 2
Évaluation
(574)
Projets
945
47%
Arbitrage
309
58% / 27%
En retard
125
13%
Gratuit
3
Développeur 3
Évaluation
Projets
0
0%
Arbitrage
0
En retard
0
Gratuit
4
Développeur 4
Évaluation
(12)
Projets
9
33%
Arbitrage
11
0% / 100%
En retard
2
22%
Gratuit
5
Développeur 5
Évaluation
(322)
Projets
499
67%
Arbitrage
5
40% / 0%
En retard
4
1%
Gratuit
Publié : 8 codes
Commandes similaires
GBPUSD Demand & Supply EA 1. Trend Direction 1H timeframe 50 EMA and 200 EMA BUY bias: 50 EMA above 200 EMA SELL bias: 50 EMA below 200 EMA 2. Demand & Supply Zones Identify strong moves away from a base Prefer fresh zones Avoid zones that have already been repeatedly tested 3. Trendlines Use ascending trendlines to support BUY setups Use descending trendlines to support SELL setups Trendline must support the overall
SCALPER EA 30+ USD
the best SCALPER EA THIS ROBOT only takes a winning posetio IT ANALYSIS THE MARKET BEFOR OPENING POSETION AND WAIT FOR A CLEAR SIGNAL LOT SIZE AJUSTEBLE TAKE PROFIT AJUSTBLE
Hi, I’m looking for a developer who can create a trading bot designed to generate a 6% profit. The daily loss limit is 3% and the total loss limit is 8%. So my aim is to have a bot that has a probability of over 75% of reaching the 6% target before hitting the loss limit. I’d like the bot to work on MT5 and TradeLocker, please
I need an Expert Advisor for MT5 on XAUUSD 1min timeframe using SMC concepts. STRATEGY RULES: SELL: 1. Identify previous day High/Low as liquidity 2. Entry only during London-NY session: 15:00-19:00 GMT+3 or broker clock. 3. If price sweeps previous day High and closes back below it 4. Check for bearish 1min FVG below sweep candle 5. Wait for BOS - lower low 6. Entry: Sell/buy at 50% of the FVG 7. SL: 10 pips above
Code An Loss Rate 90-100% MT5 EA , that can blow a 100 USD account a day ,with fixed TP of 3000 points and SL of 3000 For better Rate Calculations get an strategy that can lead to so
I'm looking for someone experienced with Thinkorswim (TOS) to help me properly set up my paper trading account . Tasks may include: Setting up the paper trading environment Configuring charts and watchlists Setting up order entry and trade settings Configuring indicators (if needed) Ensuring the account is ready for simulated trading Answering any setup questions and providing basic guidance Experience with
Shooter razor 30+ USD
Makes it takes trades by it self buy and sell, it must use the higher signals, also when I press stop it must not pick any trades I want it to take trades automatically when I press start also close by it self
Robot pro Fintokei 600 - 1000 USD
Popis zakázky: Tvorba algoritmického robota (EA) pro MetaTrader 5 (MT5) Typ projektu: Vývoj Expert Advisora ​​(EA) pro MT5 Rozpočet: Maximálně 1 000 USD (bude upřesněno podle finální složitosti strategie) Hlavní cíl: Robot musí striktně dodržovat vestavěný risk management platební pravidla prop firmy Fintokei (výzvy StartUp / Pro / Swift). 1. Základní požadavky na řízení rizik (Fintokei kompatibilita) Robot musí mít
8 cap prop firm passing 30 - 3000 USD
I am looking for an experienced MQL4/MQL5 HFT developer to build or optimize a High-Frequency Trading (HFT) Expert Advisor that can successfully pass proprietary trading firm challenges and perform consistently under live trading conditions with brokers such as 8cap or BlackBull Markets . The developer should have proven experience with HFT execution, ultra-low-latency trading, broker execution, slippage, spreads
I have a High-Frequency Trading (HFT) Expert Advisor for both MT4 and MT5 that is primarily designed to trade US30 (Dow Jones Index) . The EA performs consistently and profitably on demo accounts; however, when deployed on an IC Markets Raw or Standard live account , it begins generating losses despite what appear to be the same market conditions. At this time, I do not have access to the source code (.mq4/.mq5). I

Informations sur le projet

Budget
30 - 60 USD