Bank Pusat dan Pemain Besar: Perubahan sedikit dalam kod semula
Results 1 to 8 of 8

Thread: Bank Pusat dan Pemain Besar: Perubahan sedikit dalam kod semula

  1. #1
    Saya baru-baru ini tertarik dengan benang dipanggil Bank Pusat dan Pemain Besar. Egy dasar adalah untuk membeli atau menjual ke arah pergerakan 2 pip pertama dalam harga di London dan New York terbuka. Penulis thread menggunakan SL yang sangat kecil (2 pips), TP 140 dan sangat baik dengan egy. EA (lihat kod di bawah) yang dibangunkan untuk egy ini berfungsi dengan baik kecuali untuk satu perkara. Seperti yang akan bergerak anda berhenti ke BE pip dengan pip (sehingga BE dicapai) sebagai harga bergerak untuk memihak kepada anda. Masalah yang saya ada adalah, walaupun EA telah menetapkan berhenti saya ke BE, saya masih kehilangan komisen yang saya perlu bayar dalam perdagangan. Bolehkah seseorang menyesuaikan kod di bawah (dalam cetak tebal) perubahan yang perlu untuk mempunyai EA membawa berhenti kepada BE (x) bilangan pip untuk menampung kos komisen. terima kasih/ --------------------------------------------- ---------------------
    //| CBBP_EA_v2-0.mq4 |
    //| Zen Leow |
    //| |
    // ----------------------------------------------- -------------------
    #property hak cipta Zen Leow
    #property link

    #include lt; stdlib.mqhgt;
    #include lt; stderror.mqhgt;
    #define PRIMARY_ORDER 1
    #define SECONDARY_ORDER 2

    extern int EA_MAGIC_NUM = 3947947;
    extern bool IsECN = true;
    extern bool CheckHourOfAttach = true;
    tali luaran luar Sesi1 = Sesi London;
    extern int SessionOpenHour1 = 8;
    tali luaran Session2 = Sesi New York;
    extern int SessionOpenHour2 = 13;
    extern int GraceMinutes = 5;
    extern bool Show_Comments = true;
    extern double UserDefinedSpread = 0;

    extern int Slippage = 3;
    extern double Pip_Distance = 2;
    extern int TakeProfit = 140;
    extern int StopLoss = 5;
    extern bool UseJumpingStop = false;
    extern int TrailingStop = 0;
    extern bool Add_Spread_To_StopLoss = false;
    extern bool Use_Spread_Filtering = true;
    extern double Spread_Filter = 1.0;

    eksternal bool MoneyManagement = true;
    extern double RiskPercent = 0.25;
    extern bool UseEquity = false;
    extern bool Use_BE = true;
    extern double BreakEven_Pips = 5.0;
    extern double FixedLots = 0.1;
    extern double MaxLots = 15.0;
    extern double MinLots = 0.01;
    extern int LotsDecimalAllowed = 2;

    string msg =;
    double CustomSpread = 0;
    int PipFactor = 1;
    bool StartupStatusOK = true;
    int the_StopLoss = 0;
    bool TradeTheSession = true;
    bool ProblemLogged = false;
    int todayOfYear = 0;
    bool SessionIsOn = false;
    double theSessionOpenPrice;
    string latestSession;
    int currentSessionHour;
    bool SessionOpenPriceWritten = false;

    // ----------------------------------------------- -------------------
    //| fungsi permulaan pakar |
    // ----------------------------------------------- -------------------
    int init ()
    {
    //----
    int currentHour = TimeHour (TimeCurrent ());
    jika ((currentHour == SessionOpenHour1 || currentHour == SessionOpenHour2) CheckHourOfAttach)
    {
    Peringatan (IMPT: Anda tidak perlu melampirkan EA ini semasa Sesi1 Waktu buka atau jam Sesi2 Buka);
    StartupStatusOK = false;
    }
    jika (Period () gt; PERIOD_H1)
    {
    Pemberitahuan (EA ini hanya boleh dilampirkan pada Carta dengan jangka masa KURANG DARIPADA 1 jam);
    StartupStatusOK = false;
    }
    jika (MinLots lt; MarketInfo (Simbol (), MODE_MINLOT))
    {
    Amaran (MinLots tidak sah: MinLots | Cuba: MarketInfo (Simbol (), MODE_MINLOT));
    StartupStatusOK = false;
    }
    jika (MaxLots gt; MarketInfo (Symbol (), MODE_MAXLOT))
    {
    Pemberitahuan (MaxLots tidak sah: MaxLots | Cuba: MarketInfo (Simbol (), MODE_MAXLOT));
    StartupStatusOK = false;
    }
    jika (SessionOpenHour1 lt; 0 || SessionOpenHour1 gt; 23)
    {
    Pemberitahuan (Waktu Pembukaan tidak sah yang diberikan untuk Sesi1 : SessionOpenHour1);
    StartupStatusOK = false;
    }
    jika (SessionOpenHour2 lt; 0 || SessionOpenHour2 gt; 23)
    {
    Pemberitahuan (Waktu Pembukaan tidak sah yang diberikan untuk Sesi2 : SessionOpenHour2);
    StartupStatusOK = false;
    }
    jika (MoneyManagement (RiskPercent lt; = 0 || RiskPercent gt; 100))
    {
    Pemberitahuan (RiskPercent tidak sah diberikan: RiskPercent %);
    StartupStatusOK = false;
    }
    jika (StartupStatusOK)
    {
    Pemberitahuan (CBBP EA dimuatkan pada Simbol () dengan input yang sah);
    }
    WriteToLogFile (Mula CBBP EA);

    GetSpread ();

    todayOfYear = DayOfYear ();
    //Katering untuk pips pecahan
    jika (Digit == 3 || Digit == 5)
    {
    PipFactor = 10;
    }
    Slippage = Slippage * PipFactor;
    jika (Show_Comments)
    {
    WriteComment ();
    }
    //----
    kembali (0);
    }

    // ----------------------------------------------- -------------------
    //| fungsi deinitialization pakar |
    // ----------------------------------------------- -------------------
    int deinit ()
    {
    //----

    //----
    kembali (0);
    }


    // ----------------------------------------------- -------------------
    //| Fungsi logik pengurusan perdagangan |
    // ----------------------------------------------- -------------------

    bool TradeNotPlacedYet ()
    {
    int total = OrdersTotal ();
    jika (jumlah gt; 0)
    {
    untuk (int cnt = 0; cntlt; jumlah; cnt )
    {
    jika (OrderSelect (cnt, SELECT_BY_POS))
    {
    jika (OrderSymbol () == Simbol () OrderMagicNumber () == EA_MAGIC_NUM)
    {
    SessionIsOn = false;
    kembali (palsu);
    }
    }
    }
    }
    //dalam hal perdagangan telah dibuka dan ditutup untuk sesi ini
    int histotal = OrdersHistoryTotal ();
    jika (histotal gt; 0)
    {
    untuk (cnt = 0; cntlt; histotal; cnt )
    {
    jika (OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY))
    {
    jika (OrderSymbol () == Simbol () OrderMagicNumber () == EA_MAGIC_NUM)
    {
    datetime LatestSessionStart = iTime (NULL, PERIOD_H1,0);
    datetime LatestSessionGrace = LatestSessionStart (GraceMinutes * 60);
    datetime CurrentOrderOpenTime = OrderOpenTime ();
    jika (CurrentOrderOpenTime gt; = LatestSessionStart CurrentOrderOpenTime lt; = LatestSessionGrace)
    {
    SessionIsOn = false;
    kembali (palsu);
    }
    }
    }
    }
    }
    kembali (benar);
    }

    booting Should_Buy (Int SessionOpenIndex)
    {
    jika (SessionOpenIndex == -1)
    {
    kembali (palsu);
    }
    theSessionOpenPrice = Buka [SessionOpenIndex];
    double theSessionCurrentPrice = Close [0];
    jika (theSessionCurrentPrice gt; theSessionOpenPrice)
    {
    double lookoutPrice = theSessionOpenPrice (Pip_Distance * Point * PipFactor);
    jika (theSessionCurrentPrice gt; = lookoutPrice)
    {
    jika (Spread_Still_In_Range ())
    {
    kembali (benar);
    }
    lain
    {
    jika (! ProblemLogged)
    {
    string logmsg = Penyebaran adalah DoubleToStr (CustomSpread, 1) apabila harga berpindah DoubleToStr (Pip_Distance, 1) dari Harga Terbuka Session ini. Tidak ada perdagangan untuk sesi ini;
    WriteToLogFile (logmsg);
    ProblemLogged = true;
    TradeTheSession = false;
    }
    }
    }
    }
    kembali (palsu);
    }

    booting Should_Sell (int SessionOpenIndex)
    {
    jika (SessionOpenIndex == -1)
    {
    kembali (palsu);
    }
    theSessionOpenPrice = Buka [SessionOpenIndex];
    double theSessionCurrentPrice = Close [0];
    jika (theSessionCurrentPrice lt; theSessionOpenPrice)
    {
    double lookoutPrice = theSessionOpenPrice - (Pip_Distance * Point * PipFactor);
    jika (theSessionCurrentPrice lt; = lookoutPrice)
    {
    jika (Spread_Still_In_Range ())
    {
    kembali (benar);
    }
    lain
    {
    jika (! ProblemLogged)
    {
    string logmsg = Penyebaran adalah DoubleToStr (CustomSpread, 1) apabila harga berpindah DoubleToStr (Pip_Distance, 1) dari Harga Terbuka Session ini. Tidak ada perdagangan untuk sesi ini;
    WriteToLogFile (logmsg);
    ProblemLogged = true;
    TradeTheSession = false;
    }
    }
    }
    }
    kembali (palsu);
    }

    double PositionSizeToOpen (int StopLossPips)
    {
    PositionSize double;
    double riskDollars;

    jika (MoneyManagement StopLossPips gt; 0)
    {
    jika (UseEquity)
    {
    riskDollars = (AccountEquity ()100) * RiskPercent;
    }
    lain
    {
    riskDollars = (AccountBalance ()100) * RiskPercent;
    }
    PositionSize = (riskDollarsStopLossPips)(MarketInfo (Simbol (), MODE_TICKVALUE) * PipFactor);
    }

    jika (MoneyManagement StopLossPips lt; = 0)
    {
    jika (UseEquity)
    {
    PositionSize = ((AccountEquity ()100) * RiskPercent)(MarketInfo (Simbol (), MODE_LOTSIZE)AkaunLeverage ());
    }
    lain
    {
    PositionSize = ((AccountBalance ()100) * RiskPercent)(MarketInfo (Simbol (), MODE_LOTSIZE)AkaunLeverage ());
    }
    }

    jika (! MoneyManagement)
    {
    PositionSize = FixedLots;
    }

    jika (PositionSize lt; MinLots)
    {
    PositionSize = MinLots;
    }
    jika (PositionSize gt; MaxLots)
    {
    PositionSize = MaxLots;
    }
    PositionSize = NormalizeDouble (PositionSize, LotsDecimalAllowed);
    pulangan (kedudukan kedudukan);
    }

    booth SendOrders (int BuyOrSell, double LotSize, double PriceToOpen, double Slippage, double SL_Price, double TP_Price, komen string, datetime ExpirationTime)
    {
    tiket int, ralatType;

    jika (BuyOrSell == OP_BUY)
    {
    jika (IsECN)
    {
    Cetak (Tawaran: Tawaran Ask: Tanya | Pembelian Beli: Simbol () , BuyOrSell , LotSize , PriceToOpen , Slippage ;
    tiket = OrderSend (Symbol (), BuyOrSell, LotSize, PriceToOpen, Slippage, 0,0, komen, EA_MAGIC_NUM, ExpirationTime, Green);
    jika (ticketgt; 0)
    {
    jika (OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES))
    {
    Cetak (pesanan BUY dibuka:, OrderOpenPrice ());
    msg = tiket : Beli posisi dibuka di DoubleToStr (OrderOpenPrice (), Digit);
    WriteToLogFile (msg);
    jika (OrderModify (tiket, OrderOpenPrice (), SL_Price, TP_Price, 0))
    {
    Cetak (Stop Loss dan Take Profit ditambah);
    msg = tiket : Stop Loss: DoubleToStr (SL_Price, Digits) dan Take Profit DoubleToStr (TP_Price, Digits) tambah;
    WriteToLogFile (msg);
    }
    lain
    {
    errorType = GetLastError ();
    Print (ERROR menambah Stop Loss and Take Profit -, ErrorDescription (errorType));
    msg = tiket : ERROR menambahkan Stop Loss: DoubleToStr (SL_Price, Digits) dan Take Profit DoubleToStr (TP_Price, Digits) - ErrorDescription (errorType);
    WriteToLogFile (msg);
    }
    kembali (benar);
    }
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (Ralat membuka pesanan BUY:, ErrorDescription (errorType));
    msg = TIDAK BOLEH membuka posisi BELI. ErrorDescription (errorType);
    WriteToLogFile (msg);
    kembali (palsu);
    }
    }
    lain
    {
    Cetak (Tawaran: Tawaran Ask: Tanya | Pembelian Beli: Simbol () , BuyOrSell , LotSize , PriceToOpen , Slippage ;
    tiket = OrderSend (Symbol (), BuyOrSell, LotSize, PriceToOpen, Slippage, SL_Price, TP_Price, komen, EA_MAGIC_NUM, ExpirationTime, Green);
    jika (ticketgt; 0)
    {
    jika (OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES))
    {
    Cetak (pesanan BUY dibuka:, OrderOpenPrice ());
    msg = tiket : Beli posisi dibuka. ErrorDescription (errorType);
    WriteToLogFile (msg);
    kembali (benar);
    }
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (Ralat membuka pesanan BUY:, ErrorDescription (errorType));
    msg = TIDAK BOLEH membuka posisi BELI. ErrorDescription (errorType);
    WriteToLogFile (msg);
    kembali (palsu);
    }
    }
    }
    jika (BuyOrSell == OP_SELL)
    {
    jika (IsECN)
    {
    Cetak (Tawaran: Tawaran Ask: Tanya | Pembelian Jual: Simbol () , BuyOrSell , LotSize , PriceToOpen , Slippage , SL_Price , TP_Price ;
    tiket = OrderSend (Symbol (), BuyOrSell, LotSize, PriceToOpen, Slippage, 0,0, komen, EA_MAGIC_NUM, ExpirationTime, Red);
    jika (ticketgt; 0)
    {
    jika (OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES))
    {
    Cetak (pesanan SELESYAN dibuka:, OrderOpenPrice ());
    msg = tiket : Jual posisi dibuka di DoubleToStr (OrderOpenPrice (), Digit);
    WriteToLogFile (msg);
    jika (OrderModify (tiket, OrderOpenPrice (), SL_Price, TP_Price, 0))
    {
    Cetak (Stop Loss dan Take Profit ditambah);
    msg = tiket : Stop Loss: DoubleToStr (SL_Price, Digits) dan Take Profit DoubleToStr (TP_Price, Digits) tambah;
    WriteToLogFile (msg);
    }
    lain
    {
    errorType = GetLastError ();
    Print (ERROR menambah Stop Loss and Take Profit -, ErrorDescription (errorType));
    msg = tiket : ERROR menambahkan Stop Loss: DoubleToStr (SL_Price, Digits) dan Take Profit DoubleToStr (TP_Price, Digits) - ErrorDescription (errorType);
    WriteToLogFile (msg);
    }
    kembali (benar);
    }
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (Ralat membuka pesanan SELL:, ErrorDescription (errorType));
    msg = TIDAK BOLEH membuka posisi JUAL. ErrorDescription (errorType);
    WriteToLogFile (msg);
    kembali (palsu);
    }
    }
    lain
    {
    Cetak (Tawaran: Tawaran Ask: Tanya | Pembelian Jual: Simbol () , BuyOrSell , LotSize , PriceToOpen , Slippage , SL_Price , TP_Price ;
    tiket = OrderSend (Symbol (), BuyOrSell, LotSize, PriceToOpen, Slippage, SL_Price, TP_Price, komen, EA_MAGIC_NUM, ExpirationTime, Red);
    jika (ticketgt; 0)
    {
    jika (OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES))
    {
    Cetak (Jual pesanan dibuka:, OrderOpenPrice ());
    msg = tiket : Jual posisi dibuka. ErrorDescription (errorType);
    WriteToLogFile (msg);
    kembali (benar);
    }
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (Ralat membuka pesanan SELL:, ErrorDescription (errorType));
    msg = TIDAK BOLEH membuka posisi JUAL. ErrorDescription (errorType);
    WriteToLogFile (msg);
    kembali (palsu);
    }
    }
    }
    }


    Spread_Still_In_Range ()
    {
    jika (Use_Spread_Filtering CustomSpread gt; Spread_Filter)
    {
    kembali (palsu);
    }
    kembali (benar);
    }


    tidak sah OpenBuyOrder ()
    {
    RefreshRates ();
    double PriceToOpen, TakeProfitPrice, StopLossPrice, PositionSize;
    PriceToOpen = Ask;
    PriceToOpen = NormalizeDouble (PriceToOpen, Digits);
    PositionSize = PositionSizeToOpen (the_StopLoss);
    jika (TakeProfit == 0)
    {
    TakeProfitPrice = 0;
    }
    lain
    {
    TakeProfitPrice = PriceToOpen (TakeProfit * Point * PipFactor);
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice, Digits);
    }
    jika (the_StopLoss == 0)
    {
    StopLossPrice = 0;
    }
    lain
    {
    StopLossPrice = PriceToOpen - (the_StopLoss * Point * PipFactor);
    StopLossPrice = NormalizeDouble (StopLossPrice, Digits);
    }
    jika (PositionSize lt; MinLots)
    {
    PositionSize = MinLots;
    }
    jika (PositionSize gt; MaxLots)
    {
    PositionSize = MaxLots;
    }
    PositionSize = NormalizeDouble (PositionSize, LotsDecimalAllowed);
    string DateNow = TimeDay (TimeCurrent ()) - TimeMonth (TimeCurrent ()) - TimeYear (TimeCurrent ());
    SendOrders (OP_BUY, PositionSize, PriceToOpen, Slippage, StopLossPrice, TakeProfitPrice, CBBP_ DateNow, 0);
    }

    tidak sah OpenSellOrder ()
    {
    RefreshRates ();
    double PriceToOpen, TakeProfitPrice, StopLossPrice, PositionSize;
    PriceToOpen = Bid;
    PriceToOpen = NormalizeDouble (PriceToOpen, Digits);
    PositionSize = PositionSizeToOpen (the_StopLoss);
    jika (TakeProfit == 0)
    {
    TakeProfitPrice = 0;
    }
    lain
    {
    TakeProfitPrice = PriceToOpen - (TakeProfit * Point * PipFactor);
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice, Digits);
    }
    jika (the_StopLoss == 0)
    {
    StopLossPrice = 0;
    }
    lain
    {
    StopLossPrice = PriceToOpen (the_StopLoss * Point * PipFactor);
    StopLossPrice = NormalizeDouble (StopLossPrice, Digits);
    }

    jika (PositionSize lt; MinLots)
    {
    PositionSize = MinLots;
    }
    jika (PositionSize gt; MaxLots)
    {
    PositionSize = MaxLots;
    }
    PositionSize = NormalizeDouble (PositionSize, LotsDecimalAllowed);
    string DateNow = TimeDay (TimeCurrent ()) - TimeMonth (TimeCurrent ()) - TimeYear (TimeCurrent ());
    SendOrders (OP_SELL, PositionSize, PriceToOpen, Slippage, StopLossPrice, TakeProfitPrice, DateNow, 0);
    }

    tidak sah ManageTrades ()
    {
    double TrailLevel = PipFactor * Point * TrailingStop;
    TrailLevel = NormalizeDouble (TrailLevel, Digits);
    double BE_Level = PipFactor * Point * BreakEven_Pips;
    BE_Level = NormalizeDouble (BE_Level, Digits);
    double TakeProfitPrice, StopLossPrice;
    string logmsg =;
    tiket int, ralatType;
    double closeNOWprice = 0;

    int total = OrdersTotal ();
    jika (jumlah gt; 0)
    {
    //mesti pergi ke belakang
    untuk (int cnt = total-1; cntgt; = 0; cnt--)
    {
    jika (OrderSelect (cnt, SELECT_BY_POS))
    {
    jika (OrderSymbol () == Simbol () OrderMagicNumber () == EA_MAGIC_NUM)
    {
    jika (OrderType () == OP_BUY)
    {
    //Sekiranya Stop Loss dan TakeProfit tidak ditambah. Mari buat sesuatu mengenainya di sini ...
    jika (OrderStopLoss () == 0 the_StopLoss! = 0)
    {
    tiket = OrderTicket ();
    //Tutup perdagangan dengan serta-merta sekiranya harga sudah berpindah patah tahap stop loss
    jika (OrderOpenPrice () - Bid gt; = PipFactor * Point * the_StopLoss)
    {
    closeNOWprice = NormalizeDouble (Bid, Digits);
    jika (OrderClose (tiket, OrderLots (), closeNOWprice, Slippage, Red))
    {
    Cetak (Kecemasan (Stop Loss) penutup pesanan:, tiket, berjaya);
    logmsg = tiket : Kecemasan (Stop Loss) penutupan berjaya;
    WriteToLogFile (logmsg);
    terus;
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (Ralat! Kecemasan (Stop Loss) penutup pesanan:, tiket, gagal! -, ErrorDescription (errorType));
    logmsg = tiket : Kecemasan (Stop Loss) penutupan pesanan: tiket gagal! - ErrorDescription (errorType);
    WriteToLogFile (logmsg);
    }
    }
    lain
    {
    //cuba letakkan tahap Stop Loss dan Take Profit sekarang
    StopLossPrice = OrderOpenPrice () - (the_StopLoss * Point * PipFactor);
    StopLossPrice = NormalizeDouble (StopLossPrice, Digits);
    TakeProfitPrice = OrderOpenPrice () (TakeProfit * Point * PipFactor);
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice, Digits);
    jika (OrderModify (tiket, OrderOpenPrice (), StopLossPrice, TakeProfitPrice, 0))
    {
    Cetak (Stop Loss dan Take Profit order:, tiket, tambah berjaya);
    logmsg = tiket : Stop Loss and Take Profit berjaya berjaya !;
    WriteToLogFile (logmsg);
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (ERROR! Menambah Stop Loss dan Take Profit order:, tiket, gagal! -, ErrorDescription (errorType));
    logmsg = tiket : Menambah Stop Loss dan Mengambil Keuntungan pesanan: tiket gagal! - ErrorDescription (errorType);
    WriteToLogFile (logmsg);
    }
    }
    }
    //Sama seperti di atas kecuali ini menangani senario brek tahap takeprofit
    jika (OrderTakeProfit () == 0 TakeProfit! = 0)
    {
    //Tutup perdagangan dengan serta-merta sekiranya harga sudah berpindah patah tahap stop loss
    jika (Bid-OrderOpenPrice () gt; = PipFactor * Point * TakeProfit)
    {
    tiket = OrderTicket ();
    closeNOWprice = NormalizeDouble (Bid, Digits);
    jika (OrderClose (tiket, OrderLots (), closeNOWprice, Slippage, Blue))
    {
    Cetak (Kecemasan (Take Profit) penutupan pesanan:, tiket, berjaya);
    logmsg = tiket : Kecemasan (Take Profit) penutupan berjaya;
    WriteToLogFile (logmsg);
    terus;
    }
    lain
    {
    errorType = GetLastError ();
    Print (ERROR!) Kecemasan (Take Profit) penutup pesanan:, tiket, gagal! -, ErrorDescription (errorType));
    logmsg = tiket : Kecemasan (Take Profit) penutupan pesanan: tiket gagal! - ErrorDescription (errorType);
    WriteToLogFile (logmsg);
    }
    }
    }

    //Periksa untuk Breakeven.
    jika (Use_BE)
    {
    jika (Bid-OrderStopLoss () gt; PipFactor * Point * BreakEven_Pips)
    {
    jika (OrderStopLoss () lt; OrderOpenPrice ())
    {
    StopLossPrice = Bid ​​- BE_Level;
    StopLossPrice = NormalizeDouble (StopLossPrice, Digits);
    jika (StopLossPrice gt; OrderOpenPrice ())
    {
    jika (OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice (), OrderTakeProfit (), 0, Hijau))
    {
    logmsg = Pesanan Beli OrderTicket () SL mencapai tahap breakeven;
    WriteToLogFile (logmsg);
    }
    }
    lain
    {
    jika (OrderModify (OrderTicket (), OrderOpenPrice (), StopLossPrice, OrderTakeProfit (), 0, Hijau))
    {
    logmsg = Buy Order OrderTicket () SL bergerak ke arah tahap breakeven ;;
    WriteToLogFile (logmsg);
    }
    }
    }
    }
    }
    //Periksa Stop Floating
    jika (! UseJumpingStop (TrailingStop! = 0))
    {
    jika ((Tawaran-Pesanan BukaPilihan ()) gt; TrailLevel ((Bid-OrderOpenPrice ()) gt; = BE_Level || OrderStopLoss () gt; = OrderOpenPrice ()
    {
    jika (OrderStopLoss () lt; Bid-TrailLevel)
    {
    StopLossPrice = NormalizeDouble (Bid-TrailLevel, Digits);
    OrderModify (OrderTicket (), OrderOpenPrice (), StopLossPrice, OrderTakeProfit (), 0, Hijau);
    }
    }
    }
    //Periksa Stop Jumping
    jika (UseJumpingStop (TrailingStop! = 0))
    {
    jika ((Bid-OrderStopLoss () gt; (TrailLevel * 2)) ((Bid-OrderOpenPrice ()) gt; = BE_Level || OrderStopLoss () gt; = OrderOpenPrice ()
    {
    jika ((OrderStopLoss () TrailLevel) lt; OrderTakeProfit () || OrderTakeProfit () == 0)/Stop stop loss tidak boleh lebih tinggi dari mengambil tahap keuntungan
    {
    StopLossPrice = NormalizeDouble (OrderStopLoss () TrailLevel, Digits);
    OrderModify (OrderTicket (), OrderOpenPrice (), StopLossPrice, OrderTakeProfit (), 0, Hijau);
    }
    }
    }
    }

    jika (OrderType () == OP_SELL)
    {
    //Sekiranya Stop Loss dan TakeProfit tidak ditambah. Mari buat sesuatu mengenainya di sini ...
    jika (OrderStopLoss () == 0 the_StopLoss! = 0)
    {
    tiket = OrderTicket ();
    //Tutup perdagangan dengan serta-merta sekiranya harga sudah berpindah patah tahap stop loss
    jika (Ask - OrderOpenPrice () gt; = PipFactor * Point * the_StopLoss)
    {
    closeNOWprice = NormalizeDouble (Ask, Digits);
    jika (OrderClose (tiket, OrderLots (), closeNOWprice, Slippage, Red))
    {
    Cetak (Kecemasan (Stop Loss) penutup pesanan:, tiket, berjaya);
    logmsg = tiket : Kecemasan (Stop Loss) penutupan berjaya;
    WriteToLogFile (logmsg);
    terus;
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (Ralat! Kecemasan (Stop Loss) penutup pesanan:, tiket, gagal! -, ErrorDescription (errorType));
    logmsg = tiket : Kecemasan (Stop Loss) penutupan pesanan: tiket gagal! - ErrorDescription (errorType);
    WriteToLogFile (logmsg);
    }
    }
    lain
    {
    //cuba letakkan tahap Stop Loss dan Take Profit sekarang
    StopLossPrice = OrderOpenPrice () (the_StopLoss * Point * PipFactor);
    StopLossPrice = NormalizeDouble (StopLossPrice, Digits);
    TakeProfitPrice = OrderOpenPrice () - (TakeProfit * Point * PipFactor);
    TakeProfitPrice = NormalizeDouble (TakeProfitPrice, Digits);
    jika (OrderModify (tiket, OrderOpenPrice (), StopLossPrice, TakeProfitPrice, 0))
    {
    Cetak (Stop Loss dan Take Profit order:, tiket, tambah berjaya);
    logmsg = tiket : Stop Loss and Take Profit berjaya berjaya !;
    WriteToLogFile (logmsg);
    }
    lain
    {
    errorType = GetLastError ();
    Cetak (ERROR! Menambah Stop Loss dan Take Profit order:, tiket, gagal! -, ErrorDescription (errorType));
    logmsg = tiket : Menambah Stop Loss dan Mengambil Keuntungan pesanan: tiket gagal! - ErrorDescription (errorType);
    WriteToLogFile (logmsg);
    }
    }
    }
    //Sama seperti di atas kecuali ini menangani senario brek tahap takeprofit
    jika (OrderTakeProfit () == 0 TakeProfit! = 0)
    {
    //Tutup perdagangan dengan serta-merta sekiranya harga sudah berpindah patah tahap stop loss
    jika (OrderOpenPrice () - Tanya gt; = PipFactor * Point * TakeProfit)
    {
    tiket = OrderTicket ();
    closeNOWprice = NormalizeDouble (Ask, Digits);
    jika (OrderClose (tiket, OrderLots (), closeNOWprice, Slippage, Blue))
    {
    Cetak (Kecemasan (Take Profit) penutupan pesanan:, tiket, berjaya);
    logmsg = tiket : Kecemasan (Take Profit) penutupan berjaya;
    WriteToLogFile (logmsg);
    terus;
    }
    lain
    {
    errorType = GetLastError ();
    Print (ERROR!) Kecemasan (Take Profit) penutup pesanan:, tiket, gagal! -, ErrorDescription (errorType));
    logmsg = tiket : Kecemasan (Take Profit) penutupan pesanan: tiket gagal! - ErrorDescription (errorType);
    WriteToLogFile (logmsg);
    }
    }
    }

    //Periksa untuk Breakeven
    jika (Use_BE)
    {
    jika (OrderStopLoss () - Tanya gt; PipFactor * Point * BreakEven_Pips)
    {
    jika (OrderStopLoss () gt; OrderOpenPrice ())
    {
    StopLossPrice = Tanya BE_Level;
    StopLossPrice = NormalizeDouble (StopLossPrice, Digits);
    jika (StopLossPrice lt; OrderOpenPrice ())
    {
    jika (OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice (), OrderTakeProfit (), 0, Hijau))
    {
    logmsg = Jual Pesanan OrderTicket () SL mencapai level breakeven;
    WriteToLogFile (logmsg);
    }
    }
    lain
    {
    jika (OrderModify (OrderTicket (), OrderOpenPrice (), StopLossPrice, OrderTakeProfit (), 0, Hijau))
    {
    logmsg = Jual Pesanan OrderTicket () SL bergerak ke arah tahap breakeven ;;
    WriteToLogFile (logmsg);
    }
    }
    }
    }
    }
    //Periksa Stop Floating
    jika (! UseJumpingStop (TrailingStop! = 0))
    {
    jika ((OrderOpenPrice () - Tanya) gt; TrailLevel ((OrderOpenPrice () - Ask) gt; = BE_Level || OrderStopLoss () lt; = OrderOpenPrice ()
    {
    jika (OrderStopLoss () gt; Ask TrailLevel)
    {
    StopLossPrice = NormalizeDouble (Tanya TrailLevel, Digits);
    OrderModify (OrderTicket (), OrderOpenPrice (), StopLossPrice, OrderTakeProfit (), 0, Merah);
    }
    }
    }
    //Periksa Stop Jumping
    jika (UseJumpingStop (TrailingStop! = 0))
    {
    //hanya aktifkan apabila posisi berada dalam keuntungan oleh stoploss amt.
    jika (((OrderStopLoss () - Ask) gt; (TrailLevel * 2)) ((OrderOpenPrice () - Ask) gt; = BE_Level || OrderStopLoss () lt; = OrderOpenPrice ()
    {
    jika ((OrderStopLoss () - TrailLevel) gt; OrderTakeProfit () || OrderTakeProfit () == 0)/Stop level loss tidak boleh kurang daripada mengambil tahap keuntungan
    {
    StopLossPrice = NormalizeDouble (OrderStopLoss () - TrailLevel, Digits);
    OrderModify (OrderTicket (), OrderOpenPrice (), StopLossPrice, OrderTakeProfit (), 0, Merah);
    }
    }
    }
    }
    }
    }
    }
    }
    }

    // ----------------------------------------------- -------------------
    //| Pelbagai fungsi |
    // ----------------------------------------------- -------------------

    void GetSpread ()
    {
    jika (UserDefinedSpread lt; = 0)
    {
    CustomSpread = (MarketInfo (Simbol (), MODE_SPREAD))PipFactor;
    }
    lain
    {
    Spread Tersuai = Spread Ditetapkan Pengguna;
    }

    //Haruskah kita menambah penyebaran ke dalam StopLoss?
    Stop Loss = Stop Loss;
    jika (StopLoss gt; 0)
    {
    jika (Add_Spread_To_StopLoss)
    {
    Stop Loss = Stop Loss Spread Custom;
    }
    lain
    {
    Stop Loss = Stop Loss;
    }
    }
    }

    void WriteComment ()
    {
    msg =;
    int currentHour = TimeHour (Masa [0]);
    jika (SessionOpenHour1 lt; SessionOpenHour2)
    {
    jika (currentHour lt; SessionOpenHour2)
    {
    msg = EA menunggu Sesi2 Terbuka;
    }
    jika (semasa semasa) SessionOpenHour1 || currentHour gt; SessionOpenHour2)
    {
    msg = EA menunggu Sesi1 Terbuka;
    }
    }
    lain
    {
    jika (currentHour lt; SessionOpenHour1)
    {
    msg = EA menunggu Sesi1 Terbuka;
    }
    jika (semasa), SessionOpenHour2 || currentHour gt; SessionOpenHour1)
    {
    msg = EA menunggu Sesi2 Terbuka;
    }
    }
    msg = msg \ Current Time: Waktu saat ini : Waktu Menit (TimeCurrent ());

    jika (PipFactor == 10)
    {
    msg = msg \ nWorking with pip Fractional;
    }
    lain
    {
    msg = msg \ nWorking with pips Non-Fractional;
    }
    //double stoplevel = MarketInfo (Simbol (), MODE_STOPLEVEL)PipFactor;

    jika (MoneyManagement the_StopLoss gt; 0)
    {
    msg = msg \ Menggunakan Fitur Pengurusan Wang menurut Stop loss;
    }
    msg = msg Spread Semasa: DoubleToStr (Spread Custom, 1) pip;
    jika (Add_Spread_To_StopLoss the_StopLoss! = 0)
    {
    msg = msg \ nSpread akan ditambahkan ke Stop Loss anda;
    }
    lain
    {
    msg = msg \ nSpread tidak akan ditambahkan ke Stop Rugi;
    }
    jika (SesiIsOn)
    {
    msg = msg \ on \ Time to trade latestSession . Mencari kemasukan ...;
    msg = msg \ nSession Open Price: DoubleToStr (theSessionOpenPrice, Digits);
    msg = msg \ nCurrent Price: DoubleToStr (Tutup [0], Digit);
    }
    lain
    {
    msg = msg \ n tetingkap perdagangan terbaruSession ditutup .;
    }
    Komen (msg);
    }

    tidak sah WriteToLogFile (input rentetan)
    {
    string nama fail = CBBP- Simbol () - Hari () - Bulan () - Tahun () . log;
    int handle = FileOpen (nama fail, FILE_READ | FILE_WRITE);
    jika (handlegt; 1)
    {
    awalan rentetan = Hari () Bulan () Tahun () - Jam () : Minit () : Segmen () = gt; ;
    FileSeek (mengendalikan, 0, SEEK_END);/pergi ke akhir fail
    FileWrite (mengendalikan, awalan input);
    FileClose (pemegang);
    }
    }
    //Kaedah ini dibuat untuk menjana fail baru untuk hari baru. Baris pertama yang ditulis kadang-kadang tidak boleh ditulis.
    //Mesej dummy yang digunakan di sini boleh bertindak sebagai penyangga supaya maklumat berguna tidak terlepas.
    void CreateNewLogFileIfNewDay ()
    {
    jika (todayOfYear! = DayOfYear ())
    {
    todayOfYear = DayOfYear ();
    WriteToLogFile (Mesej dummy);
    }
    }

    boom TimeToTrade ()
    {
    int currentHour = TimeHour (Masa [0]);
    int currentMinute = TimeMinute (TimeCurrent ());
    jika ((currentHour == SessionOpenHour1 || currentHour == SessionOpenHour2) currentMinute lt; GraceMinutes)
    {
    kembali (benar);
    }
    kembali (palsu);
    }

    int GetSessionOpenCandle ()
    {
    int SessionOpenCandleIndex = -1;
    untuk (int i = 0; ilt; = GraceMinutes 1; i )
    {
    jika (TimeHour (Masa [i]) == currentSessionHour TimeMinute (Masa [i]) == 0)
    {
    SessionOpenCandleIndex = i;
    pecah;
    }
    }
    kembali (SessionOpenCandleIndex);
    }

    // ----------------------------------------------- -------------------
    //| fungsi permulaan pakar |
    // ----------------------------------------------- -------------------
    int start ()
    {
    //----
    jika (! StartupStatusOK)
    {
    Komen (Terdapat ralat dalam input EA anda. Sila semak semula mereka semula);
    kembali (0);
    }
    CreateNewLogFileIfNewDay ();
    ManageTrades ();
    GetSpread ();

    jika (TimeToTrade ())
    {
    currentSessionHour = TimeHour (Time [0]);
    jika (currentSessionHour == SessionOpenHour1)
    {
    latestSession = Session1;
    }
    jika (currentSessionHour == SessionOpenHour2)
    {
    latestSession = Session2;
    }
    jika (TradeNotPlacedYet () TradeTheSession)
    {
    int SessionOpenIndex = GetSessionOpenCandle ();
    SessionIsOn = true;
    jika (! SessionOpenPriceWritten)
    {
    string logmsg = latestSession terbuka pada DoubleToStr (Terbuka [SessionOpenIndex], Digit);
    Cetak (logmsg);
    WriteToLogFile (logmsg);
    SessionOpenPriceWritten = true;
    }
    jika (Should_Buy (SessionOpenIndex) TradeTheSession)
    {
    OpenBuyOrder ();
    TradeTheSession = false;
    }
    jika (Should_Sell (SessionOpenIndex) TradeTheSession)
    {
    OpenSellOrder ();
    TradeTheSession = false;
    }
    }
    lain
    {
    SessionIsOn = false;
    }
    }
    lain
    {
    SessionIsOn = false;
    TradeTheSession = true;
    ProblemLogged = false;
    SessionOpenPriceWritten = false;
    }
    jika (Show_Comments)
    {
    WriteComment ();
    }

    //----
    kembali (0);

  2. #2
    Saya pasti ada seseorang yang dapat melihat nilai EA ini. Bagaimanakah saya dapat dari BE (seperti) ke BE (x) bilangan pip? terima kasih

  3. #3
    sila lampirkan EA ke jawatan - sebagai penulisan biasa sintaks mendapatkan sedikit diskru apabila dimuat semula ke MT4 untuk diedit.

  4. #4
    Quote Originally Posted by ;
    sila lampirkan EA ke jawatan - sebagai penulisan biasa sintaks mendapatkan sedikit diskru apabila dimuat semula ke MT4 untuk diedit.
    Aja, Di sini anda pergi. terima kasih
    https://www.justgetforex.com/trading...statement.html
    https://www.justgetforex.com/attachm...1375101646.mq4

  5. #5
    Adakah anda bercakap mengenai penyebaran? Atau, komisen di atas penyebaran? Jika ia hanya penyebaran, itu akan menjadi cukup mudah, saya fikir? ... BE ((Ask-Bid)Point) * Banyak (mungkin memerlukan kurungan tambahan). Jika tidak, anda perlu memikirkan bagaimana broker anda mengira komisen tambahan dan anda perlu bertanya kepada mereka.

  6. #6
    versi 3 EA yang merujuk kepada keperluan ini dibebaskan di Bank Pusat dan pemain Big thread. Benang ini boleh ditutup. salam, Zen

  7. #7
    Adakah anda mempunyai pautan? Atau, mungkin anda boleh menyiarkan versi paling terkini di sini? Nevermind, saya dapati dalam jawatan ini di sini.

  8. #8
    Hai, saya hanya ingin tahu jika EA ini mempunyai kod yang berhenti untuk memecahkan walaupun keuntungan 2 pips. Saya ingin mempunyai ciri ini supaya saya boleh menetapkan dan melupakan pesanan pada harga yang saya mahu dan selepas mereka memukul keuntungan 2 pip, membenarkan perdagangan bebas. Saya bukan seorang pengkod, jadi saya tidak tahu apa artinya kod di atas.

Kebenaran Posting

  • Anda tidak boleh menghantar thread baru
  • Anda tidak boleh membalas kiriman
  • Anda tidak boleh mengedit siaran anda
  • Anda tidak boleh menyiarkan lampiran
  •  
  • Kod BB Hidup
  • Smilies Hidup
  • Kod [IMG] adalah Hidup
  • Kod [VIDEO] adalah Hidup
  • Kod HTML Tidak Hidup