Liquidación de fondo???? - página 11

 
Dmi3 #:

Zerich dispone de un registro de garantías completo hasta enero de este año. Tome cualquier día y compárelo con los datos del archivo Otkritie-MT5.

¿Cuál es el problema?

¿Puedo obtener el enlace?

 
Dmitriy Skub #:

¿Puedo tener el enlace?

https://ftp.zerich.com/pub/Terminals/QScalp/History/

 
Dmi3 #:

Zerich dispone de un registro de garantías completo hasta enero de este año. Tome cualquier día y compárelo con los datos del archivo Otkritie-MT5.

¿Cuál es el problema?

El problema es que estás proponiendo comparar "un trozo de pastel con un trozo de jabón", QScalp no es un indicador, necesitas los datos originales.

Es decir, datos de intercambio, de lo contrario confío más en los datos de Vladimir.

 
prostotrader #:

El problema es que estás proponiendo comparar "bump and grind", QScalp no es un indicador, necesitas los datos originales.

Es decir, intercambiar datos.

Amigo mío, mientras tú te cubres de musgo aquí, estos datos son utilizados por la tercera generación de algotraders. Pero puedes encontrar cualquier excusa para no desarrollar :)

 
Dmi3 #:

Amigo, mientras te cubres de musgo aquí, estos datos ya están siendo utilizados por la tercera generación de algotraders. Pero puedes encontrar cualquier excusa para no evolucionar :)

No soy tu amigo y no me importa cómo has evolucionado...

 
prostotrader #:

No soy tu compañero y no me importa cómo has evolucionado...

Sí, ciertamente siempre hay un ambiente muy específico aquí.

 
Dmi3 #:

Sí, aquí siempre hay un ambiente muy específico, por supuesto.

Al contrario que tú y otros como tú, yo estoy publicando código, resultados de código y otra información relacionada,

Puede que me equivoque en algunas cosas, ¡pero sólo estás armando un escándalo!

 

¡Vladimir!

Escribí un colector de ticks, esperando que MT-5 siga emitiendo correctamente las cotizaciones, pero no las introduzca correctamente en el historial.

Lo ejecutaré en GAZR-12.21 todos los días.

Si es posible, envíe su expediente cuando le resulte conveniente

//+------------------------------------------------------------------+
//|                                                 FS_Collector.mq5 |
//|                                     Copyright 2021, prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Label1
#property indicator_label1  "ASK"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Label2
#property indicator_label2  "BID"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

//--- plot Label3
#property indicator_label3  "LAST"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrYellow
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//---
#define  on_call -111
//---
input string StTime =  "10:00:00";  //Начало сбора тиков
input string EndTime = "23:50:00";  //Конец сбора тиков
//--- 
struct MARKET_DATA
{
  int cnt;
  datetime time[];
  double ask[];
  double bid[];
  double last[];
}m_data;
string spot_symbol;
bool fut_book;
double AskBuff[], BidBuff[], LastBuff[];
int event_cnt;
double ask_price, bid_price, last_price;
int f_handle; 
datetime start_time, end_time;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
  event_cnt = 0;
  m_data.cnt = 0;
  ArrayResize(m_data.time, 50000000, 50000000);
  ArrayResize(m_data.ask, 50000000, 50000000);
  ArrayResize(m_data.bid, 50000000, 50000000);
  ArrayResize(m_data.last, 50000000, 50000000);
  if(Period() != PERIOD_M1)
  {
    Alert("Индикатор использует таймфрейм М1!");
    return(INIT_FAILED);
  }
  fut_book = MarketBookAdd(Symbol());
  if(fut_book == false)
  {
    Alert("Не добавлен стакан фьючерса!");
    return(INIT_FAILED);
  }
  IndicatorSetInteger(INDICATOR_DIGITS, 2);
  IndicatorSetString(INDICATOR_SHORTNAME, "FS_Collector");
//---  
  SetIndexBuffer(0, AskBuff, INDICATOR_DATA);
  PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, EMPTY_VALUE);
  ArraySetAsSeries(AskBuff, true); 
  
  SetIndexBuffer(1, BidBuff, INDICATOR_DATA);
  PlotIndexSetDouble(1, PLOT_EMPTY_VALUE, EMPTY_VALUE);
  ArraySetAsSeries(BidBuff, true);
  
  SetIndexBuffer(2, LastBuff, INDICATOR_DATA);
  PlotIndexSetDouble(2, PLOT_EMPTY_VALUE, EMPTY_VALUE);
  ArraySetAsSeries(LastBuff, true);
  f_handle = FileOpen("AB_Colletor.csv", FILE_WRITE|FILE_CSV);
  if(f_handle == INVALID_HANDLE)
  {
    Alert("Не создан *.CSV файл!");
    return(INIT_FAILED);
  }
  else
  {
    FileWrite(f_handle, "Symbol: ", Symbol());
    FileWrite(f_handle, "Date", "Time", "ASK", "BID", "LAST");
  }
  start_time = StringToTime(StTime);
  end_time = StringToTime(EndTime);
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  if(f_handle != INVALID_HANDLE)
  {
    for(int i = 0; i<m_data.cnt;i++)
    {
      FileWrite(f_handle, TimeToString(m_data.time[i], TIME_DATE), TimeToString(m_data.time[i], TIME_SECONDS) ,DoubleToString(m_data.ask[i],
                Digits()), DoubleToString(m_data.bid[i], Digits()), DoubleToString(m_data.last[i], Digits()));
    }
    FileClose(f_handle);
    ArrayResize(m_data.time, 0, 0);
    ArrayResize(m_data.ask, 0, 0);
    ArrayResize(m_data.bid, 0, 0);
    ArrayResize(m_data.last, 0, 0);
  } 
  if(fut_book == true) MarketBookRelease(Symbol());
  if(reason == REASON_INITFAILED)
  {
    Print("Индикатор удалён! Причина - ошибка инициализации.");
    string short_name = ChartIndicatorName(ChartID(), 1, 0);
    ChartIndicatorDelete(ChartID(), 1, short_name); 
  }
}
//+------------------------------------------------------------------+
// Custom indicator Get data function                                |
//+------------------------------------------------------------------+
/*ulong GetStakan(const string a_symb, double &ask_pr, double &bid_pr)
{
  MqlBookInfo book_price[];
  if(MarketBookGet(a_symb, book_price) == true)//getBook )
  {
  }
  return(0);
}*/
//+------------------------------------------------------------------+
// Custom indicator Get data function                                |
//+------------------------------------------------------------------+
bool GetData()
{
  datetime cur_time = TimeTradeServer();
  if((cur_time >=start_time)&&(cur_time<end_time))
  {
    ask_price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
    bid_price = SymbolInfoDouble(Symbol(), SYMBOL_BID);
    last_price = SymbolInfoDouble(Symbol(), SYMBOL_LAST);
    if((ask_price > 0)&&(bid_price > 0)&&(last_price > 0))
    {
      m_data.time[m_data.cnt] = cur_time;
      m_data.ask[m_data.cnt] = ask_price; 
      m_data.bid[m_data.cnt] = bid_price;
      m_data.last[m_data.cnt] = last_price;
      m_data.cnt++;
      return(true);
    }
  }  
  return(false);
}
//+------------------------------------------------------------------+
// Custom indicator On book event function                           |
//+------------------------------------------------------------------+
void OnBookEvent(const string& symbol)
{
  if(symbol == Symbol())
  {
    GetData();
    double price[]; 
    OnCalculate(event_cnt, event_cnt, on_call, price);
  }
}  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
{
  if(prev_calculated == 0)
  {
    ArrayInitialize(AskBuff, EMPTY_VALUE);
    ArrayInitialize(BidBuff, EMPTY_VALUE);
    ArrayInitialize(LastBuff, EMPTY_VALUE);
  }
  if(begin != on_call) GetData(); 
  AskBuff[0] = ask_price;
  BidBuff[0] = bid_price;
  LastBuff[0] = last_price;
  event_cnt = rates_total;
  return(rates_total);
}
//+------------------------------------------------------------------+
 
prostotrader #:

A diferencia de ti y de otros como tú, yo estoy publicando código, resultados de código y otra información relacionada,

Puede que me equivoque en algunas cosas, por supuesto, pero tú... ¡sólo agita el aire!

En los lugares con un ambiente normal comparto una buena cantidad de información que los comerciantes necesitan. No el código por supuesto, mi competencia aquí es débil, al igual que la suya, sin embargo.
Sólo tienes que utilizar el enlace y dar las gracias, no es difícil 🙂 .
 
Dmi3 #:
En los lugares con un ambiente normal comparto una buena cantidad de información que los comerciantes necesitan. No es un código por supuesto, mi competencia aquí es débil, al igual que la suya, sin embargo.
Sólo tienes que usar el enlace y dar las gracias, no es difícil 🙂 .
Miras a la gente como tú y piensas, bueno... otro arrogante, o en nuestro caso, un charlatán. Existe esta categoría de ciudadanos. Me gusta especialmente la forma en que sacas conclusiones sobre los demás. Y sabes que en psicología existe el ejemplo de que el hombre piensa con sus propias categorías de mapas mentales construidas durante el crecimiento y la formación de la personalidad y cuando hablas de alguien ENTONCES estás hablando principalmente de ti mismo porque utilizas tus mapas mentales para percibir el mundo. ¡¡¡Piensa siempre en esto antes de acusar a alguien de algo!!!