New EA Free Market Maker Price Action

 


//+------------------------------------------------------------------+

//|                                        PriceAction_EA.mq4        |

//|                                 Copyright 2024, MetaQuotes Ltd.  |

//|                                              http://www.metaquotes.net/ |

//+------------------------------------------------------------------+

#property strict


// Input parameters

input double LotSize = 0.1;           // Lot size

input int Slippage = 3;               // Slippage

input int TargetProfitMultiplier = 2; // Target profit multiplier based on ATR

input int StopLossMultiplier = 3;     // Stop loss multiplier based on ATR

input int ATRPeriod = 14;             // ATR period

input int BreakoutPeriod = 20;        // Breakout period

input int MagicNumber = 123456;       // Magic number for orders


//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

{

    return INIT_SUCCEEDED;

}


//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

}


//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

{

    // Check for bullish price action, breakout, and open buy orders

    if (IsBullishPriceAction() || IsBreakoutUp())

    {

        // Close any open sell orders

        CloseSellOrders();


        // Open a buy order if there are no existing buy orders

        if (CountOpenBuyOrders() == 0)

        {

            OpenOrder(OP_BUY);

        }

    }


    // Check for bearish price action, breakout, and open sell orders

    if (IsBearishPriceAction() || IsBreakoutDown())

    {

        // Close any open buy orders

        CloseBuyOrders();


        // Open a sell order if there are no existing sell orders

        if (CountOpenSellOrders() == 0)

        {

            OpenOrder(OP_SELL);

        }

    }


    // Check for target profit and close positions

    CheckTargetProfit();

}


//+------------------------------------------------------------------+

//| Check for bullish price action (Pin Bar, Bullish Engulfing)      |

//+------------------------------------------------------------------+

bool IsBullishPriceAction()

{

    // Check for Bullish Pin Bar

    if (Close[1] > Open[1] && Low[1] < Low[2] && Low[1] < Low[3] && Close[1] > (Open[1] + High[1] + Low[1]) / 3)

    {

        Print("Bullish Pin Bar detected");

        return true;

    }


    // Check for Bullish Engulfing

    if (Close[1] > Open[1] && Open[1] < Close[2] && Close[1] > Open[2] && Open[2] > Close[2])

    {

        Print("Bullish Engulfing detected");

        return true;

    }


    return false;

}


//+------------------------------------------------------------------+

//| Check for bearish price action (Pin Bar, Bearish Engulfing)      |

//+------------------------------------------------------------------+

bool IsBearishPriceAction()

{

    // Check for Bearish Pin Bar

    if (Close[1] < Open[1] && High[1] > High[2] && High[1] > High[3] && Close[1] < (Open[1] + Low[1] + High[1]) / 3)

    {

        Print("Bearish Pin Bar detected");

        return true;

    }


    // Check for Bearish Engulfing

    if (Close[1] < Open[1] && Open[1] > Close[2] && Close[1] < Open[2] && Open[2] < Close[2])

    {

        Print("Bearish Engulfing detected");

        return true;

    }


    return false;

}


//+------------------------------------------------------------------+

//| Check for breakout up                                            |

//+------------------------------------------------------------------+

bool IsBreakoutUp()

{

    double highestHigh = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, BreakoutPeriod, 1));

    if (Close[0] > highestHigh)

    {

        Print("Breakout Up detected");

        return true;

    }

    return false;

}


//+------------------------------------------------------------------+

//| Check for breakout down                                          |

//+------------------------------------------------------------------+

bool IsBreakoutDown()

{

    double lowestLow = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, BreakoutPeriod, 1));

    if (Close[0] < lowestLow)

    {

        Print("Breakout Down detected");

        return true;

    }

    return false;

}


//+------------------------------------------------------------------+

//| Open an order                                                    |

//+------------------------------------------------------------------+

void OpenOrder(int orderType)

{

    double atr = iATR(NULL, 0, ATRPeriod, 0);

    double price = (orderType == OP_BUY) ? Ask : Bid;

    double stopLoss = (orderType == OP_BUY) ? price - StopLossMultiplier * atr : price + StopLossMultiplier * atr;

    double takeProfit = (orderType == OP_BUY) ? price + TargetProfitMultiplier * atr : price - TargetProfitMultiplier * atr;

    int ticket = OrderSend(Symbol(), orderType, LotSize, NormalizeDouble(price, Digits), Slippage, NormalizeDouble(stopLoss, Digits), NormalizeDouble(takeProfit, Digits), "PriceAction", MagicNumber, 0, (orderType == OP_BUY) ? clrGreen : clrRed);

    if (ticket < 0)

    {

        Print("Failed to open order! Error code: ", GetLastError());

    }

    else

    {

        Print("Order opened successfully. Ticket: ", ticket);

    }

}


//+------------------------------------------------------------------+

//| Close all open buy orders                                        |

//+------------------------------------------------------------------+

void CloseBuyOrders()

{

    for (int i = OrdersTotal() - 1; i >= 0; i--)

    {

        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

        {

            if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber)

            {

                if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clrNONE))

                {

                    Print("Failed to close buy order! Error code: ", GetLastError());

                }

                else

                {

                    Print("Buy order closed successfully. Ticket: ", OrderTicket());

                }

            }

        }

    }

}


//+------------------------------------------------------------------+

//| Close all open sell orders                                       |

//+------------------------------------------------------------------+

void CloseSellOrders()

{

    for (int i = OrdersTotal() - 1; i >= 0; i--)

    {

        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

        {

            if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber)

            {

                if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrNONE))

                {

                    Print("Failed to close sell order! Error code: ", GetLastError());

                }

                else

                {

                    Print("Sell order closed successfully. Ticket: ", OrderTicket());

                }

            }

        }

    }

}


//+------------------------------------------------------------------+

//| Count the number of open buy orders                              |

//+------------------------------------------------------------------+

int CountOpenBuyOrders()

{

    int count = 0;

    for (int i = OrdersTotal() - 1; i >= 0; i--)

    {

        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

        {

            if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber)

            {

                count++;

            }

        }

    }

    return count;

}


//+------------------------------------------------------------------+

//| Count the number of open sell orders                             |

//+------------------------------------------------------------------+

int CountOpenSellOrders()

{

    int count = 0;

    for (int i = OrdersTotal() - 1; i >= 0; i--)

    {

        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

        {

            if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber)

            {

                count++;

            }

        }

    }

    return count;

}


//+------------------------------------------------------------------+

//| Check for target profit and close positions                      |

//+------------------------------------------------------------------+

void CheckTargetProfit()

{

    for (int i = OrdersTotal() - 1; i >= 0; i--)

    {

        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber)

        {

            double openPrice = OrderOpenPrice();

            double currentPrice = (OrderType() == OP_BUY) ? Bid : Ask;

            double profitInPips = (OrderType() == OP_BUY ? currentPrice - openPrice : openPrice - currentPrice) / Point;


            if (profitInPips >= TargetProfitMultiplier * iATR(NULL, 0, ATRPeriod, 0) / Point)

            {

                if (!OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(currentPrice, Digits), Slippage, clrNONE))

                {

                    Print("Failed to close order! Error code: ", GetLastError());

                }

                else

                {

                    Print("Order closed successfully. Ticket: ", OrderTicket());

                }

            }

        }

    }

}

Tidak ada komentar:

Posting Komentar

PRDIKTO

Dasbor Analisis Saham BRIS - 18 Juni 2025

Dasbor Analisis Saham BRIS

Data Perdagangan & Analisis untuk 18 Juni 2025

Ringkasan Kinerja Harian

Berikut adalah ringkasan data perdagangan saham PT Bank Syariah Indonesia Tbk (BRIS) pada penutupan pasar tanggal 18 Juni 2025. Hari ini saham mengalami penurunan seiring dengan pelemahan IHSG secara umum.

Harga Penutupan

2.570

-2,65%

Tertinggi

2.640

Terendah

2.550

Volume

44,85 jt

Analisis Inti

Jelajahi berbagai aspek analisis saham BRIS, mulai dari kinerja fundamental perusahaan, pergerakan teknikal harga saham, hingga konteks strategis dan prospek sektor perbankan syariah. Gunakan tombol di bawah untuk berpindah antar-kategori analisis.

Pertumbuhan Pendapatan & Laba

BRIS menunjukkan pertumbuhan pendapatan dan laba bersih yang konsisten selama lima tahun terakhir, mencerminkan ekspansi bisnis yang solid di sektor perbankan syariah.

Perbandingan Valuasi (P/E & P/B)

Saham BRIS diperdagangkan pada valuasi premium dibandingkan rata-rata sektor finansial, menunjukkan ekspektasi pasar yang tinggi terhadap potensi pertumbuhannya di masa depan.

Prospek Valuasi Saham BRIS

Analisis valuasi menunjukkan gambaran yang kontras. Di satu sisi, model DCF konservatif menunjukkan nilai intrinsik yang lebih rendah. Di sisi lain, target harga rata-rata dari 11 analis menunjukkan potensi kenaikan yang signifikan, mencerminkan optimisme terhadap prospek pertumbuhan perusahaan.

Rekomendasi Investasi & Analisis Risiko

Berdasarkan analisis komprehensif, rekomendasi untuk saham BRIS adalah:

BELI (BUY)

Rekomendasi ini didasarkan pada fundamental perusahaan yang kuat, posisi strategis di sektor yang bertumbuh, dan sentimen positif dari analis, yang secara kolektif melampaui risiko volatilitas jangka pendek.

Peluang & Justifikasi Beli

  • Fundamental Kuat: Pertumbuhan pendapatan, laba, dan aset yang konsisten melampaui rata-rata industri.
  • Pemimpin Pasar Syariah: Posisi dominan di sektor perbankan syariah yang sedang tumbuh pesat dengan dukungan pemerintah.
  • Sentimen Analis Positif: Konsensus "Strong Buy" dengan target harga rata-rata yang menyiratkan potensi kenaikan >40%.
  • Titik Masuk Menarik: Penurunan harga akibat faktor makro bisa menjadi peluang beli sebelum potensi rebound teknis.

⚠️ Risiko yang Perlu Diperhatikan

  • Transisi Akuisisi: Ketidakpastian terkait akuisisi Danantara dapat menyebabkan volatilitas jangka pendek.
  • Valuasi Premium: Harga saham bergantung pada realisasi ekspektasi pertumbuhan yang tinggi. Kegagalan memenuhi ekspektasi dapat memicu koreksi.
  • Sentimen Pasar Makro: Kebijakan suku bunga dan kondisi ekonomi global dapat terus menekan sektor keuangan.
  • Volatilitas Tinggi: Beta 1.46x menandakan saham ini lebih fluktuatif dibandingkan pasar secara umum.

Dasbor ini dibuat untuk tujuan ilustrasi berdasarkan data dan analisis yang tersedia per 18 Juni 2025. Ini bukan merupakan nasihat keuangan. Lakukan riset Anda sendiri sebelum membuat keputusan investasi.

Analisis Peluang Dogecoin sebagai Koin Meme dan Rekomendasi bagi Pelaku Pasar

Analisis Peluang Dogecoin sebagai Koin Meme dan Rekomendasi bagi Pelaku Pasar Laporan ini menyajikan tinjauan komprehensif tenta...