Errores, fallos, preguntas - página 355

 
¿Es siempre lo mismo para los agentes que en el ordenador principal?
 
dimonsky:
¿Los agentes tienen siempre la misma historia que el ordenador principal?
La idea es que sí, pero hay problemas con la sincronización del historial y algunas otras cosas.
 

No he leído todo el hilo, así que disculpadme si esto ya ha ocurrido.

1. ¿se podrá elegir una hora (que no debe confundirse con una fecha) para iniciar y detener las pruebas?

2. Cómo en el probador para ver las operaciones en otros pares, excepto establecido en la configuración (para multidivisas - para un instrumento - "gráfico abierto" en los resultados de la prueba, y para los demás).

 
Retsam:

No he leído todo el hilo, así que disculpadme si esto ya ha ocurrido.

1. ¿se podrá elegir una hora (que no debe confundirse con una fecha) para iniciar y detener las pruebas?

2. Cómo en el probador para ver las ofertas en otros pares, excepto establecido en la configuración (para multidivisas - para un instrumento - "gráfico abierto" en los resultados de la prueba, y para los demás).

1 No existe tal característica - a menos que usted lo pida.

2 Tampoco existe tal cosa,

 

¡Buenas tardes!

MT 5.425 Windows 7 x64

Inicio el indicador en una subventana (subventana 1), pongo un gráfico allí usando un buffer. Quiero obtener el precio mínimo y máximo de la ventana con ChartGetDouble(0,CH ART_PRICE_MAX,1) y ChartGetDouble(0,CHART_PRICE_MIN,1), respectivamente.

La salida es 0, el mínimo y el máximo de la ventana principal se muestran correctamente (ChartGetDouble(0,CHART_PRICE_MAX) ChartGetDouble(0,CHART_PRICE_MIN)). ChartRedraw(0) no funciona. Si el gráfico comienza a desplazarse con el ratón, los valores morirán - comienza a mostrarse correctamente.

Esto sucede cuando lo inicio por primera vez, o cuando cambio los valores en las propiedades del indicador.

Quizá sea un error, o quizá esté haciendo algo mal.

¿Qué significa esta entrada en el archivo de ayuda?

CHART_PRICE_MINModificador de doble r/o del gráfico mínimo- número de subventana

CHART_PRICE_MAX Máximo del gráficomodificador doble r/o - número desubventana

Gracias.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Todas las ventanas de la carta están numeradas desde cero. 0 - ventana del gráfico principal, 1 - ventana del primer indicador, que se muestra en una ventana separada. Y así sucesivamente.
 

No puedo entender qué es lo que está mal:

si los parámetros de dos indicadores son los mismos, entonces el EA sólo abre una compra, pero si los parámetros son diferentes, entonces no está claro cómo cierra la posición......

En teoría, debería cerrar las operaciones con el segundo indicador, pero no es así. El propio 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);

     }
  }
 
¿Puedo hacer que el terminal no se actualice durante la optimización?
 
Jager:
¿Es posible evitar la actualización del terminal durante la optimización?

Así que si el terminal está funcionando y no se ha actualizado durante 5-10 minutos,

No se actualizará y, aunque lo haga, no se guardarán los nuevos ajustes.

Antes de reiniciar el terminal, puede, por supuesto, apagar Internet

 
Mr.FreeMan:

No puedo averiguar qué es lo que está mal:

si dos indicadores tienen los mismos parámetros, entonces el EA abre sólo la compra, y si los parámetros son diferentes, entonces no está claro cómo se cierra posiciones......

En teoría, debería cerrar las operaciones con el segundo indicador, pero no es así. El propio código:

El código en sí: Al principio, hay que marcar las matrices de forma diferente.

es mejor). cámbialo:

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

en estas líneas

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

También cambiar

 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 esto.

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