Iklan_1

Education & Financial Konsulting

Education & Financial Konsulting
Education & Financial Konsulting

Agrobisnis & Pariwisata

Agrobisnis & Pariwisata
Agrobisnis & Pariwisata

Digital & Network Development

Digital & Network Development
Digital & Network Development
Membuat Close Order Forex

Yogi Iskandar

1/04/2022

//+------------------------------------------------------------------+ //|                                                  Close_Order.mq4 ...

Membuat Close Order Forex

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

//|                                                  Close_Order.mq4 |

//|                            Copyright 2021, Putra Kuningan Group. |

//|                               https://www.putrakuningangroup.com |

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

#property copyright "Copyright 2021, Putra Kuningan Group."

#property link      "https://www.putrakuningangroup.com"

#property version   "1.00"

#property strict


input       double      MinimalProfit      = 0.40;

input       double      MaxLoss            = 3.0;



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

//| Expert initialization function                                   |

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

int OnInit(){


return(INIT_SUCCEEDED);

}

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason){


   

}

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

//| Expert tick function                                             |

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

void OnTick(){

   //Menjalakan fungsi close order

   CekProfiOrder();

   if (Qn_Close()==1)CloseAll(0); 

   if (Qn_Close()==2)CloseAll(1);

   //Menjalankan Fungsi Comment

   QnComment ();   

}

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

//=================================================== Fungsi Comment =================================================================

void QnComment (){

   int HSpread = (int) MathRound((Ask-Bid)*100);

   Comment(

      " Informasi Account:",

      "\n Name                   : ", AccountName(), " #", AccountNumber(), " Vol@",Volume[0],

      "\n Balance/Equity      : "    , NormalizeDouble(AccountBalance(),2)," /",NormalizeDouble(AccountEquity(),2), " Spread @",

                                    HSpread, " HSpreadClose @", HSpreadClose (),

      "\n Account Server     : "    , AccountServer(), " Vol : ",  Volume[0], "   @", Hour(),":", Minute(),":",Seconds(),

      "\n Close Order        : HAtas@", HAtas(), " HBawah@",HBawah()," Time Order", TimOP()," ProfitOrder@",

                               NormalizeDouble(CekProfiOrder(),2), " SClose Order @", Qn_Close ()  

   );

}

//=============================================== ClOSE ORDER SATU TRANSAKSI =========================================================  

//Mecari Profit Order

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

double CekProfiOrder(){

    double dp = 0;

    int i;

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

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

     dp += OrderProfit();

    }

return(dp);

}

//Mencari Time Order

datetime TimOP(){

   datetime TimeOrder=0;

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

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){

        TimeOrder = OrderOpenTime();

        }

     }

   return(TimeOrder);

}

//Membuat limit Order dengan waktu saat order mengalami rugi

int LimitTimeOP(){

   int result = 0;

   int tenggangwaktunya=1300; 

   if(TimeCurrent()>=TimOP()+tenggangwaktunya) result = 1;

return (result);

}

//Membuat limit Order dengan waktu saat order mengalami rugi

int LimitTimeOPReversal(){

   int result = 0;

      int tenggangwaktunya=1400; 

      if(TimeCurrent()>=TimOP()+tenggangwaktunya) result = 1;

    return (result);

}

//Mencari Nilai Spread

int HSpreadClose (){

   int result = (int)MathRound((Ask-Bid)*100);

   if((Ask-Bid)*100>60)result = (int) MathRound(((Ask-Bid)*100)/2);

return (result);

}

//Mecari Harga Atas 

double HAtas(){

   double pMarket=0;

   int BAtas = (int) HSpreadClose ();

   if(HSpreadClose ()<30) BAtas = (int) HSpreadClose ()+5;

   pMarket  = Ask;

   double HAtas      = pMarket+BAtas*Point();

return(HAtas);

}

//Mecari Harga Bawah 

double HBawah(){

   double pMarket=0;

   int BBawah = (int) HSpreadClose ();

   if(HSpreadClose ()<30) BBawah = (int) HSpreadClose ()+5;

   pMarket  = Ask;

   double HBawah      = pMarket-BBawah*Point();

return(HBawah);

}

int Qn_Close (){

    int result = 0;

    //Filter Market tidak kuat untuk mendapatkan target profit

    if(OrderType()==OP_BUY){

         if( LimitTimeOPReversal()==1 && CekProfiOrder()== 0)result= 1; //1= BUYY

    }

    if(OrderType()==OP_SELL){

         if(LimitTimeOPReversal()==1 && CekProfiOrder() == 0 )result= 2; //1= SELL

    }

    //Filter Market Stagnan && Brekout

    if(OrderType()==OP_BUY){

         if( LimitTimeOP()==1 && CekProfiOrder()< -1.5)result= 1; //1= BUYY

    }

    if(OrderType()==OP_SELL){

         if(LimitTimeOP()==1 && CekProfiOrder()< -1.5 )result= 2; //1= SELL

    }

    //Maximal Profit

    if(OrderType()==OP_BUY){

      if( CekProfiOrder()>MinimalProfit && HAtas() < High[0])result= 1; //1= BUYY

    }

    if(OrderType()==OP_SELL){

      if(CekProfiOrder()>MinimalProfit && HBawah() > Low[0]+(HSpreadClose ()+5)*Point())result= 2; //1= SELL

    }

    //Stop Loss

    if(OrderType()==OP_BUY){

      if( CekProfiOrder()< -MaxLoss )result= 1; //1= BUYY

    }

    if(OrderType()==OP_SELL){

      if(CekProfiOrder()< -MaxLoss )result= 2; //1= SELL

    }

return(result);

}

//Fungsi Close

//if (OrderSymbol() != Symbol() || OrderMagicNumber()!=Magic2_0||  OrderType()!=m) continue;

void CloseAll(int m) {

   for (int i = OrdersTotal() - 1; i >= 0; i--) {

   bool hasil= true;

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

   if (OrderSymbol() != Symbol() || OrderType()!=m) continue;

   if (OrderType() > 1)  hasil = OrderDelete(OrderTicket());

   if (OrderType() == 0) hasil = OrderClose(OrderTicket(), OrderLots(), Bid, 4, CLR_NONE);

   if (OrderType() == 1) hasil = OrderClose(OrderTicket(), OrderLots(), Ask, 4, CLR_NONE);

 }

}

//=============================================== SELESAI ===========================================================================



Share Post:

Yogi Iskandar


Yogi Iskandar

Yogi Iskandar

Sponsor By:

SUBSCRIBER


SUBSCRIBER

Iklan_Foot