Tuesday 18 December 2012

1 order dalam 1 bar...


1 order dalam 1 bar...

Quote Originally Posted by chandrawg View Post
kalau ingin hanya order saat pembukaan bar, scriptnya seperti ini
Code:
static int  prevtime = 0;
if (Time[0] == prevtime) return(0);
prevtime = Time[0];

ordernya bisa jadi pada saat pembukaan bar ataupun sudah berjalan beberapa saat.. 

setelah kena TP walaupun signalnya masih sama dan bar / candle masih sama maka tidak akan melakukan order ..

kondisi akan melakukan order :
Signal dan mengecek apakah dalam bar/candle tsb sudah pernah order atau belum 

trims sebelumnya


berarti EA tersebut hanya selalu satu order ya (tunggu TP atau SL baru order lagi) ?
Kalau iya codenya mungkin seperti ini
Code:
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
      {
      if (iBarShift(Symbol(),0,OrderOpenTime(),true)==0)return (0);
      }
yup.. order hanya satu aja . sampai dengan TP /SL tersentuh..
saya sudah test code tersebut. dan "problem solved" 

logika yang aku tangkap :
kita membaca order terakhir yang sudah ter close berada di bar tersebut (orderopentime()) ... 

thanks bro chandra...

1 comment:

  1. hallo bos, saya sempat buat kode :

    extern string Nama_EA = "Muin Punya";
    extern int TP = 5;
    extern int SL = 600;
    extern double Lots = 0.1;
    extern int Magic1 = 66;
    extern int Magic2 = 67;
    extern int Maxtrade = 1;
    extern int Paramater1 = 3;
    extern int Paramater2 = 4;
    extern double MovingPeriod = 8;
    extern double MovingShift = 0;
    extern double Selisih_candle = 0;
    //+------------------------------------------------------------------+
    //| expert initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    //----

    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+
    int start()
    {
    //----



    if( ((High[1]-Low[1])/Paramater1)>(Open[1]-Low[1])
    && ((High[1]-Low[1])/Paramater2)>(Close[1]-Open[1])
    && OrdersTotal()<=Maxtrade
    && ((High[1]-Low[1])<=Selisih_candle )

    )
    {
    OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point, Bid-TP*Point,Nama_EA,Magic1,0,Blue) ;
    }

    if( ((High[1]-Low[1])/Paramater1)>(High[1]-Open[1])
    && ((High[1]-Low[1])/Paramater2)>(High[1]-Close[1])
    && OrdersTotal()<=Maxtrade
    && ((High[1]-Low[1])>=Selisih_candle )
    && iBarShift(Symbol(),PERIOD_M15,OrderOpenTime(),true)==0
    )
    {
    OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-SL*Point, Ask+TP*Point,Nama_EA,Magic2,0,Blue) ;
    }

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


    pertanyaan saya, kok ndak bisa OP ya baik buy maupun sell, tapi kalo saya hilangkan script " && iBarShift(Symbol(),PERIOD_M15,OrderOpenTime(),true)==0 " yang sama dengan bos jelaskan bisa OP tu EA, cuma OPnya tidak sesuai yang saya harapkan. dimana OP yang saya harapkan adalah berdasarkan syarat diatas, cuma setiap 1 bar hanya bisa OP 1 ditambah syarat yang saya tuliskan dalam script, dimanakah kesalahan Script yang saya buat?

    ReplyDelete