BTC USD 86,314.2 Gold USD 4,333.54
Time now: Jun 1, 12:00 AM

EA keduaku - BadaiMatawangEA

Izham87

Active Member
Messages
1,198
Joined
Jul 14, 2016
Messages
1,198
Reaction score
528
Points
81
Code:
//+------------------------------------------------------------------+
//|                                                BadaiMatawang.mq4 |
//|                                       Copyright 2017, Izham Inc. |
//|                                            [url]http://www.google.com[/url] |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Izham Inc."
#property link      "http://www.google.com"
#property version   "1.00"
#property strict

#include <stderror.mqh>
#include <stdlib.mqh>

extern double percentatrisk = 0.1;
extern string pairsuffix = "";
extern double SL = 1000;
extern double TP = 2000;
extern int MagicNumber = 99;

string Pair[10] = {"USDCHF","AUDUSD","GBPUSD","GBPJPY","NZDUSD","EURJPY","AUDJPY","EURGBP","USDJPY","EURUSD"**;

extern int onceaday1=0; 
extern int onceaday2=1;

int OnInit()
  {
   MathSrand(GetTickCount());
   return(INIT_SUCCEEDED);
  **
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  **
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

     if(StringSubstr(TimeToStr(TimeLocal(),TIME_SECONDS),0,2) == "08" && onceaday1 == 0)
     {
     ExecuteTrade();
     onceaday1=1;
     onceaday2=0;
     **


     if(StringSubstr(TimeToStr(TimeLocal(),TIME_SECONDS),0,2) == "22" && onceaday2 == 0)
     {
     onceaday1=0;
     subCloseOrder();
     if(subTotalTrade()>0) subCloseOrder();
     if(subTotalTrade()>0) subCloseOrder();
     if(subTotalTrade()==0) onceaday2=1;
     **
 
   return;                             // Exit start()
  **
  
//+------------------------------------------------------------------+

void ExecuteTrade()
{
double lotvalue;
string usdexchangepair;
string sigpair, sigpairbase, sigpaircounter;
int sigaction[10]={0,0,0,0,0,0,0,0,0,0**;
int ticket;

for(int k=0;k<10;k++)
sigaction[k]=MathRand()%2;

for(int j=0;j<10;j++)
{
  sigpair = StringConcatenate(Pair[j], pairsuffix);
  sigpairbase = StringSubstr(Pair[j], 0, 3);
  sigpaircounter = StringSubstr(Pair[j], 3, 3);

   //---Calculate lot based on MM
  if (sigpaircounter == "USD") {
  lotvalue = NormalizeDouble((AccountFreeMargin() * percentatrisk * 0.1) / (MarketInfo(sigpair, MODE_LOTSIZE) * MarketInfo(sigpair, MODE_POINT) * SL), 2);
  ** else {
  if (sigpaircounter == "GBP") {
    lotvalue = NormalizeDouble((AccountFreeMargin() * percentatrisk * 0.1) / (MarketInfo(sigpair, MODE_LOTSIZE) * MarketInfo(sigpair, MODE_POINT) * MarketInfo(StringConcatenate("GBPUSD", pairsuffix), MODE_BID) * SL), 2);
  ** else {
    usdexchangepair = StringConcatenate("USD", sigpaircounter, pairsuffix);
    lotvalue = NormalizeDouble((AccountFreeMargin() * percentatrisk * 0.1 * MarketInfo(usdexchangepair, MODE_BID)) / (MarketInfo(sigpair, MODE_LOTSIZE) * MarketInfo(sigpair, MODE_POINT) * SL), 2);
  **
  **
    
  if(lotvalue<MarketInfo(Symbol(), MODE_MINLOT))
  lotvalue=MarketInfo(Symbol(), MODE_MINLOT);
  if(lotvalue>MarketInfo(Symbol(), MODE_MAXLOT))
  lotvalue=MarketInfo(Symbol(), MODE_MAXLOT);
        
  //---Execute trades 
    if (sigaction[j] == 0) {
    ticket = subOpenOrder(OP_BUY, sigpair, lotvalue);
    subCheckError(ticket, "BUY");
  ** else {
    ticket = subOpenOrder(OP_SELL, sigpair, lotvalue);
    subCheckError(ticket, "SELL");
  **
**  
**



int subOpenOrder(int type, string symbol, double openlot)
{
   int
         ticket      = 0,
         err         = 0,
         c           = 0;
         
   double         
         aStopLoss   = 0,
         aTakeProfit = 0,
         bStopLoss   = 0,
         bTakeProfit = 0;

      aStopLoss   = NormalizeDouble(MarketInfo(symbol,MODE_ASK)-SL*MarketInfo(symbol,MODE_POINT),(int)MarketInfo(symbol,MODE_DIGITS));
      bStopLoss   = NormalizeDouble(MarketInfo(symbol,MODE_BID)+SL*MarketInfo(symbol,MODE_POINT),(int)MarketInfo(symbol,MODE_DIGITS));
      aTakeProfit = NormalizeDouble(MarketInfo(symbol,MODE_ASK)+TP*MarketInfo(symbol,MODE_POINT),(int)MarketInfo(symbol,MODE_DIGITS));
      bTakeProfit = NormalizeDouble(MarketInfo(symbol,MODE_BID)-TP*MarketInfo(symbol,MODE_POINT),(int)MarketInfo(symbol,MODE_DIGITS));
 
  
   
   if(type==OP_BUY)
   {
      for(c=0;c<10;c++)
      {  
         ticket=OrderSend(symbol,OP_BUY,openlot,MarketInfo(symbol,MODE_ASK),5,aStopLoss,aTakeProfit,"",MagicNumber,0);
         err=GetLastError();
         if(err==0)
         { 
            if(ticket>0) break;
         **
         else
         {
            if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
            {
               Sleep(5000);
               continue;
            **
            else //normal error
            {
               if(ticket>0) break;
            **  
         **
      **   
   **
   if(type==OP_SELL)
   {   
      for(c=0;c<10;c++)
      {
         ticket=OrderSend(symbol,OP_SELL,openlot,MarketInfo(symbol,MODE_BID),5,bStopLoss,bTakeProfit,"",MagicNumber,0);
         err=GetLastError();
         if(err==0)
         { 
            if(ticket>0) break;
         **
         else
         {
            if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
            {
               Sleep(5000);
               continue;
            **
            else //normal error
            {
               if(ticket>0) break;
            **  
         **
      **   
   **  
   return(ticket);
**



void subCheckError(int ticket, string Type)
{
    if(ticket>0) 
    {
      if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
      {
      Print(Type + " order opened : ",OrderOpenPrice());
    **
    else Print("Error opening " + Type + " order : (",GetLastError(),") ", ErrorDescription(GetLastError()));
    **
**


void subCloseOrder()
{
   int
         cnt, 
         total       = 0,
         ticket      = 0,
         err         = 0,
         c           = 0;

   total = OrdersTotal();
   for(cnt=total-1;cnt>=0;cnt--)
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true)
      {  
      if(OrderMagicNumber()==MagicNumber)
      {
         switch(OrderType())
         {
            case OP_BUY      :
               for(c=0;c<10;c++)
               {
                  ticket=OrderClose(OrderTicket(),OrderLots(),Bid,5,Violet);
                  err=GetLastError();
                  if(err==0)
                  { 
                     if(ticket>0) break;
                  **
                  else
                  {
                     if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
                     {
                        Sleep(5000);
                        continue;
                     **
                     else //normal error
                     {
                        if(ticket>0) break;
                     **  
                  **
               **   
               break;
               
            case OP_SELL     :
               for(c=0;c<10;c++)
               {
                  ticket=OrderClose(OrderTicket(),OrderLots(),Ask,5,Violet);
                  err=GetLastError();
                  if(err==0)
                  { 
                     if(ticket>0) break;
                  **
                  else
                  {
                     if(err==0 || err==4 || err==136 || err==137 || err==138 || err==146) //Busy errors
                     {
                        Sleep(5000);
                        continue;
                     **
                     else //normal error
                     {
                        if(ticket>0) break;
                     **  
                  **
               **   
               break;
               
            case OP_BUYLIMIT :
            case OP_BUYSTOP  :
            case OP_SELLLIMIT:
            case OP_SELLSTOP :
               break;
         **
      **
     **  
   **      
**

//----------------------- NUMBER OF ORDER BASE ON SYMBOL AND MAGICNUMBER FUNCTION
int subTotalTrade()
{
   int cnt;
   int total = 0;

   for(cnt=0;cnt<OrdersTotal();cnt++)
   {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true){
      if(OrderType()<=OP_SELL &&
         OrderMagicNumber()==MagicNumber) total++;**
   **
   return(total);
**
 
Last edited:
mass buka ea nya random? Saran sebaiknya pake indikator semisal open candle do at as candle sebelumnya maka open buy atau sebaliknya. tinggal sesuaikan pakai TF brapa
 
mass buka ea nya random? Saran sebaiknya pake indikator semisal open candle do at as candle sebelumnya maka open buy atau sebaliknya. tinggal sesuaikan pakai TF brapa

Open trade based on previous candle condition..idea yang bagus..akan dipertimbangkan...
 

Latest Posts

Live Forex Chart

Currency
Rates
EUR / USD
1.14535
USD / JPY
157.279
GBP / USD
1.33590
USD / CHF
0.82014
USD / CAD
1.40530
EUR / JPY
180.138
AUD / USD
0.71155
Back
Top
Log in Register