Author: Marcio Sales Santana
0 Views
0 Downloads
0 Favorites
robo
ÿþ//+------------------------------------------------------------------+

//|                                                TestLibrary15.mq5 |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                              http://www.mql5.com |

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

#property copyright "Marcio Sales Santana"

#property link      ""

#property version   "1.0"

//--- Including the application class



input int    tamanho_ativo = 4;



int maxima_segundo_compra;

int maxima_segundo_venda;

int maxima_segundo_E;

int maxima_segundo_ask;

int maxima_segundo_bid;

int maxima_segundo_last_l;

int maxima_segundo_volume;

int maxima_compra;

int maxima_venda;

int minima_segundo_compra;

int minima_segundo_venda;

int minima_segundo_E;

int minima_segundo_ask;

int minima_segundo_bid;

int minima_segundo_last_l;

int minima_segundo_volume;

int minima_compra;

int minima_venda;

int qtd_buy_1_dol_anterior = 0;

int qtd_sell_1_dol_anterior = 0;

int maxima_book_anterior = 0;

int minima_book_anterior = 0;

int qtd_buy_1_dol_anterior_timer = 0;

int qtd_sell_1_dol_anterior_timer = 0;

int maxima_timer_anterior = 0;

int minima_timer_anterior = 0;



int qtd_buy_1_dol_anterior_tick = 0;

int qtd_sell_1_dol_anterior_tick = 0;

int maxima_tick_anterior = 0;

int minima_tick_anterior = 0;



int ultimo_last_compra;

int ultimo_last_venda;

int ultimo_last_E;

int ultimo_compra;

int ultimo_venda;

double ultimo_ask;

double ultimo_bid;

double ultimo_ask_book;

double ultimo_bid_book;



int ultimo_last_l;

double ultimo_last;



double ultimo_ask_timer;

double ultimo_bid_timer;

double ultimo_last_timer;



double ultimo_ask_tick;

double ultimo_bid_tick;

double ultimo_last_tick;



int ultimo_volume;

int pontosImportantes[];

datetime time_last_trade_venda;

datetime time_last_trade_compra;

datetime time_last_trade_E;

datetime time_compra;

datetime time_venda;

datetime time_ask;

datetime time_bid;

datetime time_last_l;

datetime time_volume;

datetime time_anterior;

datetime time_tick_anterior;

MqlDateTime obj_minuto;

ulong qtd_geral_compra = 0;

ulong qtd_geral_venda = 0;

ulong qtd_geral_E = 0;

ulong qtd_geral_E_timer = 0;

ulong qtd_geral_E_tick = 0;

int maxima_anterior_compra = 0;

int minima_anterior_compra = 0;

int maxima_anterior_venda = 0;

int minima_anterior_venda = 0;

int maxima_anterior_E = 0;

int minima_anterior_E = 0;

int maxima_anterior_c = 0;

int minima_anterior_c = 0;

int maxima_anterior_v = 0;

int minima_anterior_v = 0;

int maxima_anterior_ask = 0;

int minima_anterior_ask = 0;

int maxima_anterior_bid = 0;

int minima_anterior_bid = 0;

int maxima_anterior_last_l = 0;

int minima_anterior_last_l = 0;

int maxima_anterior_volume = 0;

int minima_anterior_volume = 0;

int maxima_timer = 0;

int minima_timer = 0;

int buy_1_anterior = 0;

int sell_1_anterior;

int maxima_book = 0;

int minima_book = 0;



int maxima_tick = 0;

int minima_tick = 0;



   double buy_1_timer;

   int qtd_buy_1_timer;



   double sell_1_timer;

   int qtd_sell_1_timer;



   double buy_1_tick;

   int qtd_buy_1_tick;



   double sell_1_tick;

   int qtd_sell_1_tick;



   double buy_1_book;

   int qtd_buy_1_book;



   double sell_1_book;

   int qtd_sell_1_book;



double time_ask_timer = 0;

double time_bid_timer = 0;

double time_last_timer = 0;

double time_last_t;

double time_ask_tick = 0;

double time_bid_tick = 0;

double time_last_tick = 0;



double tick_ask_t = 0;

double tick_bid_t = 0;

double tick_last_t = 0;



bool um_segundo = true;

bool em_leilao_abertura = true;

int posicao_sell = 0;



string book = "B";

string letra_last_I = "I";

string letra_last__ = ";";

string letra_timer = "S";



string nome_arquivo;

datetime data_atual;



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

//| Expert initialization function                                   |

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

int OnInit(void)

  {

   if (_Symbol == "PETR4") {

      MarketBookAdd("PETR4");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "DOL") {

      //MarketBookAdd("WDOM20");

      MarketBookAdd("DOLM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "WDO") {

      //MarketBookAdd("WDOM20");

      MarketBookAdd("DOLM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "IND") {

      //MarketBookAdd("WINM20");

      MarketBookAdd("INDM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "WIN") { // WING19

      //MarketBookAdd("WINM20");

      MarketBookAdd("INDM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "EP") { // EPZ19

      MarketBookAdd("EPM20");

      MarketBookAdd("MESM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "MES") { // MESZ19

      MarketBookAdd("EPM20");

      MarketBookAdd("MESM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "ENQ") { // MESZ19

      MarketBookAdd("ENQM20");

      MarketBookAdd("MNQM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "MNQ") { // MESZ19

      MarketBookAdd("ENQM20");

      MarketBookAdd("MNQM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "M2K") { // MESZ19

      MarketBookAdd("RTYM20");

      MarketBookAdd("M2KM20");

   } else if (StringSubstr(_Symbol, 0, StringLen(_Symbol)-3) == "RTY") { // MESZ19

      MarketBookAdd("RTYM20");

      MarketBookAdd("M2KM20");

   }   

   EventSetMillisecondTimer(1);

   return(INIT_SUCCEEDED);

  }

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason)

  {

  }

  

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

//| Expert tick function                                             |

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

void OnTick(void) {

}



  

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

//| Timer function                                                   |

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

void OnTimer(void) {

}



  

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

//| BookEvent function                                               |

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

void OnBookEvent(const string &symbol) {

   MqlBookInfo last_bookArray[];



   //--- get the book

   if(MarketBookGet(symbol,last_bookArray)) {

      //--- process book data

      posicao_sell = 0;

      MqlBookInfo curr_info;

      for(int idx=0;(idx<ArraySize(last_bookArray));idx++) {

         curr_info=last_bookArray[idx];

         if (curr_info.type == BOOK_TYPE_BUY || curr_info.type == BOOK_TYPE_BUY_MARKET) {

            posicao_sell = idx;

            break;

         }

      }

      

      if (posicao_sell != 0) {

         double buy_1;

         int qtd_buy_1;



         double sell_1;

         int qtd_sell_1;

            

         curr_info=last_bookArray[posicao_sell];

         buy_1 = curr_info.price;

         qtd_buy_1 = curr_info.volume_real;



         // venda

         curr_info=last_bookArray[posicao_sell-1];

         sell_1 = curr_info.price;

         qtd_sell_1 = curr_info.volume_real;

   

         //

         MqlTick last_tick;

         if(SymbolInfoTick(symbol,last_tick)) {

            if (time_anterior != last_tick.time_msc) {

               time_anterior = last_tick.time_msc;

            } else {

               return;

            }

            TimeToStruct(last_tick.time,obj_minuto);

            string obj_name = obj_minuto.year + "_" + obj_minuto.mon + "_" + obj_minuto.day + "_" + obj_minuto.hour + "_" + obj_minuto.min;            

            if ((last_tick.last > sell_1) && (last_tick.volume > qtd_sell_1) && (qtd_buy_1 > qtd_sell_1)) {

               //Alert(symbol, " - ", last_tick.volume);

               if (ObjectFind(ChartID(), obj_name)) {

                  ObjectCreate(ChartID(),obj_name,OBJ_TEXT,0,last_tick.time,last_tick.last);

                  ObjectSetString(ChartID(),obj_name,OBJPROP_TEXT,"1");

                  ObjectSetInteger(ChartID(),obj_name,OBJPROP_COLOR,clrLime);

               } else {

                  string qtd_vezes = ObjectGetString(ChartID(),obj_name,OBJPROP_TEXT);

                  int i_qtd_vezes = qtd_vezes;

                  i_qtd_vezes = i_qtd_vezes + 1;

                  ObjectSetString(ChartID(),obj_name,OBJPROP_TEXT,i_qtd_vezes);

                  ObjectSetInteger(ChartID(),obj_name,OBJPROP_COLOR,clrLime);

                  ObjectSetDouble(ChartID(),obj_name,OBJPROP_PRICE,last_tick.last);

               }

            }

            if ((last_tick.last < buy_1) && (last_tick.volume > qtd_buy_1) && (qtd_sell_1 > qtd_buy_1)) {

               //Alert(symbol, " - ", last_tick.volume);

               if (ObjectFind(ChartID(), obj_name)) {

                  ObjectCreate(ChartID(),obj_name,OBJ_TEXT,0,last_tick.time,last_tick.last);

                  ObjectSetString(ChartID(),obj_name,OBJPROP_TEXT,"1");

                  ObjectSetInteger(ChartID(),obj_name,OBJPROP_COLOR,clrRed);

               } else {

                  string qtd_vezes = ObjectGetString(ChartID(),obj_name,OBJPROP_TEXT);

                  int i_qtd_vezes = qtd_vezes;

                  i_qtd_vezes = i_qtd_vezes + 1;

                  ObjectSetString(ChartID(),obj_name,OBJPROP_TEXT,i_qtd_vezes);

                  ObjectSetInteger(ChartID(),obj_name,OBJPROP_COLOR,clrRed);

                  ObjectSetDouble(ChartID(),obj_name,OBJPROP_PRICE,last_tick.last);

               }                  

            }

         }

      }

   }

}



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

//| ChartEvent function                                              |

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

void OnChartEvent(const int    id,

                  const long   &lparam,

                  const double &dparam,

                  const string &sparam)

  {

  }

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

Comments