Chiarificazione sostanziale???? - pagina 11

 
Dmi3 #:

Zerich ha un registro delle garanzie completo fino a gennaio di quest'anno. Prendi un giorno qualsiasi e confrontalo con i dati dell'archivio Otkritie-MT5.

Qual è il problema?

Posso avere il link?

 
Dmitriy Skub #:

Posso avere il link?

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

 
Dmi3 #:

Zerich ha un registro delle garanzie completo fino a gennaio di quest'anno. Prendi un giorno qualsiasi e confrontalo con i dati dell'archivio Otkritie-MT5.

Qual è il problema?

Il problema è che stai proponendo di confrontare "un pezzo di merda", QScalp non è un indicatore, hai bisogno dei dati originali.

Cioè i dati dello scambio, altrimenti mi fido di più dei dati di Vladimir.

 
prostotrader #:

Il problema è che stai proponendo di confrontare "bump and grind", QScalp non è un indicatore, hai bisogno dei dati originali.

Cioè lo scambio di dati.

Amico mio, mentre tu sei coperto di muschio qui, questi dati sono utilizzati dalla terza generazione di algotraders. Ma si può trovare qualsiasi scusa per non sviluppare :)

 
Dmi3 #:

Amico mio, mentre ti stai coprendo di muschio qui, questi dati sono già utilizzati dalla terza generazione di algotraders. Ma si può trovare qualsiasi scusa per non evolvere :)

Non sono tuo amico e non mi interessa come ti sei evoluto...

 
prostotrader #:

Non sono tuo amico e non mi interessa come ti sei evoluto...

Sì, certamente qui c'è sempre un'atmosfera molto specifica.

 
Dmi3 #:

Sì, qui c'è sempre un'atmosfera molto specifica, naturalmente.

Al contrario di te e di altri come te, io sto postando codice, risultati del codice e altre informazioni correlate,

Forse mi sbaglio su alcune cose, ma tu stai solo facendo storie!

 

Vladimir!

Ho scritto un raccoglitore di ticks, sperando che MT-5 trasmetta ancora correttamente le quotazioni, ma non le inserisca correttamente nella storia.

Lo eseguirò su GAZR-12.21 ogni giorno.

Se possibile, inviate il vostro file quando è conveniente per voi

//+------------------------------------------------------------------+
//|                                                 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 differenza di te e di altri come te, io sto postando codice, risultati del codice e altre informazioni correlate,

Posso sbagliarmi su alcune cose, naturalmente, ma tu - scuoti solo l'aria!

In luoghi con un'atmosfera normale condivido una discreta quantità di informazioni di cui i commercianti hanno bisogno. Non il codice ovviamente, la mia competenza qui è debole, proprio come la tua, però.
Basta usare il link e ringraziare, non è difficile 🙂
 
Dmi3 #:
In luoghi con un'atmosfera normale condivido una discreta quantità di informazioni di cui i commercianti hanno bisogno. Non il codice ovviamente, la mia competenza qui è debole, come la vostra, però.
Basta usare il link e ringraziare, non è difficile 🙂
Guardi le persone come te e pensi: "Beh... un'altra persona arrogante o, nel nostro caso, un chiacchierone! Esiste una tale categoria di cittadini. Mi piace soprattutto il modo in cui trae conclusioni sugli altri. E sai che in psicologia c'è un esempio che un uomo pensa con le proprie categorie di mappe mentali costruite durante la crescita e la formazione della personalità e quando parli di qualcuno ALLORA stai parlando principalmente di te stesso perché usi le tue mappe mentali per percepire il mondo. Pensateci sempre prima di accusare qualcuno di qualcosa!!!
Motivazione: