Impulso - pagina 21

 
Karputov Vladimir:
  1. Bene. Il tempo di arrivo dei tick può essere registrato non in incrementi, ma direttamente in microsecondi dall'inizio del programma MQL5. Questo è il modo in cui verrà calcolata la pausa tra i tick.
  2. Il secondo campo sarà quindi il prezzo dell'array close[] - cioè Bid.
  3. Ho alcuni dubbi su Ask. Vale la pena riceverlo? L'indicatore riceve l'array spread[] - può essere scritto. La persona che ne ha bisogno calcolerà Ask.
  4. Nome del file in questo formato: Data_ticks_GBPUSD.f_2015.07.20 16_02_36.csv

Aggiunto: questo risulta essere un tavolo come questo:

Nessuna compatibilità all'indietro con le versioni del terminale. Per MT4 deve essere completamente rifatto. Cosa vi impedisce di registrare la data e non un tempo sintetico? Puoi collegare la data a qualsiasi cosa, usarla senza ricalcolare con nulla. Perché fare un pasticcio deliberatamente in futuro? Non sai cos'altro dovrai fare con il tempo... E qui dobbiamo anche ricalcolarlo/convertirlo ...

Cosa ci impedisce di scrivere l'attuale Ask invece dell'array spread[], che è inutile in MT4? Ti stai deliberatamente tagliando il piede fino al collo? :)))

 

Ok. Questo è il formato del file:

Время тика, микросекунд Время тика, секунд      Bid             Ask
76718                   20.07.2015 18:09        1.55962         1.55981
76838                   20.07.2015 18:09        1.55962         1.55981
190796                  20.07.2015 18:09        1.55961         1.55980
533045                  20.07.2015 18:09        1.55960         1.55979
989364                  20.07.2015 18:09        1.55961         1.55980
2058082                 20.07.2015 18:09        1.55960         1.55979
2397266                 20.07.2015 18:09        1.55961         1.55980
3498990                 20.07.2015 18:09        1.55962         1.55981
5276197                 20.07.2015 18:09        1.55962         1.55981
5276318                 20.07.2015 18:09        1.55962         1.55981
5714501                 20.07.2015 18:09        1.55967         1.55986
5825529                 20.07.2015 18:09        1.55968         1.55987
5825630                 20.07.2015 18:09        1.55968         1.55987
6095716                 20.07.2015 18:09        1.55969         1.55988
6419932                 20.07.2015 18:09        1.55968         1.55987
6795191                 20.07.2015 18:09        1.55969         1.55988
6972306                 20.07.2015 18:09        1.55968         1.55987
7017356                 20.07.2015 18:09        1.55967         1.55986
È buono?
 
Roman Shiredchenko:

Qualsiasi cosa da aggiungere sull'argomento...

C'è un link a un video - l'hanno cancellato - pensavano fosse pubblicità.

Come posso condividere la strategia di scalping sulla quale sto scrivendo gli indicatori?

Come posso inserire il video di youtube in "video interessanti di luglio"?

Non posterò il link - lo invierò a Google: "Le caratteristiche principali della strategia"Forex Speedometer" sono l'assenza di indicatori e la semplicità del trading. Tipo di strategia - scalping. La strategia può essere utilizzata su qualsiasi coppia di valute, ma è consigliabile scegliere quelle altamente volatili con un piccolo spread".

------------------------------------------------------------------------------------------

Questo argomento è stato toccato anche qui. Cosa contare il tempo di arrivo di ogni tick nella matrice e come contare la velocità...

È chiaro che ci sono delle varianti. È chiaro che in millisecondi il tempo di ogni tick catturato sarà visibile... (Come usare questo dopo? forse...)

Artem scrive di nuovo per i particolarmente dotati... :-)

Lì è offerto esattamente per contare i tic al secondo - anche qui è stata offerta tale variante...

C'è un'altra domanda qui - come testarlo? I conti ndd del mio broker con spread minimo non hanno demo. Se avessi voluto usare il conto demo e quello reale del mio broker forex avrei controllato il numero di tick - è lo stesso...

Cioè la domanda sarà come elaborare programmaticamente i dati raccolti sui trade virtuali in file csv eexcel e ticks... da conti reali.

La questione sarà elaborare i dati raccolti per i trade virtuali, in file csv in eexsv e ticks dai conti reali... :-)

Come posso incorporare i tick nel file csv nella storia per MT4 strategy tester?

Ho provato qualcosa di simile (non questa strategia, ho inventato la mia) non molto tempo fa, ma l'ho abbandonata. Devo testare un tale sistema in tempo reale, perché il tester simula solo i tick. Ho osservato l'Expert Advisor per due ore, poi ho copiato il codice per 5 minuti e così via, e poi mi sono annoiato. I risultati non sono molto buoni, molte operazioni con piccoli profitti, ma uno stoploss molte volte sovrascrive tutti i profitti. In alternativa, si dovrebbe usare la martingala per evitare l'accumulo di perdite sul capitale. Ho un Expert Advisor su un martin senza questo e la sua implementazione è molto più semplice.
 

La base per registrare le zecche è lì.

//+------------------------------------------------------------------+
//|                                             IndTickCollector.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.01"
#property indicator_chart_window
#property description "Индикатор хранит тики. Время тика, микросекунд, Время тика, секунд , Bid, Ask"
#property indicator_buffers 0
#property indicator_plots   0
//+------------------------------------------------------------------+
//| Индикатор расчитывает скорость прихода тиков.                    |
//+------------------------------------------------------------------+
//--- parameters
int file_handle; // хэндл файла
string FileName; // имя файла
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- open file
//--- время начала сбора тиков - текущее
   datetime time_start=TimeCurrent();
//--- откроем файл для записи значений индикатора (если его нет, то создастся автоматически)
   ResetLastError();
   FileName="Data_ticks_"+Symbol()+"_"+TimeToString(time_start,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+".csv";
   StringReplace(FileName,":","-");
   file_handle=FileOpen(FileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для записи",FileName);
      PrintFormat("Путь к файлу: %s\\MQL5\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- запишем название колонок
      FileWrite(file_handle,"Время тика, микросекунд","Время тика, секунд","Bid","Ask");
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileName,GetLastError());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // размер массива price[]
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const int begin,            // откуда начинаются значимые данные
                 const double& price[]       // массив для расчета
                 )
  {
   ulong microsecond_count=GetMicrosecondCount(); // зафиксировали вход в OnCalculate()
   int start=0;
   if(prev_calculated!=0) // работаем только на пришедших тиках, так как на истории нет времени тиков
     {
      MqlTick last_tick;
      //---
      if(SymbolInfoTick(Symbol(),last_tick))
        {
         FileWrite(file_handle,microsecond_count,last_tick.time,
                   DoubleToString(last_tick.bid,Digits()),DoubleToString(last_tick.ask,Digits()));
        }
      else Print("SymbolInfoTick() failed, error = ",GetLastError());
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- закрываем файл
   FileClose(file_handle);
   PrintFormat("Данные записаны, файл %s закрыт",FileName);
//--- очищаем комментарии
   Comment("");
  }
//+------------------------------------------------------------------+


Formato del nome del file:

Data_ticks_GBPUSD.f_2015.07.21 12-06-14.csv

Il file ha quattro colonne:

Время тика, микросекунд Время тика, секунд      Bid             Ask
76718                   20.07.2015 18:09        1.55962         1.55981
76838                   20.07.2015 18:09        1.55962         1.55981
190796                  20.07.2015 18:09        1.55961         1.55980
533045                  20.07.2015 18:09        1.55960         1.55979
989364                  20.07.2015 18:09        1.55961         1.55980


Restano domande sulla frequenza con cui avviare nuovi file. Penso che ogni file dovrebbe essere avviato ogni ora. Questo renderà più facile l'analisi in seguito.

 
Karputov Vladimir:

La base per registrare le zecche è lì.

Formato del nome del file:

Il file ha quattro colonne:

Restano domande su quanto spesso avviare nuovi file. Penso che ogni file dovrebbe essere avviato ogni ora. In questo modo sarà più facile da analizzare in seguito.

Non è tecnicamente ottimale. Prima di tutto, perché scrivere microsecondi? Questo formato è migliore:

Время, DD.MM.YYY HH:mm:ss:sss     Bid    Ask
20.07.2015 18:09:323            1.55962  1.55981 

Il formato CSV dovrebbe essere abbandonato a favore di XML. Il compito di serializzare i dati Object To Xml <--> XML To Object è ovvio. In caso di necessità sarà facile aggiungere nuovi parametri. Da conservare di giorno in giorno, naturalmente. 1 file - 1 giorno di storia delle zecche.

 
Per quanto riguarda l'idea in sé, ovviamente è una completa assurdità (con tutto il rispetto). Stai facendo un'identità tra volatilità e momentum (movimento direzionale). Questo però è fondamentalmente sbagliato. Non c'è praticamente nessuna correlazione e quindi l'approccio scelto non porterà da nessuna parte.
 
Vasiliy Sokolov:
Per quanto riguarda l'idea in sé - ovviamente un'assurdità assoluta (con tutto il rispetto). Stai facendo un'identità tra volatilità e momentum (movimento direzionale). Questo però è fondamentalmente sbagliato. Non c'è praticamente nessuna correlazione e quindi l'approccio scelto non porterà da nessuna parte.

La cosa principale è raccogliere dati sui tic. Questa è la base della ricerca. E già su questa base si possono testare diversi modelli.

Aggiunto: E sì, non c'è ancora una definizione chiara di impulso.

 
Karputov Vladimir:

La cosa principale è raccogliere dati sui tic. Questa è come la base della ricerca. E già su questa base si possono testare diversi modelli.

Aggiunto: E sì, non c'è ancora una definizione chiara di impulso.

Per essere più precisi: non c'è una formulazione chiara necessaria qui... e dopo tutto è una base, una base davvero necessaria... senza tale formulazione tutto sarà traballante, traballante...

Per esempio, c'è una formulazione così chiara nell'ingegneria degli impulsi. Ho fatto un esempio prima. Naturalmente, non ci si può limitare a una sola foto. Questa teoria è ampia, e sarà molto utile per la sua applicazione qui.

 

Cercherò ancora una volta di chiarire il mio punto di vista...

Anche se molto grezza, è comunque un'immagine che dà un'idea:



I parametri dell'impulso - le variabili - devono essere determinati al volo.

 
Олег avtomat:

Cercherò di spiegare il mio punto di vista ancora una volta...

Anche se molto grezza, è comunque un'immagine che dà un'idea:



I parametri - variabili - degli impulsi devono essere determinati al volo.

Oleg, dov'è il polso in questa foto? Allora decomponetelo in componenti tick-time, invece di proporre un grafico di giorni.
Motivazione: