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

 
Shniperson:

Hola! El hecho de que los EAs con una gran cantidad de código y operaciones sean un poco lentos... ya lo hemos descubierto... Aquí hay una pregunta...

Mi Asesor Experto tiene un gran bloque para mantener las operaciones... Si este bloque se elimina en un EA separado (y se elimina del primero), entonces tendré dos EAs simultáneamente ... ¿Les hará trabajar más rápido? ¿Tomará las decisiones sobre las operaciones más rápidamente? y ¿tomará las decisiones sobre el stop loss más rápidamente?

Creo que no se trata de tomar una decisión sobre el trailing stop-loss, sino de la velocidad de ejecución de la orden por parte del broker. Una cosa es tomar una decisión y otra que se ejecute.
 
Suliena:

¡Gracias, ENORME! ¡¡¡¡Resulta que debería haber puesto un separador de listas en la configuración regional!!!!

Llevo dos días dándole vueltas al código.

No es necesario tocar la configuración regional. Hay una configuración de delimitadores en Excel.
 
¿Puede decírmelo, por favor? ¿Cómo escribo la diferencia de las variables MACD en pips? Por ejemplo:
if ( MACDCurrent-MACDSignal)>5*Point   // ??
 

¿Podría decirme el convertidor a TF no estándar, porque la búsqueda no funciona? Gracias.

 
borilunad:

¿Podría decirme el convertidor a TF no estándar, porque la búsqueda no funciona? Gracias.

Period_Converter.mq4
//|                 Copyright © 2005-2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property show_inputs
#include <WinUser32.mqh>

extern int ExtPeriodMultiplier=5; // new period multiplier factor
int        ExtHandle=-1;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int    i, start_pos, i_time, time0, last_fpos, periodseconds;
   double d_open, d_low, d_high, d_close, d_volume, last_volume;
   int    hwnd=0,cnt=0;
//---- History header
   int    version=400;
   string c_copyright;
   string c_symbol=Symbol();
   int    i_period=Period()*ExtPeriodMultiplier;
   int    i_digits=Digits;
   int    i_unused[13];
//----  
   ExtHandle=FileOpenHistory(c_symbol+i_period+".hst", FILE_BIN|FILE_WRITE);
   if(ExtHandle < 0) return(-1);
//---- write history file header
   c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
   FileWriteInteger(ExtHandle, version, LONG_VALUE);
   FileWriteString(ExtHandle, c_copyright, 64);
   FileWriteString(ExtHandle, c_symbol, 12);
   FileWriteInteger(ExtHandle, i_period, LONG_VALUE);
   FileWriteInteger(ExtHandle, i_digits, LONG_VALUE);
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);       //timesign
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);       //last_sync
   FileWriteArray(ExtHandle, i_unused, 0, 13);
//---- write history file
   periodseconds=i_period*60;
   start_pos=Bars-1;
   d_open=Open[start_pos];
   d_low=Low[start_pos];
   d_high=High[start_pos];
   d_volume=Volume[start_pos];
   //---- normalize open time
   i_time=Time[start_pos]/periodseconds;
   i_time*=periodseconds;
   for(i=start_pos-1;i>=0; i--)
     {
      time0=Time[i];
      //---- history may be updated
      if(i==0)
        {
         //---- modify index if history was updated
         if(RefreshRates())
            i=iBarShift(NULL,0,time0);
        }
      //----
      if(time0>=i_time+periodseconds || i==0)
        {
         if(i==0 && time0<i_time+periodseconds)
           {
            d_volume+=Volume[0];
            if (Low[0]<d_low)   d_low=Low[0];
            if (High[0]>d_high) d_high=High[0];
            d_close=Close[0];
           }
         last_fpos=FileTell(ExtHandle);
         last_volume=Volume[i];
         FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
         FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);
         FileFlush(ExtHandle);
         cnt++;
         if(time0>=i_time+periodseconds)
           {
            i_time=time0/periodseconds;
            i_time*=periodseconds;
            d_open=Open[i];
            d_low=Low[i];
            d_high=High[i];
            d_close=Close[i];
            d_volume=last_volume;
           }
        }
       else
        {
         d_volume+=Volume[i];
         if (Low[i]<d_low)   d_low=Low[i];
         if (High[i]>d_high) d_high=High[i];
         d_close=Close[i];
        }
     } 
   FileFlush(ExtHandle);
   Print(cnt," record(s) written");
//---- collect incoming ticks
   int last_time=LocalTime()-5;
   while(IsStopped()==false)
     {
      int cur_time=LocalTime();
      //---- check for new rates
      if(RefreshRates())
        {
         time0=Time[0];
         FileSeek(ExtHandle,last_fpos,SEEK_SET);
         //---- is there current bar?
         if(time0<i_time+periodseconds)
           {
            d_volume+=Volume[0]-last_volume;
            last_volume=Volume[0]; 
            if (Low[0]<d_low) d_low=Low[0];
            if (High[0]>d_high) d_high=High[0];
            d_close=Close[0];
           }
         else
           {
            //---- no, there is new bar
            d_volume+=Volume[1]-last_volume;
            if (Low[1]<d_low) d_low=Low[1];
            if (High[1]>d_high) d_high=High[1];
            //---- write previous bar remains
            FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
            FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
            FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
            FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
            FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
            FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);
            last_fpos=FileTell(ExtHandle);
            //----
            i_time=time0/periodseconds;
            i_time*=periodseconds;
            d_open=Open[0];
            d_low=Low[0];
            d_high=High[0];
            d_close=Close[0];
            d_volume=Volume[0];
            last_volume=d_volume;
           }
         //----
         FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
         FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
         FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE);
         FileFlush(ExtHandle);
         //----
         if(hwnd==0)
           {
            hwnd=WindowHandle(Symbol(),i_period);
            if(hwnd!=0) Print("Chart window detected");
           }
         //---- refresh window not frequently than 1 time in 2 seconds
         if(hwnd!=0 && cur_time-last_time>=2)
           {
            PostMessageA(hwnd,WM_COMMAND,33324,0);
            last_time=cur_time;
           }
        }
      Sleep(50); 
     }      
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deinit()
  {
   if(ExtHandle>=0) { FileClose(ExtHandle); ExtHandle=-1; }
  }
//+------------------------------------------------------------------+
Crear un TF o un símbolo - adjuntarlo como un gráfico fuera de línea. es decir, ARCHIVO -> ABRIR AUTO...
 
avatara:
Crear un TF o un símbolo - engancharlo como un gráfico fuera de línea. es decir, ARCHIVO -> ABRIR AUTO...


Gracias. ¡Pero estoy buscando un convertidor en el que el EA podría trabajar!

Recuerdo un hilo en el que se hablaba de esto, y de lo que hay en CodeBase.

 

¿Cómo puedo utilizar un código para vincular un arrastre y un punto de equilibrio con un stop loss y un take out?

Quería poner un trozo de código en alguna parte. Sí, sí, lo de "por estrategia".

 
borilunad:


Gracias. ¡Pero estoy buscando un convertidor en el que el EA podría trabajar!

Recuerdo un hilo en el que se hablaba de esto y de lo que hay en CodeBase.

después.

cuando habrá una ventana con un gráfico de suprastat. y en la fuente estará crujiendo el script....

¡Ejecuta el induks y el owl en él (en la ventana/gráfica blyn!) - ¡todo funciona!

;)

 
¿Puede sugerir un "asesor" o script ... que se mostraría en grandes números cuántos puntos y la pérdida de dinero / beneficio de la transacción actual (abierto) y lo que el equilibrio ... y algo que no puedo encontrar .
 
avatara:

después.

cuando habrá una ventana con el gráfico del enemigo. y la fuente estará crujiendo el script....

Ejecuta los induks y el búho en él (en la ventana/gráficos, por cierto) - ¡todo funciona!

;)


Eso es todo, ¡gracias!

Lo encontré, añadí las líneas correctas al código y al inlude, lo desconecté y fui a comentar. Y el comercio mañana lo intentará.

Lástima que sea imposible comprobar los parámetros en el probador, tendré que usar la Demo durante un tiempo.

¡Buenas noches!

Razón de la queja: