Esperimenti con MetaTrader 5 a Discovery - pagina 16

 
Un'altra domanda: di che tipo è? 803?
 

costruire 803. Il conto è reale 10267.

Deduco che, dato che ci sono così tante domande, sono l'unico con 'mnj?

Fino a 3-4 settimane fa il tester era un po' più corretto in termini di spread, ma in termini di comportamento...

Il problema era il seguente: praticamente ogni candela si formava, diciamo, entro 20 ticks. E poi 50-100 ticks o il prezzo era 10 punti su/giù all'estremo o vicino alla chiusura. E questo ritmo è stato facilmente trovato da un tester che ha ottimizzato lo scalper.

In generale, il tester non è adatto alle strategie scalper/pipsewing.

Capisco la lentezza del tick tester. Ma per lo scambio, a mio parere, non si può fare a meno di esso.

 
dimeon:
Come si fa?

Aprire il grafico. Aprire la finestra Dati. Scorrere il grafico fino al punto desiderato nel tempo. Muovi il mouse sul grafico e vedi i valori di spread nella finestra Data.

L'ho già guardato. Su un gran numero di barre - zero spread. Cioè, i dati sono incompleti. Con un valore di spread pari a zero, viene utilizzato l'ultimo valore non zero.

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Beh, la situazione è diversa nel tester. Il visualizzatore mostra che nella prima metà della giornata lo spread è fuori dal segno, nel pomeriggio è di 20-50 pip in media e nella sessione serale è di nuovo fuori dal segno
 

Lasciate che vi spieghi con delle immagini cosa succede nel tester.

Il tester scarica i dati storici per almeno l'anno precedente prima dell'inizio del test e analizza la diffusione. Se il test inizia con 2013.01.01, allora l'ultimo spread non nullo nel 2012 è stato registrato il 2012.12.10 alle 10:09, ed è stato di 2990 punti


Il prossimo spread non nullo è registrato 2013.03.15 alle 18:49 per un importo di 1190


Tra questi tempi lo spread è 0. Cioè, dal primo gennaio 2013 fino alla sera del 15 marzo, l'ultimo spread conosciuto era 2990 (quello che ho chiamato "l'ultimo valore non zero"). Fino a quando l'ultimo valore non nullo è diventato 1190.

Dopo di che abbiamo di nuovo zero spread, ecco perché abbiamo usato 1190. Questo è stato registrato fino al 2013.03.18 18:46.


dopo altri 3 minuti.


Poi c'erano molti meno zeri che all'inizio dell'anno. Tuttavia, la serie di zeri è rimasta.

Questo spiega la serie di spread identici

La situazione è sgradevole, la risolveremo. Gli spread nel tester saranno adeguati.

 

Gli spreads saranno sistemati, li imposteremo correttamente anche se il broker non ha importato spreads dettagliati nella sua storia.

Questo permetterà di effettuare test normali.

 
stringo:

Lasciate che vi spieghi con delle immagini cosa succede nel tester.

Il tester carica i dati storici per almeno l'anno precedente prima dell'inizio del test e analizza la diffusione. Se il test inizia dal 2013.01.01, allora l'ultimo spread non nullo nel 2012 è stato registrato il 2012.12.10 alle 10:09, ed era di 2990 punti


Il prossimo spread non nullo è registrato 2013.03.15 alle 18:49 per un importo di 1190


Tra questi tempi lo spread è 0. Cioè, dal primo gennaio 2013 fino alla sera del 15 marzo, l'ultimo spread conosciuto è stato 2990 (quello che ho chiamato "l'ultimo valore non zero"). Fino a quando l'ultimo valore non nullo è diventato 1190.

Dopo di che abbiamo di nuovo valori di spread pari a zero, ecco perché abbiamo usato 1190. Questo è stato registrato fino al 2013.03.18 18:46.


dopo altri 3 minuti.


Poi c'erano molti meno zeri che all'inizio dell'anno. Tuttavia, la serie di zeri è rimasta.

Questo spiega la serie di spread identici.

La situazione è sgradevole, la risolveremo. Gli spread nel tester saranno adeguati.

Non ha senso testare i futures dall'inizio dell'anno, perché tutti hanno scambiato quello di marzo.

Sarebbe più ragionevole calcolare lo spread medio con un adeguato arrotondamento.

Inoltre, si prega di ridurre i volumi per il tester. La maggior parte dei tic arriva quando il prezzo non si muove affatto in realtà. Nel tester il prezzo colpisce l'estremo molte volte, il che si riflette in test inadeguati. E il tempo di ottimizzazione è ridotto.

 

1. a) A proposito di futures incollati... non ho capito bene, ma secondo me il tester non funziona con loro (non un solo trade, ho provato a testare gli EA standard che sono nel terminale).

b) In mt5 da bx ci sono già incollati i futures delle principali blue chips, continuate così.

c) Sarebbe bello poter impostare manualmente gli spread nel tester, sarebbe molto più facile ottimizzare le strategie.

 

2. a) Riguardo al feed... non sarebbe male averlo come una tabella di operazioni come in Quicksilver (come uno strumento collegabile e scollegabile, naturalmente), e anche la possibilità di impostare filtri nella tabella come in Quicksilver (per esempio, voglio vedere solo le grandi operazioni con volume da 100 lotti e come sono passati, per bid o per ask)... Ripeto - non sarebbe male, ma non così necessario.

b) Ma aggiungere alla struttura MqlTick ottenuta (SymbolInfoTick(_Symbol,latest_price)) un altro parametro su come l'affare è stato aperto a Bid o Ask - penso che sia necessario, o come una richiesta separata di informazioni di mercato, questa informazione è passata dalla borsa ed è richiesta per molti robot, incluso il mio. Calcolare se una transazione era un acquisto o una vendita non è realistico... perché ci sono transazioni over-the-counter con grandi volumi che non muovono direttamente il mercato e molte altre sfumature... Aggiungere questo parametro alla struttura, penso, non sarà difficile per gli sviluppatori, e porterà un sacco di vantaggi.

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен - Документация по MQL5
 

3. Quando si cerca di piazzare ordini pendenti, un EA si presenta con l'errore "Invalid order expiry date in request". Per esempio, ho fatto un EA che piazza solo ordini pendenti ma non fa altro... In MT5 su forex, piazza ordini pendenti normalmente, ma su FORTS, esce l'errore. La data di scadenza dell'ordine è adeguata - l'ho controllata visualizzandola sullo schermo. Sono l'unico ad avere questo problema? Qual è la ragione? Codice di Expert Advisor qui sotto


#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link      "http://www.mql5.com"

#property version   "1.00"

input int tp=150;

input int Deviation=5;

MqlTradeRequest mrequest; 

MqlTradeResult mresult;   

int OnInit()

  {

   return(0);

  }

void OnDeinit(const int reason)

  {

  }


void OnTick()

  {

   Open_Pending_Order(1,SymbolInfoDouble(_Symbol,SYMBOL_BID)+NormalizeDouble(tp*_Point,_Digits), 1, 111);

   Sleep(500);

  return;

  }

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

void Open_Pending_Order(int type, double prise, double lot, long magic)

  {

   ZeroMemory(mrequest);

   mrequest.action = TRADE_ACTION_PENDING;                               

   mrequest.magic = magic;                                              

   mrequest.symbol = _Symbol;                                            

   mrequest.type_filling = ORDER_FILLING_RETURN;                            

   mrequest.deviation=NormalizeDouble(Deviation*_Point,_Digits);                                                

   mrequest.type_time=ORDER_TIME_SPECIFIED;

   mrequest.expiration=TimeCurrent()+6000;                                    

   mrequest.volume = lot; 

   mrequest.sl = 0;  

   mrequest.tp = 0; 

   mrequest.price = prise;

   Print(" время экспирации ",mrequest.expiration," тип экспирации  ",mrequest.type_time," цена ",mrequest.price);

    if(type==1)

      {                                    

       mrequest.type = ORDER_TYPE_BUY_STOP;                              

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Buy по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order," !!");  

       else Print("Запрос на установку ордера Buy по символу ",_Symbol, " с маджиком ",magic," не выполнен - ответ сервера:" , mresult.retcode," код ошибки " ,GetLastError());

      }

    if(type==2)

      {                                    

       mrequest.type = ORDER_TYPE_SELL_LIMIT;     

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Sell по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order,"!!");

       else Print("Запрос на установку ордера Sell  по символу ",_Symbol, " с маджиком ",magic," не выполнен - код ошибки:" , mresult.retcode,"  " ,GetLastError());                         

      }

   return; 

  }

Dice (ho provato a cambiare il tempo di scadenza):

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) Richiesta di ordine di acquisto da parte di SBRF-6.13 con numero magico 111 fallita - risposta del server: 10022 codice errore 4756

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) Scadenza 2013.04.25 17:00:00 Scadenza Tipo 2 Prezzo 10016.0