Coding EA Forex TP SL dan Limit Order

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

//|                                           23 Dasar-Dasar MQL.mq4 |

//|                                       Copyright 2017, SoeHoe.net |

//|                                               https://SoeHoe.net |

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

#property copyright "Copyright 2017, SoeHoe.net"

#property link      "https://SoeHoe.net"

#property version   "1.00"

#property strict


input int      TakeProfit     = 500;

input int      StopLoss       = 200;

input double   Lots           = 0.05;

input bool     UseMM          = False;

input string   Notes          = "Keterangan EA";

input bool     Trailling       = true;

input int      TrailingStop    = 15;

input int      Magic           = 1989;

double pt;

 


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

//| Expert initialization function                                   |

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

int OnInit()

  {

  if(Digits==3 || Digits==5) pt=10*Point;   else   pt=Point;

//---

   

     if(jumlahorder (OP_BUY)==0){

       if (jumlahorder(OP_BUY)==0){

           NewOrder(0);

           }

       }

    if(jumlahorder(OP_SELL)==0){

        if (jumlahorder(OP_SELL)==0){

            NewOrder(1);

            };

     };

    

  if (jumlahorder(OP_SELL))Alert(jumlahorder(OP_SELL),"SELL");

  if(jumlahorder(OP_BUY)) Alert(jumlahorder(OP_BUY),"BUY");

//---

   return(INIT_SUCCEEDED);

  }

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason)

  {

//---

  return; 

  }

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

//| Expert tick function                                             |

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

void OnTick()

  {

//---

   jumlahorder(0);

   dtrailing();

   return;

  }

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

int jumlahorder( int tipe)

{

int total=0;

for(int i=0; i<OrdersTotal(); i++)

  {

      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;

      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic || OrderType()!=tipe) continue;

     total++;

  }

return(total) ;

}

  //NewOrder();

//==========================================

//Membuat Order 

   void NewOrder(int CMD,string myNotes=""){

      double pTP = 0, pSL=0, pMarket=0;

      //ini merupakan jumlah buy

       if(CMD==OP_BUY){

           pMarket  = Ask;

           pTP      = pMarket+TakeProfit*Point();

           pSL      = pMarket-StopLoss*Point();

         }

      //ini merupakan jumlah sell

       if(CMD==OP_SELL){

            pMarket  = Bid;

            pTP      = pMarket-TakeProfit*Point();

            pSL      = pMarket+StopLoss*Point();

         }

      pTP = NormalizeDouble(pTP,Digits);

      pSL = NormalizeDouble(pSL,Digits);

      if(TakeProfit<=0) pTP   = 0;

      if(StopLoss<=0)   pSL   = 0;

      int ticket = OrderSend(Symbol(),CMD,Lots,pMarket,0,pSL,pTP,myNotes,Magic);

   }

//=========================================== INI CODE TRAILING STOP ===================================


void dtrailing()

{

int mod=0;

for(int i=0; i<OrdersTotal(); i++){

      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

        if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic ) continue;

        if(OrderType()==OP_BUY)  {

         if(Bid-OrderOpenPrice()>pt*TrailingStop)  {

           if((OrderStopLoss()<Bid-pt*TrailingStop) || (OrderStopLoss()==0)) {

             mod= OrderModify(OrderTicket(),OrderOpenPrice(),Bid-pt*TrailingStop,OrderTakeProfit(),0,Green);

               }

              }

           }

        if(OrderType()==OP_SELL)  {

         if((OrderOpenPrice()-Ask)>(pt*TrailingStop)){

           if(OrderStopLoss()>(Ask+pt*TrailingStop) || (OrderStopLoss()==0)){

              mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+pt*TrailingStop,OrderTakeProfit(),0,Red);

               }

              }

           }

     }}

//=========================================== SELESAI CODE TRAILING STOP ===================================

void Komen(){

   Comment("\nNomor Akun: ",Symbol(),

           "\nNama : ",AccountName(),

           "\nNama : ",AccountName(),

           "\nNama : ",AccountName(),

           "\nNama : ",AccountName(),

           "\nNama : ",AccountName(),

           "\nBalance : ",AccountBalance());  

}

//=========================================== SELESAI CODE Untuk Komen ===================================

Please Select Embedded Mode For Blogger Comments

أحدث أقدم