Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 197

 
Aleksandr Verkhozin:


He visto el video sobre el trabajo con el indicador externo, escribió un poco de código para ver los valores de los búferes en el probador:

void OnTick()

{

double Buf1=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",0,1);

double Buf2=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",1,1);

double Buf3=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",2,1);

double Buf4=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",3,1);

Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);

}

Las zonas aparecen y desaparecen en el modo de visualización. Pero el valor de los búferes es siempre cero de todos modos. ¿No hay forma de formalizar estas zonas en el código?

¿Tal vez haya una función, distinta de iCustom, que sea adecuada para estos indicadores? ¿Tal vez, alguien ha escrito búhos con tales indicadores?


No hay manera de utilizar los búferes de los indicadores, que almacenan valores fractales.

En las propiedades del indicador fractals_show = true; los verás en el gráfico

Zonas, objeto gráfico OBJ_RECTANGLE

Puede obtener el valor de esas zonas utilizando


ObjectGet

Devuelve el valor de una propiedad del objeto especificado.

dobleObjectGet(
stringnombre_objeto,// nombre del objeto
intindex// identificador de la propiedad
);


Se hace un bucle con todos los objetos, se encuentra el correcto y se encuentra el camino.

 int obj_total=ObjectsTotal(); 
  string name; 
  for(int i=0;i<obj_total;i++) 
    { 
     name = ObjectName(i);
     Print(i," - объект ",name); 
    }

Aproximadamente, tiene el siguiente aspecto

 
Artyom Trishkin:
Sabes, justo en este hilo publiqué una plantilla para una red de arrastre que utiliza el valor del indicador que se le envía en sus cálculos. Búscalo, no seas perezoso.

Necesito un trailing stop correcto en las posiciones abiertas. Al final son 1 o 3 y están unidas por el valor del paso que es un sistema de stop/reverse. De ahí la complejidad. O tal vez sea más fácil hacer un seguimiento de todas las órdenes utilizando la función CalculateProfit(). Ahora no puedo entender cómo el valor del indicador en este esquema de manejo de órdenes puede estar relacionado con el seguimiento del beneficio total de las posiciones abiertas.
 
geratdc:

Necesito exactamente el trailing stop correcto sobre el beneficio de las posiciones abiertas. Al final son 1 o 3 y están limitados por el valor del Paso, es decir, es un sistema de stop y reversión. De ahí la complejidad. O tal vez sea más fácil hacer un seguimiento de todas las órdenes utilizando la función CalculateProfit(). Ahora no puedo entender cómo el valor del indicador en este esquema de manejo de órdenes puede estar relacionado con el seguimiento del beneficio total de las posiciones abiertas.

El indicador, su valor, puede ser un valor distinto de, por ejemplo, el MAK de la barra deseada. El valor del precio calculado para mover el stop total de posiciones puede ser enviado al arrastre.

Sin embargo, no está claro qué tipo de red de arrastre tiene en las posiciones abiertas: qué y cuándo exactamente arrastra.

 
geratdc: Estoy buscando el arrastre correcto para obtener beneficios

Todas las pistas están aquí. Del archivo TrailingFuncLib.mq4 tomo la función TrailingStairs - STANDARD-STANDARD Trailing. Cada pedido se rastrea de forma independiente.

 
Artyom Trishkin:

El indicador, su valor, puede ser un valor distinto de, por ejemplo, el MAK de la barra deseada. El valor del precio calculado para mover el stop total de posiciones puede ser enviado al arrastre.

Sin embargo, no está claro qué tipo de red de arrastre tiene en las posiciones abiertas: qué y cuándo exactamente arrastra.


En principio, sí, una vez me ofrecieron un arrastre por precio medio. Todo parece lógico, pero ¿qué significa el precio medio? ¿Es (precio de 1 orden + Paso*Punto + (precio de 2 órdenes + Paso*Punto) + precio de 3 órdenes) / 3? Por lo tanto, se trata de un montón de parámetros - usted tiene que llamar a las posiciones abiertas y el precio actual de cada posición. De todos modos, este trailing stop me molesta menos que el hecho de que el EA pierda valor durante las pruebas. ¿Qué ocurrirá en el comercio real? Se puede establecer, pero de nuevo no sabemos qué giro tomará el gráfico de divisas en una semana o un mes, por lo que hay una debilidad - si se abren 3 órdenes y hay un movimiento contrario en el mercado, el Asesor Experto fallará debido a la reducción. Por lo tanto, hay que pensar en limitar el drawdown y cerrar las posiciones antes de que el depósito se ponga a cero. Para abreviar, lo que más me interesa es Fox)))
 

No lo consigo averiguar y tampoco he encontrado información específica(( La idea es marcar las fronteras de los precios en el código, las zonas más cercanas construidas por el indicador. Empecé a escribir el código, pero estoy confundido y no sé si lo estoy haciendo bien o no. No sé si lo estoy haciendo bien o mal.

 int obj_total=ObjectsTotal();       

  string name; 

  for(int i=0;i<obj_total;i++)

  {

  name = ObjectName(i); 

  if(ObjectType(name)==OBJ_RECTANGLE)

  {

    pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны

    pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны

  }  

  }  

¿Y por qué mi código no se inserta aquí, como en el original, a multicolor y líneas al lado de la otra?
Archivos adjuntos:
 
-Aleks-:

Lo resolví - aparentemente el terminal no tenía suficiente memoria - cerré un par de gráficos y funcionó.

Gracias - efectivamente, los cálculos tienen lugar.

Y si las variables no son de tipo int, sino bool, ¿qué hacer?


//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=162;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for (int n=0;n<N;n++)
   {
      int tmp=n;
      int a=(int) MathMod(tmp,3);
      tmp=(tmp-a)/3;
      int b=(int) MathMod(tmp,3);
      tmp=(tmp-b)/3;
      bool c= (bool) MathMod(tmp,2);
      tmp=(tmp-c)/2;
      int d=tmp;
   
      Print("N=",n,"; A=", 2+2*a, "; B=", b+1,"; C=",c,"; D=", 16+4*d);
   }
  }
//+------------------------------------------------------------------+
 
Victor Nikolaev:

Lo siento, pero ¿este código es diferente del anterior?
 
-Aleks-:

Disculpe, pero ¿este código es diferente del anterior?


Las diferencias son mínimas. Una de las variables es lógica.

La salida dirá verdadero o falso

 
Victor Nikolaev:


Las diferencias son mínimas. Una de las variables es lógica.

La salida dirá verdadero o falso

¿Seguro que has mirado el último código que has publicado? Si es así, necesito un descanso... Gracias.