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

 
chief2000 >> :

En el Indicador que puse (para luego compararlos con el Tiempo[i]):


Luego, en el bucle


Como resultado, StrToTime (StartRange) y StrToTime(EndRange) producen ceros .

- ¿Por qué y cómo lo arreglo?



Oops. ¿Y cómo te las arreglas para poner una variable datetime en la función StrToTime? ¡Debería haber una cuerda en ella!

¿O crees que el formulario de trabajo D'1970.12.24' es una cadena? Se equivoca.

¿Quizás necesites TimeToStr?

 


Esto hace que StrToTime (StartRange) y StrToTime(EndRange) produzcan ceros .

- ¿Por qué y cómo solucionarlo?



//функция 

bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}

//+-------------------------------------------------------------------
вставить в глоб. переменные
//extern string TimeBegin = "00:00";
//extern string TimeEnd = "00:00";

а это уже в код - проверка 
/*
isTradeTimeString(); //торговля по времени
   if ( isTradeTimeString( TimeBegin, TimeEnd))
     {
       //торгуем
     }
*/
 

Obviamente fue mi error (malinterpretado Ejemplo

de la documentación). Resulta que es posible comparar la variable "datetime" directamente con Time[i].

Gracias por la ayuda.

 
...... tiene una función... o un trozo de código... que cuente el número de pips recorridos después de la apertura de una orden... Hoy no puedo hacerlo yo (ya que ayer la olla se quedó sin agua) pero lo necesito de verdad.
 
Te digo que mi cabeza no funciona )))) Voy a buscar el código de la red de arrastre)))
 

//+------------------------------------------------------------------+
//| Custom MACD.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_color3 Blue

#property indicator_width1 2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;

//---- indicator buffers
double MacdBuffer[];
double SignalBuffer[];
double EMABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,MacdBuffer);
SetIndexBuffer(1,SignalBuffer);
SetIndexBuffer(2,EMABuffer);

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+","+SMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
for(i=0; i<limit; i++)
EMABuffer[i]=iMAOnArray(MacdBuffer,Bars,SMA,0,MODE_SMA,i);
//---- done
return(0);
}
//+------------------------------------------------------------------+

¿como puedo hacer un MA con un offset negativo por ejemplo -5 barras, cuando lo pongo a -5 se dibuja una mierda?

 
evgenio >> :

как мне сделать МА с отрицательным смещением например на -5 баров, когда ставлю -5 рисует каюто фигню ??

¿Por qué una mierda? ¿Hay algo que no quieras ver? ¡¡¡¡O me estoy perdiendo algo !!!!

ׂ

Arriba está su variante, abajo está la variante con un desplazamiento de -5 ! solo por -5 barras desplazadas, que es lo que está mal o equivocado????????

 
Infinity >> :

¿Por qué una mierda? ¿Hay algo que no quieras ver? ¡¡¡¡O me estoy perdiendo algo !!!!

Arriba está su variante, abajo está la variante con un desplazamiento de -5 ! solo por -5 barras desplazadas, que es lo que está mal o equivocado????????

Bueno, eso es cierto, pero cuando intento invocar el EA.

//+------------------------------------------------------------------+
//| fgfgfgfgfgf.mq4 |
//| Evgenio |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Evgenio"
#property link "http://www.metaquotes.net"

extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;
//---переменные----------
double k,k1,k2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
k=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,0,0),5);
k1=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,1,0),5);
k2=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,2,0),5);
if (OrdersTotal()<=2)
{
if (k>0 && k2>k1+0.0005)
ObjectCreate("down"+Time[1], OBJ_ARROW, 0, Time[1], Open[1]+100*Point);
ObjectSet("down"+Time[1], OBJPROP_ARROWCODE, 242);
ObjectSet("down"+Time[1], OBJPROP_COLOR, Yellow);
}
return(0);
}
//+------------------------------------------------------------------+

no funciona.

Esto es lo que hago

1. realizar una prueba en un periodo determinado

2. Adjunto un indicador

3 Me sale algo extraño.


 

¿Cómo puedo hacer

Quiero que mi EA abra una orden sólo una vez al día.

Si abrió una orden, luego la cerró y se desconectó hasta el día siguiente.

Entiendo, necesito buscar la última operación del historial... compararla con la fecha y si la orden ya se ha cerrado ese día, entonces desactivar el EA...

¿estás pensando en la dirección correcta?

No puedo entenderlo del todo. Soy nuevo en mql.

 

Buenas tardes, colegas.

Por favor, aconseje cómo explicar los puntos de inflexión de la línea en el software, es decir, al experto, es decir, el experto tiene que distinguir entre dos opciones de posición МА: МА creciente, МА decreciente.

Razón de la queja: