oslib/ose/ose-p7-003-002-custom-symbol.mq5
super.admin 07f69c4478 convert
2025-05-30 16:15:18 +02:00

81 lines
No EOL
6.8 KiB
MQL5

//+------------------------------------------------------------------+
//| ose-p7-003-002-custom-symbol.mq5 |
//| Copyright 2020, OS Corp |
//| http://www.os.org |
//| |
//| Versao p7-003-002 |
//| 1. |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, OS Corp."
#property link "http://www.os.org"
#property version "1.0"
#include <Trade\AccountInfo.mqh>
enum ENUM_TYPE_LINE {
TYPE_LINE_SQL, // generetes sql lines
TYPE_LINE_CSV // generetes csv lines
};
enum ENUM_TYPE_ARQ {
TYPE_ARQ_TERMINAL_LOGFILE, // write lines in terminal logfile
TYPE_ARQ_NEW_FILE // write lines in new file
};
enum ENUM_TYPE_EXPORT {
TYPE_EXPORT_TICK, // exportacao de ticks
TYPE_EXPORT_BOOK, // exportacao do book de ofertas
TYPE_EXPORT_ALL // exportacao de ticks e do book
};
input ENUM_TYPE_EXPORT EA_TYPE_EXPORT = TYPE_EXPORT_ALL ; // TYPE_EXPORT
input ENUM_TYPE_LINE EA_TYPE_LINE = TYPE_LINE_SQL ; // TYPE_LINE
input string EA_CSV_SEPARATOR = ";" ; // CSV_SEPARATOR
input ENUM_TYPE_ARQ EA_TYPE_ARQ = TYPE_ARQ_NEW_FILE; // TYPE_ARQ
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
string m_symbol_dest;
string m_symbol_ori;
int OnInit(){
m_symbol_dest = Symbol()+".SYN";
m_symbol_ori = Symbol();
//--- ativamos o livro de ofertas para o instrumento a partir do qual vamos tomas dados
MarketBookAdd(Symbol());
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){
}
//+------------------------------------------------------------------+
//| Tick function |
//+------------------------------------------------------------------+
void OnTick(void){
MqlTick ticks[];
ArrayResize(ticks,1);
//--- copiamos os preços atuais a partir de um instrumento habitual para um instrumento personalizado
if(SymbolInfoTick(m_symbol_ori,ticks[0])){
CustomTicksAdd(m_symbol_dest,ticks);
}
}
//+------------------------------------------------------------------+
//| Book function |
//+------------------------------------------------------------------+
void OnBookEvent(const string &book_symbol){
//--- copiamos o estado atual do livro de ofertas a partir de um instrumento habitual para um instrumento personalizado
if(book_symbol==Symbol()){
MqlBookInfo book_array[];
if(MarketBookGet(m_symbol_ori,book_array)){
CustomBookAdd(m_symbol_dest,book_array);
}
}
}
//+------------------------------------------------------------------+