[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 537

 
chief2000:

He aquí una pregunta.
¿Puedo saber por el código de un indicador personalizado si la ventana en la que se está ejecutando está activa o no?
Por ejemplo, el mismo indicador se ejecuta en dos ventanas - usted quiere que funcione sólo en la ventana cuyo gráfico está activo y que esté inactivo en la segunda ventana.

Gracias.

Una vez más la biblioteca ayuda :-)
 
Zhunko:
De nuevo la biblioteca ayuda :-)
Gracias.
 
Buenas noches!!! he iniciado un rollover rápido del robot aquí, e incluso de repente sin errores procamped, y he aquí que de repente abre dos órdenes a la vez!!! Es decir, una orden por vez, en el primer y segundo tic. Aquí está el código, lo pegaré a continuación. La variable BUY es el número de órdenes de compra que ya se han abierto y si es superior a cero, aunque exista una orden, no debe abrirse.
//+------------------------------------------------------------------+
//|                                                        антиб.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double volume=0.01;extern double stoploss=12,takeprofit=12;extern int magic=50001,I=5;
int ticket;double volumee ; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   volumee=volume;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
        
int start()
  {   int BUY;
  
//----

 for( int i=OrdersHistoryTotal() -1;i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if (OrderMagicNumber( )== magic) { if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {   if ((OrderProfit( )-3*Point) <  OrderTakeProfit( ) && (OrderProfit( )+3*Point) >  OrderTakeProfit( ) ) { if( OrderTicket( ) == ticket ) {
               volumee = volumee+volumee;}}}}}}
if (volumee>volume*I){volumee=volume;}


              for ( i=OrdersTotal()-1;i>=0;i--)
   {
    if (OrderSelect(i, SELECT_BY_TICKET ) == true)    Alert ("Select error ", GetLastError( ) ) ;
     if(OrderMagicNumber( )== magic){
      if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {
                             BUY++;}}}}   
 if(BUY==0){

 ticket= OrderSend( Symbol(), OP_BUY, volumee, NormalizeDouble(( Ask),Digits),NormalizeDouble(( Point*3),Digits) , NormalizeDouble(( Ask-stoploss*Point),Digits), NormalizeDouble(( Ask+takeprofit*Point),Digits), NULL,  magic, 0, Red) ;}
 
 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
¡Aquí, dos órdenes de arresto! ¡!
 

Sabes, tal vez he estado trasteando con el bucle for, hay una orden, le quito una más y la condición del bucle no se cumple en absoluto. Sí, sí, parece, ¡y hay exactamente dos pedidos abiertos!

Gente, ¿debo borrar mis últimos comentarios?

No, todavía tengo dos, y después de la tercera o cuarta garrapata Alerta: Escribe el error de selección 4105,

Parece que la orden no ha sido seleccionada y no hay ningún error al principio... Esto es correcto for( int i=0;i<=OrdersHistoryTotal();i++){

y así for( int i=0;i<=OrdersTotal();i++){

Y hay dos órdenes de igual manera.

Eso es, uno. Uf. ;


 
Error 4105-orden no seleccionada-no desaparece, pero en general funciona adecuadamente
 
Ivn:

Buenas tardes cómo escribir un asesor estándar para otro plazo. Es decir, poner este indicador en el gráfico de 1 hora que mostrará el indicador de 4 horas.

пытался //+------------------------------------------------------------------+
//| vv a las 4 en punto.mq4 ||
//| Copyright © 2012, MetaQuotes Software Corp.
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#enlace de la propiedad "https://www.metaquotes.net/"

#propiedad ventana_del_gráfica_del_indicador
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#property indicator_color3 LightSeaGreen
//---- parámetros del indicador
extern int BandsPeriod=20;
BandsShift=0;
extern double BandasDesviaciones=2,0;
//---- buffers
doble MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MovingBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpperBuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LowerBuffer);
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift);
SetIndexDrawBegin(1,BandsPeriod+BandsShift);
SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Bandas de Bollinger |
//+------------------------------------------------------------------+
int inicio()
{
int,k,counted_bars=IndicatorCounted();
doble desviación;
doble suma,oldval,newres;
int B=iBars( NULL,PERIOD_H4);
double C=iClose(NULL,PERIOD_H4,0);
//----
if(B <=BandsPeriod) return(0);
//---- cero inicial
if(counted_bars<1)
for(i=1;i<=BandsPeriod;i++)
{
MovingBuffer[B-i]=EMPTY_VALUE;
BufferSuperior[B-i]=Valor_Vacío;
LowerBuffer[B-i]=EMPTY_VALUE;
}
//----
int limit=B-barras contadas;
if(counted_bars>0) limit++;
for(i=0; i<limit; i++)
MovingBuffer[i]=iMA(NULL,PERIOD_H4,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
i=B-BandasPeriodo+1;
if(counted_bars>BandsPeriod-1) i=B-counted_bars-1;
while(i>=0)
{
suma=0,0;
k=i+BandasPeriodo-1;
oldval=Buffer móvil[i];
while(k>=i)
{
newres=C[k]-oldval;
sum+=newres*newres;
k--;
}
desviación=BandasDesviaciones*MathSqrt(suma/PeriodoBandas);
BufferSuperior[i]=valor-old+desviación;
BufferInferior[i]=desviación de la media naranja;
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+

no funcionó

this newres=C[k]-oldval;- '[' - token inesperado

El indicador de las Bandas de Bollinger.


En lugar de C[k] inserte iClose(NULL,PERIOD_H4,k);

Sin embargo, he conseguido una forma de mostrar el gráfico de las 1 y la línea de las 4 de una forma más natural.
Cuando traduzco este código a un gráfico, veo que el precio sale del canal; parece que el gráfico de la banda de Bollinger a las 4 horas no está conectado a la línea de tiempo

gracias de antemano

 

Chicos, ¿pueden decirme por experiencia... Elegí una empresa para alquilar VPS para el comercio a través de la terminal de cliente MT4, interesado en la cantidad de tráfico en promedio consume una terminal de funcionamiento, por ejemplo, con diez sops? Habrá varias terminales funcionando... Para poder elegir el plan de datos adecuado entre los ofrecidos:

P.D. Tienen una tarifa basada en el tráfico total, es decir, entrante + saliente.

 

Colegas, que saben responder:

¡Tengo un probador de estrategias en el mismo marco de tiempo (01.05.2011 - 27.01.2012), par de divisas EURUSD, en barras de una hora (H1), de un DC (Alpari), y el mismo asesor, pero en diferentes equipos (portátil, de escritorio) da resultados opuestos! En el PC - $2000, en el portátil +3000. Y allí, y allí comprobado en 2-3 veces.

Por favor, aconsejen la causa y qué hacer y/o denme un enlace donde se pueda leer eso sobre el tema.
 
Sersad:

Colegas, que conocen la respuesta:

¡Tengo un probador de estrategia en el mismo intervalo de tiempo (01.05.2011 - 27.01.2012), el par de divisas EURUSD, en las barras de una hora (H1), de un DC (Alpari), y el mismo Asesor Experto, pero en diferentes ordenadores (portátil, de escritorio) da resultados opuestos! En el PC - 2.000 dólares, en el portátil +3.000. Y allí, y allí comprobado en 2-3 veces.

Por favor, aconsejen la causa y qué hacer y/o denme un enlace donde se pueda leer eso sobre el tema.


Yo mismo me he visto envuelto en esto una vez... tenía algo similar: El 1er terminal fue instalado con Metacquotes, el 2do con Alparey, la historia también en consecuencia, hubo discrepancias significativas al probar el mismo búho, no se pudo averiguar lo que estaba mal durante mucho tiempo.

1. Descargue los terminales de Alpari. Descargue el historial de cotizaciones de Alpari para el instrumento y aparecerá esta ventana:

Si no aparece después de pulsar F2 seguido de "Descargar", entonces está descargando el historial del instrumento. Si no ve esta ventana después de presionar F2 seguido de "Descargar", no estará descargando el historial de precios de Alpari.

2. En el Probador de Estrategias establezca todas las opciones iguales + compruebe el spread haciendo clic en el botón "Propiedades del Símbolo". Compruebe los valores del spread en el probador de estrategias haciendo clic en el botón "Propiedades del símbolo".

Antes de hacerlo - borre y recargue el historial de cotizaciones del instrumento que le interesa + compruebe el periodo de prueba: en la captura de pantalla H4 - para que sea el mismo en ambos casos.