[¡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 13

 
alsu:
De las propietarias, probablemente MS VisualStudio, también las hay gratuitas, CodeBlocks, por ejemplo, es bastante buena.
Gracias, creo que voy a empezar con VISUAL C++ 2010 EXPRESS y CodeBlocks.
 
rustein:

Decidí empezar a aprender C,C++,C#, quien puede sugerir un buen compilador y editor.

Gracias.


OLVIDADO

PERL

 
freeDRIVER:


NADA MÁS SE OLVIDA.

PERL

Gracias, lo leí, interesante proyecto.
 

Por desgracia, nada de lo anterior ha servido de nada.

La pregunta https://www.mql5.com/ru/forum/138609/page9#edit_form sigue siendo pertinente.

¡Por favor, ayuda!

 

Necesito un indicador que muestre la barra o vela más pequeña, para un determinado período. por ejemplo, en el gráfico 4H mostrará la vela o barra más pequeña para 5 días.

Días u horas, que se establecen en la configuración del indicador. Y marcó esta flecha vela como en el indicador Fractales.

O algo así.
 
Fox_RM:

Por desgracia, nada de lo anterior ha servido de nada.

La pregunta https://www.mql5.com/ru/forum/138609/page9#edit_form sigue siendo pertinente.

¡Por favor, ayuda!

Por favor, muéstrame el código de nuevo con los cambios que hiciste
 
Fox_RM:

Por desgracia, nada de lo anterior ha servido de nada.

La pregunta https://www.mql5.com/ru/forum/138609/page9#edit_form sigue siendo pertinente.

¡Por favor, ayuda!

Ya has recibido muchos consejos. En primer lugar, no es correcto que la pregunta vuelva a publicar el código original (sin sus comentarios, o más bien correcciones). En segundo lugar, debe elaborar su propio algoritmo de recuperación de errores. No ha funcionado mejor (dentro de MQL4), que imprimir los resultados intermedios. El autor puede ver los errores lógicos en primer lugar, ya que es el ÚNICO que conoce la lógica del código que escribió... ;)))
 

La última versión:

//+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link      "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip,TP_UP[20],TP_DN[20],TP_UPMin[20],TP_DNPl[20]; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i=0,limit,k=0,old_sell=0,old_bay=0;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

  ArrayResize(MA1,Bars);ArrayResize(MA2,Bars);

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам
for (i=0;i<count;i++)           //--- вроде так
{  
    price = Close[i]/Point;    
    delta = price-old_price;
          
    if(!time_Bar)time_Bar=Time[0];
    col_bar = iBarShift(NULL,0,time_Bar)-iBarShift(NULL,0,Time[i]);
    if (col_bar >= 1)
    
    {time_Bar=Time[i];sum_pip_bay=0;
    sum_pip_sell=0;sum_pip=0;
    old_bay=0;old_sell=0;sum_tick=0;
    count_plus=0;count_minus=0;}
     
     //---- Расчет UP
    if(delta>=0)
    {if(delta>100)delta=1;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
    if(delta<0)
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+MathAbs(sum_pip_sell);
     
      //---
  
        if (MA1[i]>=0){TP_UP[i]=MA1[i];}else{TP_UPMin[i]=MA1[i];}
        if (MA2[i]<=0){TP_DN[i]=MA2[i];}else{TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if(NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs(sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask
   }    
   }                
   return(0);
}

//---- Функции
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<20;i++)                         //--- тут привел в соответствие
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}
 
Fox_RM:

La última versión:

double a=1,c,step=1/20;

1) la variable de paso es cero. Introduzca 0,05 o divídalo como 1,/20

2) después de eso, las operaciones comienzan a intentar abrirse, pero

OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20)

en lugar de 50 y 20 deberías poner niveles de stop loss y take profit (_absoluto_)


P.D. Sólo he mirado los momentos básicos de no apertura. Por supuesto, hay que optimizar y añadir muchas cosas.

 
Fox_RM:

La última versión:

De qué va este "mazahismo":

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам

¿Por qué no declararlo honestamente?

count = 20;

Y no torturar estos arrays MA1[] y MA2[] declarando sus dimensiones a la vez:

double MA1[20],MA2[20];

Y con eso:

 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask

Tienes que volver a las raíces de... del conocimiento. ¡¡¡Se pasa el tamaño de los STOPPs en pips a la orden de operación, y se necesita pasar los NIVELES!!! ¡¡¡Y para trabajar en línea es necesario NORMALIZAR los NIVELES (precio, SL y TP)!!!

 if (Sredn(TP_UP)>=1.5)
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble (Bid,Digits),2,NormalizeDouble (Ask+50*Point, Digits),NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)
OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),2,NormalizeDouble(Bid-50*Point,Digits),NormalizeDouble(Bid+20*Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

Y una cosa más: acostúmbrate desde el principio como un "adulto" ¡¡¡asigna tus órdenes MAGIA!!! ¡¡Lo necesitarás en el futuro!!