Experiências com o MetaTrader 5 no Discovery - página 16

 
Outra questão, qual é a sua construção? 803?
 

construir 803. A conta é real 10267.

Presumo que, como há tantas perguntas, sou o único com 'mnj?

Ainda há 3-4 semanas, o testador era um pouco mais correcto em termos de spreads. Mas em termos de comportamento...

O problema estava no seguinte: praticamente qualquer candelabro foi formado, digamos, dentro de 20 ticks. E depois 50-100 ticks ou o preço era 10 pontos para cima/para baixo no extremo ou perto do fecho. E esta batida foi facilmente encontrada por um testador que optimizou o escalpador.

Em geral, o testador não é adequado para estratégias de escalper/pipsewing.

Compreendo a lentidão do testador de carraças. Mas para a troca, na minha opinião, não se pode passar sem ela.

 
dimeon:
Como faço isto ?

Abrir o gráfico. Abrir a janela de Dados. Percorrer o gráfico até ao ponto requerido no tempo. Mova o rato sobre o gráfico e veja os valores de spread na janela de Dados.

Já dei uma vista de olhos. Num grande número de barras - spread zero. Ou seja, os dados estão incompletos. Com um valor de spread zero, é utilizado o último valor não zero.

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Bem, a situação é diferente no testador. O visualizador mostra que na primeira metade do dia o spread está fora do limite, à tarde é de 20-50 pips em média e à noite está novamente fora do limite
 

Deixem-me explicar com imagens o que acontece no testador.

O testador descarrega dados históricos relativos pelo menos ao ano anterior antes do início dos testes e analisa a dispersão. Se os testes começarem com 2013.01.01, então o último diferencial não zero em 2012 foi registado em 2012.12.10 às 10:09 da manhã, e foi de 2990 pips


O próximo diferencial não-zero é registado em 2013.03.15 às 18:49, no montante de 1190


Entre estes tempos, o spread é 0. Ou seja, de 1 de Janeiro de 2013 até à noite de 15 de Março, o último spread conhecido foi de 2990 (aquilo a que chamei "o último valor não-zero"). Até esse último valor não zero tornou-se 1190.

Depois disso, temos novamente um spread zero, e é por isso que temos vindo a utilizar o 1190. Isto foi registado até 2013.03.18 18:46.


após mais 3 minutos.


Depois havia muito menos zeros do que no início do ano. No entanto, a série de zeros permaneceu.

Isto explica a série de spreads idênticos

A situação é desagradável, nós vamos resolvê-la. Os spreads no provador serão adequados.

 

Os spreads serão ordenados, iremos defini-los correctamente mesmo que o corretor não tenha importado spreads detalhados para a sua história.

Isto permitirá a realização de testes normais.

 
stringo:

Deixem-me explicar com imagens o que acontece no testador.

O testador carrega dados históricos relativos pelo menos ao ano anterior antes do início dos testes e analisa a dispersão. Se os testes começarem a partir de 2013.01.01, então o último diferencial não-zero em 2012 foi registado em 2012.12.10 às 10:09 da manhã, e foi de 2990 pontos


O próximo diferencial não-zero é registado em 2013.03.15 às 18:49, no montante de 1190


Entre estes tempos, o spread é 0. Ou seja, de 1 de Janeiro de 2013 até à noite de 15 de Março, o último spread conhecido foi de 2990 (aquilo a que chamei "o último valor não-zero"). Até esse último valor não zero tornou-se 1190.

Depois disso, temos novamente um spread zero, e é por isso que temos vindo a utilizar o 1190. Isto foi registado até 2013.03.18 18:46.


após mais 3 minutos.


Depois havia muito menos zeros do que no início do ano. No entanto, a série de zeros permaneceu.

Isto explica a série de spreads idênticos.

A situação é desagradável, nós vamos resolvê-la. Os spreads no provador serão adequados.

Não vale a pena testar os futuros desde o início do ano, porque toda a gente já trocou o de Março.

Seria mais razoável calcular o spread médio com arredondamentos adequados.

Por favor, reduza também os volumes para o testador. A maioria das carraças vem quando o preço não se mexe de todo na realidade. No testador, o preço atinge o extremo muitas-muitas vezes, o que se reflecte em testes inadequados. E o tempo de optimização é reduzido.

 

1. a) Acerca de futuros colados... não entendidos realmente, mas na minha opinião o testador não trabalha com eles (nem uma única transacção, tentei testar EAs padrão que estão no terminal).

b) Em mt5 de bx já existem futuros colados de grandes fichas azuis, não fiquem para trás.

c) Seria óptimo ser capaz de definir spreads manualmente no testador, seria muito mais fácil optimizar estratégias.

 

2. a) Sobre a alimentação... não faria mal tê-la como uma tabela de ofertas como no Quicksilver (como uma ferramenta plugável e desconectável, claro), e também a capacidade de colocar filtros na tabela como no Quicksilver (por exemplo, quero ver apenas grandes ofertas de 100 lotes e como passaram, por lance ou por pedido)... Repito - não faria mal, mas não tão necessário.

b) Mas para adicionar à estrutura MqlTick obtida (SymbolInfoTick(_Symbol,latest_price)) outro parâmetro sobre como o negócio foi aberto em Bid or Ask - penso que é necessário, ou como um pedido separado de informação de mercado, esta informação é passada por troca e é necessária para muitos robôs, incluindo o meu. Calcular se um negócio foi uma compra ou venda não é realista... porque há negócios de balcão com grandes volumes que não movem o mercado directamente e muitas outras nuances... A adição deste parâmetro à estrutura, penso eu, não será difícil para os criadores, e trará muitos benefícios.

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

3. Ao tentar colocar encomendas pendentes, uma EA apresenta um erro "Data de expiração da encomenda inválida no pedido". Por exemplo, fiz uma EA que só coloca ordens pendentes mas não faz mais nada... Em MT5 no forex, coloca ordens pendentes normalmente, mas em FORTS, o erro aparece. A data de expiração da ordem é adequada - verifiquei-a ao exibi-la no ecrã. Serei eu o único com tal problema? Qual é a razão? Código de conselheiro especializado abaixo


#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; 

  }

Diz (tentei alterar o tempo de expiração) :

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) Pedido de colocação de encomenda por SBRF-6.13 com número mágico 111 falhou - resposta do servidor: 10022 código de erro 4756

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) Prazo de validade 2013.04.25 17:00:00 Prazo de validade Tipo 2 Preço 10016.0

Razão: