Sila bantu dengan EA penutupan separa tertentu
Results 1 to 3 of 3

Thread: Sila bantu dengan EA penutupan separa tertentu

  1. #1
    Hai Guys Saya akan menghargai bantuan anda, tolong?!
    Berikut ialah isunya: Saya ingin menutup sebahagian kedudukan saya apabila stok cepat mencapai terlebih jual atau terlebih beli dan biarkan kedudukan selebihnya ditutup secara manual. Nampaknya kerja mudah, tetapi!!! Selepas mencapai tahap, EA menutup satu lot dan betul-betul selepas lot kedua. Bagaimanakah cara saya menghentikannya daripada menutup bahagian kedua?

    Terima kasih terlebih dahulu,
    Avoleoo

    Saya telah menukar OrderLots() kepada 0.01 sebagai contoh dan mari kita anggap saya akan memasuki pasaran dengan 0.02

    inilah kodnya:
    // ------------------------------------------------ -------------------
    //| MQL ini dijana oleh Expert Advisor Builder |
    //|
    http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/|
    //| |
    //| Walau apa pun, pengarang tidak akan bertanggungjawab untuk sebarang kerosakan. |
    //| Gunakan atas risiko anda sendiri. |
    //| |
    // -------------------- JANGAN KELUARKAN TAJUK INI ---------------------

    #define SIGNAL_TIADA 0
    #define SIGNAL_BELI 1
    #define SIGNAL_SELL 2
    #define SIGNAL_CLOSEBUY 3
    #define SIGNAL_CLOSESELL 4

    #property copyright Pembina Penasihat Pakar
    pautan #property http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/

    extern int MagicNumber = 0;
    extern bool SignalMail = Palsu;
    extern bool EachTickMode = Benar;
    Lot berganda luaran = 0.01;
    extern int Slippage = 3;
    extern bool UseStopLoss = Palsu;
    extern int StopLoss = 30;
    extern bool UseTakeProfit = Palsu;
    extern int TakeProfit = 60;
    extern bool UseTrailingStop = Palsu;
    extern int TrailingStop = 30;

    int BarCount;
    int Semasa;
    bool TickCheck = Salah;
    // ------------------------------------------------ -------------------
    //| fungsi permulaan pakar |
    // ------------------------------------------------ -------------------
    int init() {
    BarCount = Bar;

    jika (EachTickMode) Semasa = 0; lain Semasa = 1;

    return(0);
    }
    // ------------------------------------------------ -------------------
    //| fungsi penyahinisian pakar |
    // ------------------------------------------------ -------------------
    int deinit() {
    return(0);
    }
    // ------------------------------------------------ -------------------
    //| fungsi permulaan pakar |
    // ------------------------------------------------ -------------------
    int mula() {
    int Pesanan = SIGNAL_TIADA;
    int Jumlah, Tiket;
    berganda StopLossLevel, TakeProfitLevel;



    jika (EachTickMode Bars != BarCount) TickCheck = False;
    Jumlah = Jumlah Pesanan();
    Pesanan = SIGNAL_TIADA;

    // ------------------------------------------------ -------------------
    //| Pembolehubah Mula |
    // ------------------------------------------------ -------------------




    double CloseBuy1_1 = iStochastic(NULL, 0, 8, 5, 5, MODE_SMA, 0, MODE_MAIN, Semasa 0);
    dua kali CloseBuy1_2 = 80;

    double CloseSell1_1 = iStochastic(NULL, 0, 8, 5, 5, MODE_SMA, 0, MODE_MAIN, Semasa 0);
    ganda CloseSell1_2 = 20;


    // ------------------------------------------------ -------------------
    //| Pembolehubah Akhir |
    // ------------------------------------------------ -------------------

    //Periksa kedudukan
    bool IsTrade = Palsu;

    untuk (int i = 0; i lt; Jumlah; i ) {
    OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
    if(OrderType() lt;= OP_SELL OrderSymbol() == Simbol()) {
    IsTrade = Benar;
    if(OrderType() == OP_BELI) {
    //Tutup

    // ------------------------------------------------ -------------------
    //| Isyarat Mula(Keluar Beli) |
    // ------------------------------------------------ -------------------

    jika (CloseBuy1_1 gt;= CloseBuy1_2) Pesanan = SIGNAL_CLOSEBUY;


    // ------------------------------------------------ -------------------
    //| Isyarat Tamat(Keluar Beli) |
    // ------------------------------------------------ -------------------

    jika (Pesan == SIGNAL_CLOSEBUY ((EachTickMode !TickCheck) || (!EachTickMode (Bar != BarCount)))) {
    OrderClose(OrderTicket(), 0.01, Bid, Slippage, MediumSeaGreen);
    jika (SignalMail) SendMail([Isyarat Isyarat], [ Simbol() ] DoubleToStr(Bida, Digit) Tutup Beli);
    jika (!EachTickMode) BarCount = Bar;
    IsTrade = Palsu;
    teruskan;
    }
    //Perhentian mengekori
    if(UseTrailingStop TrailingStop gt; 0) {
    if(Bid - OrderOpenPrice() gt; Point * TrailingStop) {
    if(OrderStopLoss() lt; Bid - Point * TrailingStop) {
    OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0,

    Hijau Laut Sederhana);
    jika (!EachTickMode) BarCount = Bar;
    teruskan;
    }
    }
    }
    } lain {
    //Tutup

    // ------------------------------------------------ -------------------
    //| Isyarat Mula(Keluar Jual) |
    // ------------------------------------------------ -------------------

    jika (CloseSell1_1 lt;= CloseSell1_2) Pesanan = SIGNAL_CLOSESELL;


    // ------------------------------------------------ -------------------
    //| Isyarat Tamat(Keluar Jual) |
    // ------------------------------------------------ -------------------

    jika (Pesan == SIGNAL_CLOSESELL ((EachTickMode !TickCheck) || (!EachTickMode (Bar != BarCount)))) {
    OrderClose(OrderTicket(), 0.01, Ask, Slippage, DarkOrange);
    jika (SignalMail) SendMail([Isyarat Isyarat], [ Simbol() ] DoubleToStr(Tanya, Digit) Tutup Jual);
    jika (!EachTickMode) BarCount = Bar;
    IsTrade = Palsu;
    teruskan;
    }
    //Perhentian mengekori
    if(UseTrailingStop TrailingStop gt; 0) {
    if((OrderOpenPrice() - Ask) gt; (Titik * TrailingStop)) {
    if((OrderStopLoss() gt; (Tanya Point * TrailingStop)) || (OrderStopLoss() == 0)) {
    OrderModify(OrderTicket(), OrderOpenPrice(), Ask Point * TrailingStop, OrderTakeProfit(), 0,

    Jingga Gelap);
    jika (!EachTickMode) BarCount = Bar;
    teruskan;
    }
    }
    }
    }
    }
    }

    // ------------------------------------------------ -------------------
    //| Isyarat Mula(Masuk) |
    // ------------------------------------------------ -------------------




    // ------------------------------------------------ -------------------
    //| Isyarat Tamat |
    // ------------------------------------------------ -------------------

    //Beli
    jika (Pesan == SIGNAL_BELI ((EachTickMode !TickCheck) || (!EachTickMode (Bar != BarCount)))) {
    if(!IsTrade) {
    //Semak margin percuma
    if (AccountFreeMargin() lt; (1000 * Banyak)) {
    Print(Kami tidak mempunyai wang. Margin Percuma = , AccountFreeMargin());
    return(0);
    }

    jika (UseStopLoss) StopLossLevel = Tanya - StopLoss * Point; lain StopLossLevel = 0.0;
    jika (UseTakeProfit) TakeProfitLevel = Tanya TakeProfit * Point; lain TakeProfitLevel = 0.0;

    Tiket = OrderSend(Simbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, Buy(# MagicNumber ),

    MagicNumber, 0, DodgerBlue);
    if(Tiket gt; 0) {
    jika (OrderSelect(Tiket, SELECT_BY_TICKET, MODE_TRADES)) {
    Print(BUY order dibuka : , OrderOpenPrice());
    jika (SignalMail) SendMail([Isyarat Isyarat], [ Simbol() ] DoubleToStr(Tanya, Digit) Buka Beli);
    } lain {
    Print(Ralat membuka pesanan BELI : , GetLastError());
    }
    }
    jika (EachTickMode) TickCheck = Benar;
    jika (!EachTickMode) BarCount = Bar;
    return(0);
    }
    }

    //Jual
    jika (Pesan == SIGNAL_SELL ((EachTickMode !TickCheck) || (!EachTickMode (Bar != BarCount)))) {
    if(!IsTrade) {
    //Semak margin percuma
    if (AccountFreeMargin() lt; (1000 * Banyak)) {
    Print(Kami tidak mempunyai wang. Margin Percuma = , AccountFreeMargin());
    return(0);
    }

    jika (UseStopLoss) StopLossLevel = Bida StopLoss * Mata; lain StopLossLevel = 0.0;
    jika (UseTakeProfit) TakeProfitLevel = Bida - TakeProfit * Mata; lain TakeProfitLevel = 0.0;

    Tiket = OrderSend(Simbol(), OP_SELL, Lot, Bid, Slippage, StopLossLevel, TakeProfitLevel, Sell(# MagicNumber

    ), MagicNumber, 0, DeepPink);
    if(Tiket gt; 0) {
    jika (OrderSelect(Tiket, SELECT_BY_TICKET, MODE_TRADES)) {
    Print(SELL order dibuka : , OrderOpenPrice());
    jika (SignalMail) SendMail([Isyarat Isyarat], [ Simbol() ] DoubleToStr(Bida, Digit) Buka Jual);
    } lain {
    Cetak(Ralat membuka pesanan JUAL : , GetLastError());
    }
    }
    jika (EachTickMode) TickCheck = Benar;
    jika (!EachTickMode) BarCount = Bar;
    return(0);
    }
    }

    jika (!EachTickMode) BarCount = Bar;

    return(0);
    }
    // ------------------------------------------------ -------------------

  2. #2

  3. #3
    Saya berani mengatakan bahawa orang yang menulis kod itu adalah satu-satunya yang boleh membetulkannya. Ia kelihatan seperti kucar-kacir bagi saya, jadi saya tidak menghabiskan banyak masa mencari dan saya pasti tidak akan menjalankannya.

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
Polisi Kuki
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.