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

Question Ad solusi untuk Ordermodify error1

Discussion in 'Belajar MQL dari Nol' started by Oedyne Gwibroed, 24 Mar 2016.

  1. Oedyne Gwibroed

    Oedyne Gwibroed New Member

    Equity
    Credit
    Ref Point
    bool Trail(int Stop)
    {
    double newStopLoss=0.0;
    textstring="";
    int StopLevel = (int)MarketInfo(Symbol(),MODE_STOPLEVEL);
    if(Stop<StopLevel)Stop=StopLevel;
    for (int i = OrdersTotal() - 1; i >= 0; i--){
    bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber ) continue;
    if(OrderType()==OP_BUY) {
    newStopLoss=Bid-(Stop*Point);
    if(Bid-OrderOpenPrice()>Point*Stop) {
    if((OrderStopLoss()<Bid-Point*Stop) || (OrderStopLoss()==0)) {
    if(OrderModify(OrderTicket(),OrderOpenPrice(),newStopLoss,OrderTakeProfit(),0,clrNONE)==false)
    {
    return(false);
    }else
    {
    return(true);
    }
    }
    }
    }
    if(OrderType()==OP_SELL) {
    newStopLoss=Ask+(Stop*Point);
    if((OrderOpenPrice()-Ask)>(Point*Stop)){
    if(OrderStopLoss()>Ask+(Point*Stop) || (OrderStopLoss()==0)){
    if(OrderModify(OrderTicket(),OrderOpenPrice(),newStopLoss,OrderTakeProfit(),0,clrNONE)==false)
    {
    return(false);
    }else
    {
    return(true);
    }
    }
    }
    }
    }
    return(true);
    }
     
  2. ngasqus

    ngasqus Active Member Pioneer

    Equity
    Credit
    Ref Point
    for (int i = OrdersTotal() - 1; i >= 0; i--){
    misalkan diganti
    int i;
    for ( i = 0 ; i < OrdersTotal() ; i++){

    atau dideklarasikan di luar
    int i;
    for(i = OrdersTotal() -1 ; i >= 0 ; i--){
    kalo ada full codenya mungkin bisa dilihat ada error dimana
     
  3. rahmadjatayu

    rahmadjatayu Member Credit Hunter

    Equity
    Credit
    Ref Point
    coba di ganti if (OrderStoploss() == 0 || OrderStoploss() != newStoploss) OrderModify(bla bla bla);
     
  4. Edy Gorbacev

    Edy Gorbacev Member Credit Hunter

    Equity
    Credit
    Ref Point
    fungsi OrderModify() nilai kembaliannya itu True/False.
    True Nilainya 1
    False Nilainya 0

    Jadi kalo ordermodify error 1 kemungkinan ada error handling yang tidak berfungsi menangkap True nya.

    Kalo sekilas saya lihat kodenya, mungkin errormodify 1 itu karena memang tidak ada yang dirubah.

    Logika nya gini,
    Robot menemukan order
    setelah itu robot merubah order menjadi SL dan TP sesuai parameter yang ditentukan.
    Lalu robot jalan lagi, nyari order lagi.
    Sialnya robot nemuin order yang sama tadi yang udah dia rubah.
    Jadi MQL 4 kemungkinan mengingatkan programmer seperti anda bahwa ini sudah sama loh, ngapain dirubah lagi?
     
  5. rahmadjatayu

    rahmadjatayu Member Credit Hunter

    Equity
    Credit
    Ref Point
    agan apakah benar karna OrderModifynya ada dalam looping dan kurang error handlingnya saat nilainya true atau bisa juga error handlingnya gak berfungsi ?.
    kalo dilihat dari error kodenya memang terjadi pengulangan fungsi OrderModify.
    nah terus terang ane juga menghadapi kasus serupa untuk OrderSelect yang di dalam looping
    padahal dah di kasih break;
    tetep aja di log ngeprint no order selected tapi kalo ngak di print ngak ada warning merah.
    EA nya ilan lho ini?
     
  6. Edy Gorbacev

    Edy Gorbacev Member Credit Hunter

    Equity
    Credit
    Ref Point
    Masalahnya Ilan tidak menemukan error. Karena memang sudah dirubah sesuai dengan nilai TP.
    Logikanya ilan untuk break ada pada "NO Error" lalu break.
    sedangkan No error itu nilainya = 0.

    Coba fikirkan ketika ordermodif tidak merubah dan karena sudah dirubah maka nilai perubahan tetap satu, apa gak retry mulu tuh ilan?
     
  7. Edy Gorbacev

    Edy Gorbacev Member Credit Hunter

    Equity
    Credit
    Ref Point
    Coba dirubah nilai breaknya jadi 1, buat nangkep tuh error. atau ditambah dua logic err==0 && err==1
    bisa juga dipisah, kalo 1 artinya sudah dirubah. tapi tetep ini bakalan menghilangkan arti eror yang sesungguhnya. hanya untuk testing doank.
     
  8. rahmadjatayu

    rahmadjatayu Member Credit Hunter

    Equity
    Credit
    Ref Point
    yup ma kasih penjelasanya gan,dasar ane newbie kodingnya masih blepotan.
    ok gan dari sini ane dapat gambaran nanti sampe rumah ane praktekan saran dari agan.
     
  9. Niguru

    Niguru Member Credit Hunter

    Equity
    Credit
    Ref Point
    Kode trailing di atas sudah benar, dan sudah pasti dapat bekerja dengan baik tanpa error.
    Kesalahan pasti terjadi pada saat "call" (pemanggilan function Trail).
    Coba lakukan pemanggilan function dengan code berikut ini untuk menampilkan kode kesalahan yang benar:

    Code:
    if(!Trail(15)) Print("OrderModify error ",GetLastError());
    Happy coding :):ok:
     

Share This Page