[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 40

 
Lo diré como codificador que escribe principalmente por encargo: un par de docenas de líneas de código "extra" (cuando entiendes lo que has escrito allí y estás seguro de ello), nunca es redundante, al menos en términos de fiabilidad del sistema en su conjunto, y respectivamente menor número de devoluciones y problemas de comunicación con el cliente.
 
FAQ:
Voy a decir como codificador, sobre todo a medida: un par de docenas de líneas de código "extra" (cuando entiendes lo que has escrito allí y estás seguro de ello) nunca es redundante, al menos en términos de fiabilidad del sistema en su conjunto, y en consecuencia menos devoluciones de llamada y problemas en el trato con el cliente.

Ya veo. Gracias. Ya he realizado los cambios.

Pero de todos modos, me ha resultado interesante que resulte que la apertura también se puede hacer con un volumen "descuidado"... no es como debería ser, pero el hecho es...

 
sergeev:

El FAQ lo dice bien. No se puede confiar en los "valores por defecto". Porque recuerdo que el error 131 (lote erróneo) aparecía a menudo, si no se hacía una normalización antes de enviar un pedido.
Tal vez ahora los MMO hayan hecho su propia comprobación de lotes por defecto en los servidores al enviar una orden para su ejecución.

Por lo tanto, siempre debe hacer su propia normalización de precios y lotes antes de enviar.

Estas son las reglas de una buena codificación para usted, y la promesa de menos problemas en el futuro.

Entendido, gracias.

"Ya que recuerdo que a menudo aparecían 131 errores (lote erróneo) si no hacía ninguna normalización antes de enviar el pedido" - ahora no es el caso.

Yo mismo me aseguré accidentalmente de ello cuando "olvidé" activar la función de normalización de lotes.

 
Roman.:

Ya veo. Gracias. Ya he hecho los cambios.

Pero aún así me pareció interesante que se pueda abrir con un volumen "descuidado"... no es como debería ser, pero el hecho es...


Antes de la introducción de los cinco dígitos, nadie se planteaba la cuestión de la normalización: todo funcionaba tal cual.
 
¡Buenas tardes a todos!
La pregunta es la siguiente, la primera vez que se inicia el indicador se muestra
por el alfabra-cadabra (pic.1). Después de seguir desplazándose por el historial todo es normal (fig.2).

¿Puede decirme cuál es el problema? Abajo si necesitas el código.

#property indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Tomato
#property  indicator_color2  Red
#property  indicator_color3  Blue
#property indicator_level1 0
#property indicator_levelcolor Gray
#property indicator_levelstyle 2

extern int Period_MA = 5;
extern int MA_Line1 = 13;
extern int MA_Line2 = 34;
 
double Brs[],BrsMA1[],BrsMA2[],MathArr[],MathArr1;
int i=0,j=0;
double hvostUp,hvostDn,rast,S;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,Brs);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(1,BrsMA1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(2,BrsMA2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexLabel(0,"Bars_");
   SetIndexLabel(1,"Bars_MA1");
   SetIndexLabel(2,"Bars_MA2");
     
   ArrayResize(MathArr,Period_MA);
   
 //---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Bars_MA");

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit(){return(0);}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int start() {  

int ncount=IndicatorCounted();
int limit=Bars-ncount-1;

for (int i=0; i<limit; i++)
{

if (High[i+2]>High[i+1] && Low[i+2]>Low[i+1])
{
hvostUp=(High[i+2]-High[i+1])/Point;
hvostDn=(Low[i+2]-Low[i+1])/Point;
rast=(High[i+2]-Low[i+1])/Point;
S=rast-hvostUp-hvostDn;
}

if (High[i+2]<High[i+1] && Low[i+2]<Low[i+1])
{
hvostUp=(MathAbs(High[i+2]-High[i+1]))/Point;
hvostDn=(MathAbs(Low[i+2]-Low[i+1]))/Point;
rast=(High[i+1]-Low[i+2])/Point;
S=rast-hvostUp-hvostDn;
}

if (High[i+2]>=High[i+1] && Low[i+2]<=Low[i+1])
{
S=(High[i+1]-Low[i+1])/Point;
rast=(High[i+2]-Low[i+2])/Point;
}

if (High[i+2]<=High[i+1] && Low[i+2]>=Low[i+1])
{
S=(High[i+2]-Low[i+2])/Point;
rast=(High[i+1]-Low[i+1])/Point;
}

if (High[i+2]<=Low[i+1] || Low[i+2]>=High[i+1])
{
S=0;
rast=1;
}

if(j>=Period_MA-1)j=0;
j++;
 MathArr[j]=(S/rast*100);
 
Brs[i]=iMAOnArray(MathArr,0,Period_MA,0,0,0);
BrsMA1[i]=iMAOnArray(Brs,0,MA_Line1,0,0,0);
BrsMA2[i]=iMAOnArray(Brs,0,MA_Line2,0,0,0);
}   
  return(0);
}

Figura 1

Figura 2

Archivos adjuntos:
bars_ma_1.mq4  4 kb
 
Estaría bien automatizar este proceso, es decir, hacer este trabajo de antemano en lugar de esperar a que se dispare el beneficio. He mirado todos los scripts publicados, he encontrado uno similar, pero dicen que no funciona. Es por claridad. O hagamos una función que cuando un TP o SL se dispara, el script abre todas las órdenes recién cerradas, sólo en forma pendiente. Muchos comerciantes saben lo que van a hacer en una determinada situación y es muy conveniente hacerlo antes de que la situación se produzca.
 
sting-igor:
Estaría bien automatizar este proceso, es decir, hacer este trabajo de antemano en lugar de esperar a que se dispare el beneficio. He mirado todos los scripts publicados, he encontrado uno similar, pero dicen que no funciona. Es por claridad. O hagamos una función que cuando un TP o SL se dispara, el script abre todas las órdenes recién cerradas, sólo en forma pendiente. Muchos comerciantes saben lo que van a hacer en una determinada situación y es muy conveniente hacerlo antes de que la situación se produzca.

Estás en el lugar correcto :Trabajo
 
Fox_RM:
¡Buenas tardes a todos!
La pregunta es la siguiente, la primera vez que se inicia el indicador se muestra
por alfabra-cadabra (fig.1). Después de seguir desplazándose por el historial todo es normal (fig.2).

¿Puede decirme cuál es el problema? Abajo si necesitas el código.

Figura 1

Figura 2


Lamento que la pregunta se haya formulado por segunda vez.

Compare su variante con esto

Sigue sin funcionar correctamente, pero es mejor

Editado el indicador de nuevo

Archivos adjuntos:
 
FAQ:

Se va por aquí:Trabajo
¿Nadie tiene uno?
 
sting-igor:
¿Nadie tiene uno?


Base de código Dig

Si no encuentra uno, pídalo.