1. Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)
    Dismiss Notice

Suggestion pls indicator to ea

Discussion in 'Expert Advisor atau Robot Forex' started by brolyssj2020, 28 Dec 2024 at 01:08.

  1. brolyssj2020

    brolyssj2020 Member

    Equity
    Credit
    Ref Point
    hello
    pls
    I want to convert this indicator into an expert


    setting



    -------------------------indicator setup----------------------
    #ADX _Bot_v1
    --------------------------------------------------------------

    ADX_Period : 3

    DeltaAdx : 1

    Smoothing : 1

    SignalGap : 3

    Arrow : true

    close all in opposite signal : true

    lot : 0.01

    use risk : true

    risk percent : 0.01 (At the amount of $50, the trade open with a lot of 0.01) (100 usd-0.01)(200 usd-0.02)(300 usd-0.03)(400 usd-0.04)........

    stop loss on : true

    points SL : 20 points

    Trailing stop on : true

    Trailing stop : 3 points

    Comment : ++ ADX_Bot_v1 ++

    EAName : ADX_Bot_v1

    Magic : 11111


    ------------------------------------------------------------------------------------------------------------
     

    Attached Files:

    Last edited: 28 Dec 2024 at 01:49
  2. LuigiM2604

    LuigiM2604 Member Credit Hunter

    Equity
    Credit
    Ref Point
    //+-------------------------------------------------------------- -------------------+
    //| ADX_Bot_v1.mq4 |
    //| Expert Advisor basato su ADX |
    //+-------------------------------------------------------------- -------------------+
    #proprietà rigorosa
    // Impostazioni di input
    ingresso int ADX_Period = 3;
    immettere doppio DeltaAdx = 1.0;
    input int Levigatura = 1;
    ingresso int SignalGap = 3;
    immettere double LotSize = 0,01;
    input bool UseRisk = true;
    immettere double RiskPercentage = 0,01;
    input bool CloseAllOppositeSignal = true;
    input bool StopLossOn = vero;
    input int PuntiSL = 20;
    input bool TrailingStopOn = true;
    ingresso int TrailingStop = 3;
    stringa di input CommentText = "++ ADX_Bot_v1 ++";
    input int NumeroMagico = 11111;
    // Variabili globali
    doppio PrevADX = 0,0;
    //+-------------------------------------------------------------- -------------------+
    //| Funzione di inizializzazione esperta |
    //+-------------------------------------------------------------- -------------------+
    int OnInit()
    {
    Print("ADX_Bot_v1 inizializzato.");
    restituisci(INIT_RIUSCITO);
    }
    //+-------------------------------------------------------------- -------------------+
    //| Funzione di deinizializzazione esperta |
    //+-------------------------------------------------------------- -------------------+
    void OnDeinit(const int motivo)
    {
    Print("ADX_Bot_v1 deinizializzato.");
    }
    //+-------------------------------------------------------------- -------------------+
    //| Funzione tick esperto |
    //+-------------------------------------------------------------- -------------------+
    annullare OnTick()
    {
    doppio ADX = iADX(NULL, 0, ADX_Period, PRICE_CLOSE, MODE_MAIN, 0);
    doppio PlusDI = iADX(NULL, 0, ADX_Period, PRICE_CLOSE, MODE_PUSDI, 0);
    doppio MinusDI = iADX(NULL, 0, ADX_Period, PRICE_CLOSE, MODE_MINUSDI, 0);
    // Controlla se ADX ha superato la soglia Delta
    bool BuySignal = (ADX > DeltaAdx && PlusDI > MinusDI);
    bool SellSignal = (ADX > DeltaAdx && MinusDI > PlusDI);
    // Gestire le posizioni di chiusura sul segnale opposto
    se (ChiudiTuttiSegnaliOpposti)
    {
    se (BuySignal) ChiudiTutto(OP_SELL);
    se (SellSignal) ChiudiTutto(OP_BUY);
    }
    // Apri le negoziazioni in base ai segnali
    se (BuySignal && !PositionExists(OP_BUY))
    OpenTrade(OP_BUY);
    altrimenti se (SellSignal && !PositionExists(OP_SELL))
    OpenTrade(OP_SELL);
    // Arresto di fine corsa
    se (TrailingStopOn) ApplicaTrailingStop();
    }
    //+-------------------------------------------------------------- -------------------+
    //| Funzioni |
    //+-------------------------------------------------------------- -------------------+
    void OpenTrade(int segnaleType)
    {
    doppio lotto = LotSize;
    se (UseRisk)
    lotto = CalcolaRischio();
    prezzo doppio = (signalType == OP_BUY) ? Chiedi : Offerta;
    double sl = (signalType == OP_BUY) ? prezzo - PuntiSL * Punto : prezzo + PuntiSL * Punto;
    double tp = 0; // Take profit non specificato
    int ticket = OrderSend(Symbol(), signalType, lot, price, 3, sl, tp, CommentText, MagicNumber, 0, clrBlue);
    se (biglietto < 0)
    Print("Errore durante l'apertura dell'ordine: ", GetLastError());
    }
    void CloseAll(int segnaleType)
    {
    per (int i = OrdersTotal() - 1; i >= 0; i--)
    {
    se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    if (OrderMagicNumber() == MagicNumber && OrderType() != signalType)
    {
    se (!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 3, clrRed))
    Print("Errore durante la chiusura dell'ordine: ", GetLastError());
    }
    }
    }
    }
    bool PosizioneEsiste(int segnaleTipo)
    {
    per (int i = OrdersTotal() - 1; i >= 0; i--)
    {
    se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    if (OrderMagicNumber() == MagicNumber && OrderType() == signalType)
    restituisci vero;
    }
    }
    restituisci falso;
    }
    doppio CalcolaRischio()
    {
    doppio saldo = AccountBalance();
    doppio riskAmount = saldo * RiskPercentage;
    doppio lotto = riskAmount / (PointsSL * Point * MarketInfo(Symbol(), MODE_TICKVALUE));
    restituisci NormalizeDouble(lotto, 2);
    }
    void ApplicaStopTrailing()
    {
    per (int i = OrdersTotal() - 1; i >= 0; i--)
    {
    se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
    se (OrderMagicNumber() == MagicNumber)
    {
    doppio newStop = 0;
    se (OrderType() == OP_BUY)
    newStop = Offerta - TrailingStop * Punto;
    altrimenti se (OrderType() == OP_SELL)
    newStop = Chiedi + TrailingStop * Punto;
    if ((OrderType() == OP_BUY && newStop > OrderStopLoss()) ||
    (OrderType() == OP_SELL && newStop < OrderStopLoss()))
    {
    if (!OrderModify(OrderTicket(), OrderOpenPrice(), newStop, OrderTakeProfit(), 0, clrGreen))
    Print("Errore durante la modifica dell'ordine: ", GetLastError());
    }
    }
    }
    }
    }
     
  3. LuigiM2604

    LuigiM2604 Member Credit Hunter

    Equity
    Credit
    Ref Point

Share This Page