• 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 :)

Answered Coding di Multi Pairs

Code:
//+------------------------------------------------------------------+
//|                                              contohMultiPair.mq4 |
//|                                                  Amir Syarifudin |
//|                                 www.facebook.com/syarifudin.amir |
//+------------------------------------------------------------------+
#property copyright "Amir Syarifudin"
#property link      "www.facebook.com/syarifudin.amir"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
string pair[]={"EURUSD","GBPUSD","AUDJPY"};
string cmt="TestMultiPair";
int OnInit()
  {
//--- create timer
   EventSetMillisecondTimer(10);
    
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
    
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
  int cnt=ArrayRange(pair,0);
  for(int i=0;i<cnt;i++)
     {
     string spair=pair[i];
     _run(spair);
     }
  }
//+------------------------------------------------------------------+
void _run(string sym)
  {
  double o=iOpen(sym,PERIOD_M5,0);
  double c=iClose(sym,PERIOD_M5,0);
  int ordertotal=ordersCount(sym);
  if(ordertotal==0)
    {
    double ask=MarketInfo(sym,MODE_ASK);
    double bid=MarketInfo(sym,MODE_BID);
    if(ask!=0 && bid!=0)
      {
       if(c>o)
         {
         int suc=OrderSend(sym,OP_BUY,0.01,ask,3,0,0,cmt,0,0,clrNONE);
         }
       if(c<o)
         {
         int suc=OrderSend(sym,OP_SELL,0.01,bid,3,0,0,cmt,0,0,clrNONE);
         }
       }
     }
  }
int ordersCount(string sym)
  {int ct=0;
   int c=OrdersTotal();
   for(int i=c;i>=0;i--)
      {if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){continue;}
      if(OrderSymbol()!=sym){continue;}
      ct++;}
    return(ct);}

Pak bagaimana coding untuk target profit atau close all semua symbol saat sudah mendapat profit sejumlah tertentu
 
misi gan mau tanya sy pasang skrip Sleep (30000) kok ndak pengaruh apa2 za mau sy pake tunda trailing dan order, untuk order sering terjadi bouncing OP dan Close dari indikator bertumbukan (waktunya terlalu dekat) , txu gan
 
Code:
//+------------------------------------------------------------------+
//|                                              contohMultiPair.mq4 |
//|                                                  Amir Syarifudin |
//|                                 www.facebook.com/syarifudin.amir |
//+------------------------------------------------------------------+
#property copyright "Amir Syarifudin"
#property link      "www.facebook.com/syarifudin.amir"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
string pair[]={"EURUSD","GBPUSD","AUDJPY"};
string cmt="TestMultiPair";
int OnInit()
  {
//--- create timer
   EventSetMillisecondTimer(10);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
  int cnt=ArrayRange(pair,0);
  for(int i=0;i<cnt;i++)
     {
     string spair=pair[i];
     _run(spair);
     }
  }
//+------------------------------------------------------------------+
void _run(string sym)
  {
  double o=iOpen(sym,PERIOD_M5,0);
  double c=iClose(sym,PERIOD_M5,0);
  int ordertotal=ordersCount(sym);
  if(ordertotal==0)
    {
    double ask=MarketInfo(sym,MODE_ASK);
    double bid=MarketInfo(sym,MODE_BID);
    if(ask!=0 && bid!=0)
      {
       if(c>o)
         {
         int suc=OrderSend(sym,OP_BUY,0.01,ask,3,0,0,cmt,0,0,clrNONE);
         }
       if(c<o)
         {
         int suc=OrderSend(sym,OP_SELL,0.01,bid,3,0,0,cmt,0,0,clrNONE);
         }
       }
     }
  }
int ordersCount(string sym)
  {int ct=0;
   int c=OrdersTotal();
   for(int i=c;i>=0;i--)
      {if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){continue;}
      if(OrderSymbol()!=sym){continue;}
      ct++;}
    return(ct);}

Pak Amir....
Bagaimana cara menambahkan kode Close All Multipair untuk semua pair yang saat ini lagi open dalam kode di atas...? Sebab saya lihat pair OrderSymbol()==Symbol() mengarah ke String sym...

Oh ya Bisa nggak di pasang trailing stop juga...? Sebab saya coba pasang trailing stop, hanya berfungsi pada chart yang di Attack...
Apakah untuk semua kode " OrderSymbol()==Symbol() diubah menjadi ---> OrderSymbol()!=sym "
 
Last edited:
Pak Amir....
Bagaimana cara menambahkan kode Close All Multipair untuk semua pair yang saat ini lagi open dalam kode di atas...? Sebab saya lihat pair OrderSymbol()==Symbol() mengarah ke String sym...

Oh ya Bisa nggak di pasang trailing stop juga...? Sebab saya coba pasang trailing stop, hanya berfungsi pada chart yang di Attack...
Apakah untuk semua kode " OrderSymbol()==Symbol() diubah menjadi ---> OrderSymbol()!=sym "
Betul [emoji106]
 
Betul [emoji106]

Betul yang seperti apa Pak....
Saya sudah tambahkan kode Close All Posisi, di bawah sendiri.
Apakah betul seperti ini kodenya pak...??? Kok masih belum Mujarab juga

if(ProfitTotal()>= TakeProfit )
{
CloseAllTrades();
}

//---------------------------------------------

void CloseAllTrades()
{
string Symb=Symbol();
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber() == Magic && (OrderSymbol() == Symbol()))
{
if (OrderType() == OP_BUY)
{
bool closed = false;
closed = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symb,MODE_BID),Slip,clrGreen);
}
if (OrderType() == OP_SELL)
{
bool closed = false;
closed = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symb,MODE_ASK),Slip,clrRed);
}
}
}
}
}

Bisa diberi contoh Pak.....??
 
Betul yang seperti apa Pak....
Saya sudah tambahkan kode Close All Posisi, di bawah sendiri.
Apakah betul seperti ini kodenya pak...??? Kok masih belum Mujarab juga

if(ProfitTotal()>= TakeProfit )
{
CloseAllTrades();
}

//---------------------------------------------

void CloseAllTrades()
{
string Symb=Symbol();
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber() == Magic && (OrderSymbol() == Symbol()))
{
if (OrderType() == OP_BUY)
{
bool closed = false;
closed = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symb,MODE_BID),Slip,clrGreen);
}
if (OrderType() == OP_SELL)
{
bool closed = false;
closed = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symb,MODE_ASK),Slip,clrRed);
}
}
}
}
}

Bisa diberi contoh Pak.....??
Untuk menutup semua order semua pair ya?
 
Untuk menutup semua order semua pair ya?
Ya Iyalah...
Sebab kode Versi anda yang di tampilkan di thread Pertama hanya OP untuk banyak Pair...., Belum ada Kode Close All Multi_Pair...
Mungkin Pak amir, paham maksud saya....
Maksud saya close all multipair yang terkait dengan kode Versi anda.... Yang hanya cukup sekali penulisan via string pair kode --> OrderSymbol() == Symb
Input Parameter anda :
string Pair[]={"USDJPY","GBPUSD","EURUSD","EURGBP"};
Dan memasukan Nilai Value ArrayRange
int cnt=ArrayRange(Pair,0);

Kalau Opsi lain sih.. memang bisa dengan cara int input secara terpisah banyak pair :
Misalnya : OrderSymbol()==S1 || OrderSymbol()==S2 || ....... dan seterusnya....
Input Parameter nya :
input string S1 = "USDJPY";
input string S2 = "GBPUSD";

Close All Pair ini kan lebih penting, daripada OP Posisi...:)
 
Last edited:
Disini ada yang bisa bikin script untuk membuat open buy atau sell sekalian ada stop loss dan taking profit yang bisa doiatur sesuai keinginan kita gak yah, kalau ada
 
Ya Iyalah...
Sebab kode Versi anda yang di tampilkan di thread Pertama hanya OP untuk banyak Pair...., Belum ada Kode Close All Multi_Pair...
Mungkin Pak amir, paham maksud saya....
Maksud saya close all multipair yang terkait dengan kode Versi anda.... Yang hanya cukup sekali penulisan via string pair kode --> OrderSymbol() == Symb
Input Parameter anda :
string Pair[]={"USDJPY","GBPUSD","EURUSD","EURGBP"};
Dan memasukan Nilai Value ArrayRange
int cnt=ArrayRange(Pair,0);

Kalau Opsi lain sih.. memang bisa dengan cara int input secara terpisah banyak pair :
Misalnya : OrderSymbol()==S1 || OrderSymbol()==S2 || ....... dan seterusnya....
Input Parameter nya :
input string S1 = "USDJPY";
input string S2 = "GBPUSD";

Close All Pair ini kan lebih penting, daripada OP Posisi...:)


saya sudah ikuti dari atas koq tetap gak bisa close All yah.
udah coba juga pasang triger buat OP malah lebih gak jadi..

Bisa tolong pak contoh lengkapnya. yang include close all
 
Code:
//+------------------------------------------------------------------+
//|                                              contohMultiPair.mq4 |
//|                                                  Amir Syarifudin |
//|                                 www.facebook.com/syarifudin.amir |
//+------------------------------------------------------------------+
#property copyright "Amir Syarifudin"
#property link      "www.facebook.com/syarifudin.amir"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
string pair[]={"EURUSD","GBPUSD","AUDJPY"};
string cmt="TestMultiPair";
int OnInit()
  {
//--- create timer
   EventSetMillisecondTimer(10);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
  int cnt=ArrayRange(pair,0);
  for(int i=0;i<cnt;i++)
     {
     string spair=pair[i];
     _run(spair);
     }
  }
//+------------------------------------------------------------------+
void _run(string sym)
  {
  double o=iOpen(sym,PERIOD_M5,0);
  double c=iClose(sym,PERIOD_M5,0);
  int ordertotal=ordersCount(sym);
  if(ordertotal==0)
    {
    double ask=MarketInfo(sym,MODE_ASK);
    double bid=MarketInfo(sym,MODE_BID);
    if(ask!=0 && bid!=0)
      {
       if(c>o)
         {
         int suc=OrderSend(sym,OP_BUY,0.01,ask,3,0,0,cmt,0,0,clrNONE);
         }
       if(c<o)
         {
         int suc=OrderSend(sym,OP_SELL,0.01,bid,3,0,0,cmt,0,0,clrNONE);
         }
       }
     }
  }
int ordersCount(string sym)
  {int ct=0;
   int c=OrdersTotal();
   for(int i=c;i>=0;i--)
      {if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){continue;}
      if(OrderSymbol()!=sym){continue;}
      ct++;}
    return(ct);}
Terimakasih Codingnya Pak Amir. Saya ijin mengembangkan coding ini. Saya mau menambahkan coding untuk jumlah Op Buy dan Sell tiap Pair. coding yang saya tambahkan seperti ini, mohon dikoreksi:

int ordersCountBuy(string sym)
{
int type=OrderType();
int ct=0;
int c=OrdersTotal();
for(int i=c;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){continue;}
if(OrderSymbol()!=sym && type!=OP_BUY){continue;}
ct++;

}

return(ct);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int ordersCountSell(string sym)
{
int type=OrderType();
int ct=0;
int c=OrdersTotal();
for(int i=c;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS)){continue;}
if(OrderSymbol()!=sym && type!=OP_SELL){continue;}
ct++;

}
return(ct);
}
 
Terimakasih Codingnya Pak Amir. Saya ijin mengembangkan coding ini. Saya mau menambahkan coding untuk jumlah Op Buy dan Sell tiap Pair. coding yang saya tambahkan seperti ini, mohon dikoreksi:

int ordersCountBuy(string sym)
{
int type=OrderType();
int ct=0;
int c=OrdersTotal();
for(int i=c;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){continue;}
if(OrderSymbol()!=sym && type!=OP_BUY){continue;}
ct++;

}

return(ct);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int ordersCountSell(string sym)
{
int type=OrderType();
int ct=0;
int c=OrdersTotal();
for(int i=c;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS)){continue;}
if(OrderSymbol()!=sym && type!=OP_SELL){continue;}
ct++;

}
return(ct);
}
Sudah betul itu,,,mangtaps
 
Back
Top