Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 59

 
Vitalie Postolache:
São as citações, elas são de má qualidade.

O Expert Advisor padrão vai bem com eles. E em uma conta demo, a negociação também não funciona. Meus negócios não se abrem. Embora eles devam.

 
Michail_David:

O examinador padrão está de acordo com eles

Compare o Expert Advisor padrão e seu Expert Advisor, encontre diferenças e tire conclusões. Mas o texto do erro indica citações de má qualidade, quando os valores de uma TF não coincidem com os valores da outra TF.

Se este código for escrito para negociação no modo " somente preços abertos", então este problema pode ser evitado.

Adicionado. Você está exatamente tentando fazer um código por preços abertos, não está claro porque ele deve ser testado por todos os carrapatos...
 
Vitalie Postolache:
Compare o padrão e o seu próprio, encontre as diferenças e tire conclusões. Você pode fugir de tal infortúnio se o código for escrito para negociação no modo " somente preços abertos".
O padrão também usa preços de fechamento, assim como o meu
 
Michail_David:
O código padrão também usa preços de fechamento, como o meu

Qual EA você chama de padrão? Não vi um EA "apreços próximos" na entrega do terminal.

E por preços abertos, você deve ou ter todo o código comercial funcionando neste modo, ou não fazê-lo de forma alguma. Apenas parte do código é usada em uma nova barra, o resto funcionará em cada carrapato.

 
Vitalie Postolache:

Qual EA você chama de padrão? Não vi um EA "apreços próximos" na entrega do terminal.

E por preços abertos, ou você precisa fazer todo o código comercial funcionar nesse modo, ou não o fazer de forma alguma. Você tem apenas parte do código usado em uma nova barra, o resto funcionará em cada carrapato.

A amostra MACD é chamada de padrão. Seria melhor mudar a busca por uma nova barra para o início?
 
Michail_David:
Eu o chamaria como amostra MACD padrão. É melhor mudar a busca por uma nova barra para o início?

Onde em MACD Amostra é o modo "somente preços abertos", não vejo? É melhor mover a busca por uma nova barra para o início do OnTick().

E é

static datetime New_Time=TimeCurrent();// Время текущего бара

melhor para ser declarado fora da função, em nível global.

Ou melhor ainda, passe algum tempo e procure por melhores maneiras de procurar uma nova barra no fórum.
 
Vitalie Postolache:

Onde em MACD Amostra é o modo "somente preços abertos", não vejo? Seria melhor mover a busca de uma nova barra para o início do OnTick().

И

static datetime New_Time=TimeCurrent();// Время текущего бара

é melhor declará-lo fora da função, em nível global.

Eu devo ter entendido mal o modo"somente preços abertos" pelo Consultor Especialista padrão. Peço desculpas por isso. Estou apenas começando a entendê-lo. Obrigado pelas dicas. Você pode ver o código inteiro? Pode haver mais alguns comentários. Eu realmente preciso de um novo conjunto de olhos. Eu realmente apreciaria isso.
 
Michail_David:
Pessoal, uma dica. TestGenerator dá erro: 2017.02.08 18:24:43.751 TestGenerator: erro de dados incomparável (valor baixo 1.09860 em 2016.07.27 19:30 não é alcançado a partir do menor período de tempo, preço baixo 1.09880 desajustes)
O que isso significa e como pode ser corrigido? O que eu fiz de errado?
double Margin_Percent=AccountFreeMargin()*Percent/100; //Используемые средства для открытия ордеров
double Lots=Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED);//Определение общего количества лотов
double Lots_Volume=(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP));
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,1); //Параметры MACD основной линии текущего бара
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,2);//Параметры MACD основной линии предыдущего бара
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,3);//Параметры MACD основной линии со смещением на 2 бара
double StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,0);//Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
//------
  }
//-------------------------------------------------------------------------------------------------------
Esta é a primeira vez que eu vejo cálculos variáveis feitos globalmente fora das funções geradoras de eventos e o compilador nem sequer jura? Maldição, o compilador não entendeu errado.
 
Sergey Gritsay:
Esta é a primeira vez que vejo cálculos variáveis feitos globalmente fora das funções geradoras de eventos, e o compilador nem sequer reclama?
Não. Ele aceita tudo como está.
 
Michail_David:
Não. Ele aceita tudo como está.
colocar tudo o que eu realcei na função OnTick()
Razão: