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

 
#property indicador_separar_ventana
#property indicator_buffers 1
#property indicator_color1 blue
//--------------------------------------------------------------------
doble Buffer[];
//--------------------------------------------------------------------
int init()
{
SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY,2);
SetIndexBuffer(0,Buffer;)
return(0);
}
// -------------------------------------------------------------------
int deinit()
{
return(0);
}
//--------------------------------------------------------------------
int inicio()
{
int StartBar = Bars - IndicatorCounted() - 1;
for(int i = StartBar; i >= 0; i--)
Buffer[i] =(iClose("EURGBP",0,i)-iOpen("EURGBP",0,i))/MarketInfo("EURGBP",MODE_POINT)+
(iClose("EURAUD",0,i)-iOpen("EURAUD",0,i))/MarketInfo("EURAUD",MODE_POINT);
return(0);
}

//---------------------------------------------------------------------

Lo siento, no sé cómo formatear el texto con el código .

Este es un simple indicador de contador ( suma de los cuerpos de los instrumentos en pips en el marco de tiempo actual ) instrumentos cualquier . Cada barra del histograma comienza con "O" y termina en el cierre del marco temporal. Por ejemplo el timeframe actual es H1, a las 12.00 muestra "0" y a las 13.00 muestra "+20" y el gráfico de barras lee claramente = +20. Pero durante esta hora las lecturas fueron -50 y +60, pero el indicador no las muestra, deberíamos añadir un buffer para el Buffer[i] bajo y otro para el Buffer[i] alto. No podemos usar el Alto y el Bajo porque estos valores vienen en momentos diferentes para cada símbolo escrito en el indicador. Quiero que el segundo buffer fije el valor máximo del Buffer[i] del gráfico menor (M5) en el gráfico actual (H1), y el tercer buffer fije el valor mínimo del Buffer[i] del gráfico menor (M5) en el gráfico actual (H1). Querido, ¿quién puede aconsejar qué?

 
vitek2010:

Losiento, no sé cómo codificar el texto.

No podemos utilizar el Alto y el Bajo porque estos valores se dan en momentos diferentes para cada instrumento especificado en el indicador.

¿Y el cierre de cada instrumento se produce al mismo tiempo, durante la vida de la vela? Así que es una opinión equivocada, las garrapatas vienen todas en diferentes momentos)))

 
trader781:
La cuestión es que SIEMPRE habrá órdenes perdedoras con algún lote que también tendrán que ser cubiertas por el resto de órdenes. El desencadenante es la hora de cierre. Si cerramos incluso uno, toda la cadena se perderá. Por lo tanto, la cuestión es cómo rastrear el precio medio de todos los seleccionados.

Por lo tanto, tenemos que recorrer todas las órdenes "necesarias" en el bucle y calcular este precio medio. Entonces, cuando el precio actual se desvía del precio medio calculado en la dirección deseada, debemos cargar el bucle de nuevo con la modificación de todas las órdenes.

Si no queremos leer el precio medio en cada tick, podemos leerlo sólo al añadir otra orden.

 
Alexey Viktorov:

Por lo tanto, tenemos que recorrer todas las órdenes "necesarias" en el bucle y calcular este precio medio. Entonces, cuando el precio actual se desvía del precio medio calculado en la dirección deseada, debemos cargar el bucle de nuevo con la modificación de todas las órdenes.

Si no queremos leer el precio medio en cada tick, se puede leer sólo cuando se añade otra orden.

Si no te importa, explícame cómo debo calcular el precio medio cuando la parrilla de pedidos está distribuida de forma desigual (cuando OrderType()<2). Eso es todo.
 
Vitalie Postolache:

¿Y el cierre de cada instrumento se produce al mismo tiempo, durante la vida de la vela? No hablo de ticks, hablo de fijar las lecturas mínimas y máximas del buffer del indicador).

No me refiero a los ticks Decía que hay que fijar las lecturas mínimas y máximas del buffer del indicador calculadas en un marco temporal más pequeño, en el hueco de un marco temporal más grande intentaré mostrarlo en la captura de pantalla En este caso el marco temporal más pequeño es H1 (pero tiene diferentes marcos temporales):

[img]https://charts.mql5.com/13/642/eurgbp-w1-instaforex-group.png[/img]

Consideraré la semana 05.12 (retículo rojo) este gráfico de barras del indicador mostrado arriba muestra claramente que el movimiento total del par al final de la semana fue descendente en 95 puntos, pero no muestra cuántos puntos fueron descendentes o ascendentes durante la semana.

Y aquí en esta pantalla se puede ver la dinámica de este indicador en el gráfico H1 durante esta semana:

[img]https://charts.mql5.com/13/642/eurgbp-h1-instaforex-group.png[/img]

Veo que el indicador tenía un valor mínimo de 400 y después subió a 700 y cerró en 160 (la diferencia de números en dos pantallas no es importante)

necesito todos estos valores en un indicador en una barra del histograma y el mínimo, el máximo y el cierre (en este caso en la wiki). idealmente en el marco temporal actual del que se especifica en la configuración del marco temporal

lo hice con mt4 insta copiando de la web de mcl5

 
trader781:
Si no es difícil, explique cómo puedo calcular el precio medio cuando la parrilla de pedidos está distribuida de forma desigual (donde OrderType()<2). Eso es todo.

Espero que puedas resolverlo.

for(int i=0; i<OrdersTotal(); i++) {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) {
    if(OrderType()==OP_BUY) {
      _BuyProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _BuyLot+=OrderLots(); //совокупный лот по всем Sell
    }
    if(OrderType()==OP_SELL) {
      _SellProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _SellLot+=OrderLots(); //совокупный лот по всем Sell
    }
}}}

double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);

if(_BuyLot  > 0) { BuyAwerage = NormalizeDouble(Bid-(_BuyProfit/(TickValue*_BuyLot))*_Point,_Digits); } else { BuyAwerage=0; }// безубыток buy
if(_SellLot > 0) { SellAwerage= NormalizeDouble(Ask+(_SellProfit/(TickValue*_SellLot))*_Point,_Digits); } else { SellAwerage=0; } // безубыток sell
if(_BuyLot-_SellLot! = 0) { AllAwerage= NormalizeDouble(((_BuyLot>_SellLot)?Bid:Ask)-((_BuyProfit+_SellProfit)/(TickValue*(_BuyLot-_SellLot))*_Point),_Digits); } else { AllAwerage=0; } // общий безубыток
 
Vitaly Muzichenko:

Espero que le cojas el tranquillo.



double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);


¿Podemos hablar un poco de esto? No entiendo el sentido de este código.
 
trader781:
¿Podemos hablar un poco de esto?

El importe de la variación mínima del precio de un instrumento en la moneda del depósito

El valor del pip es diferente para cada instrumento y no es igual a "1" como, por ejemplo, EUR/USD.

 
Vitaly Muzichenko:

El importe de la variación mínima del precio de un instrumento en la moneda del depósito

El valor del pip es diferente para cada instrumento y no es igual a "1" como, por ejemplo, EUR/USD.

Sí, ahora veo

resulta que también se puede establecer un tope flotante por ejemplo (eqi=balance*1.1) o (eqi=balance*0.9)

¿existen estas herramientas?

 
trader781:

Sí, ya lo tengo.

pero resulta que también se puede poner un tope flotante por ejemplo (eqi=balance*1.1) o (eqi=balance*0.9)

¿existen estas herramientas?

Usted ya tiene un precio específico a partir del cual sólo necesita hacer un arrastre utilizando el análogo de un arrastre simple, pero un arrastre simple se basa en el precio de apertura de la posición = OrderOpenPrice() , mientras que aquí se basa en el precio medio calculado y modifica todas las posiciones en un nivel
Razón de la queja: