Erros, bugs, perguntas - página 355

 
É sempre o mesmo para os agentes que no computador principal?
 
dimonsky:
Os agentes têm sempre a mesma história que o computador mestre?
A ideia é sim, mas há problemas com a sincronização da história e algumas outras coisas.
 

Ainda não li o fio todo, por isso, por favor desculpem-me se isto já aconteceu.

1. será possível escolher uma hora (a não confundir com uma data) para iniciar e parar os testes.

2. Como no testador ver as transacções noutros pares, excepto em configurações (para multimoedas - para um instrumento - "gráfico aberto" nos resultados do teste, e para outros).

 
Retsam:

Ainda não li o fio todo, por isso, por favor desculpem-me se isto já aconteceu.

1. será possível escolher uma hora (a não confundir com uma data) para iniciar e parar os testes.

2. Como no testador ver as ofertas noutros pares, excepto em configurações (para multimoedas - para um instrumento - "gráfico aberto" nos resultados dos testes, e para outros).

1 Não existe tal característica - a menos que peça para o fazer.

2 Também não existe tal coisa,

 

Boa tarde!

MT 5.425 Janelas 7 x64

Inicio o indicador numa subjanela (subjanela 1), ponho lá um gráfico usando um buffer. Quero obter o preço mínimo e máximo da janela com ChartGetDouble(0,CHART_PRICE_MAX,1) e ChartGetDouble(0,CHART_PRICE_MIN,1), respectivamente.

A saída é 0, o mínimo e o máximo da janela principal é mostrado correctamente (ChartGetDouble(0,CHART_PRICE_MAX) ChartGetDouble(0,CHART_PRICE_MIN)). ChartRedraw(0) não funciona. Se o gráfico começar a rolar com o rato, os valores morrerão - começa a exibir-se correctamente.

Isto acontece quando o inicio pela primeira vez, ou quando altero valores nas propriedades do indicador.

Talvez seja um erro, ou talvez eu esteja a fazer algo de errado.

Qual é o significado desta entrada no ficheiro de ajuda?

CHART_PRICE_MINModificador de r/o mínimo gráficoduplo - número da subjanela

CHART_PRICE_MAX Máximo do gráficoduplo modificador r/o - número dasubjanela

Obrigado!

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Todas as janelas dos gráficos são numeradas a partir de zero. 0 - janela do gráfico principal, 1 - janela do primeiro indicador, que é mostrada numa janela separada. E assim por diante.
 

Não consigo perceber o que está errado:

se os parâmetros de dois indicadores forem os mesmos, então a EA abre apenas uma Buy, mas se os parâmetros forem diferentes, então não é clara a forma como fecha a posição......

Em teoria, deveria fechar os negócios pelo segundo indicador, mas não é assim. O próprio código:

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
MqlRates mrate[];

input int TriX_PARAM=14;
input int TriX_PARAM_Close=50;

double TriX[];
double TriX_Close[];
int TriXHandle;
int TriXHandle_Close;

int OnInit()
  {

   TriXHandle=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM,PRICE_WEIGHTED);
   TriXHandle_Close=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM_Close,PRICE_WEIGHTED);
   return(0);
  }

void OnTick()
  {
   CTrade mytrade;
   CPositionInfo myposition;
   CSymbolInfo mysymbol;
   COrderInfo myorder;

   bool Sell_opened,Buy_opened;
   if(myposition.Select(_Symbol)==true) { if(myposition.Type()==POSITION_TYPE_BUY) Buy_opened=true;  if(myposition.Type()==POSITION_TYPE_SELL) Sell_opened=true;}

//Закрываем позицию
   if(Buy_opened==true || Sell_opened==true)
     {
      ArraySetAsSeries(TriX_Close,true);
      CopyBuffer(TriXHandle_Close,0,0,4,TriX_Close);

      if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);

     }

//Открываем позицию
   if(Buy_opened==false && Sell_opened==false)
     {
      ArraySetAsSeries(TriX,true);
      CopyBuffer(TriXHandle,0,0,4,TriX);
      
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

     }
  }
 
Posso fazê-lo para que o terminal não seja actualizado durante a optimização?
 
Jager:
É possível evitar a actualização do terminal durante a optimização?

Portanto, se o terminal estiver a funcionar e não tiver sido actualizado durante 5-10 minutos,

Não será actualizada e mesmo que o seja, as novas configurações não serão guardadas.

Antes de reiniciar o terminal, pode, evidentemente, desligar a Internet

 
Mr.FreeMan:

Não consigo perceber o que está errado:

se dois indicadores têm os mesmos parâmetros, então a EA abre apenas Comprar, e se os parâmetros são diferentes, então não é claro como fecha as posições......

Em teoria, deveria fechar os negócios pelo segundo indicador, mas não é assim. O próprio código:

O próprio código: No início, é necessário marcar as arrays de forma diferente.

é melhor). mudá-lo:

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,4,TriX);

sobre estas linhas

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,3,TriX);

Mudar também

 if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

a isto.

 if(Sell_opened=true && TriX_Close[0]>TriX_Close[1] && TriX_Close[1]<TriX_Close[2]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[0]<TriX_Close[1] && TriX_Close[1]>TriX_Close[2]) mytrade.PositionClose(_Symbol);
      if(TriX[0]>TriX[1] && TriX[1]<TriX[2]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[0]<TriX[1] && TriX[1]>TriX[2]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);