Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1059

 
artmedia70:

Y tienes que ser muy específico sobre lo que quieres redibujar.

Es posible que tenga que volver a calcular todos los topes de los indicadores.
Hay que experimentar con el comportamiento del indicador y su respuesta a los cambios externos de sus variables internas.

Sinceramente, nunca he probado esto (no... bueno, sí lo he hecho, y muchas veces he hecho indicadores que reaccionan a los eventos y dibujan lo que se requiere. Pero originalmente utilicé un enfoque no estándar para dibujar búferes). Haga un indicador de prueba, que dibuje algo (por lo menos dos o tres puntos en la pantalla en las barras más cercanas) y trate de cambiar su valor del buffer usando eventos. Si cambia, esta es una forma de trabajar con su indicador, si no, este es otro enfoque a considerar. Tal vez haya que mover todos los cálculos a un temporizador, o directamente en OnChartEvent() hacer un ciclo de recálculo después de detectar el evento deseado...

En resumen: se necesitan experimentos...

Gracias.

 
artmedia70:

Por alguna razón la aparición de un TakeProfit no interrumpe la suma. Cuenta todos los puntos negativos de la historia.
 
Neron_plus34:
Por alguna razón la aparición de un TakeProfit no interrumpe la suma. Cuenta todas las desventajas de la historia.
Despliega el bucle.
 
artmedia70:
Despliega el bucle.
Gracias, funciona.
 

Hola...Solía operar en ForexClub con MT4 que descargué de allí... Decidí abrir otra cuenta en InstaForex... pero cuando me conecto a otra cuenta, la pantalla de cotizaciones de acciones dice "esperando actualización" .... Tengo que elegir"abrir gráfico" de nuevo para abrir la pantalla requerida... Intenté descargar MT4 del fabricante, pero entonces no puedo conectarme a las cuentas de operaciones....pis no hay conexión... ¿qué estoy haciendo mal? Por favor, ayuda ....

 
Forexman77:

Gracias, lo he conseguido.

¿Cómo puedo hacer que el indicador se vuelva a dibujar después de arrastrar la línea?

// Определение LastBar по расположению StopLine на графике
bool fNewStopLine(){
   bool New;
   int StopBar, Error;
   double Shift;
   datetime StopLine;
   if( ObjectFind("StopLine")==0 ){                // Есть стоп-линия
      StopLine=ObjectGet("StopLine",OBJPROP_TIME1);// Время стоп-линии
      StopBar=iBarShift(NULL,0,StopLine);          // Бар стоп-линии
      LastBar=StopBar+1;                           // Бар окончания построения
      if( StopBar<=БарОкончания ){                 //    правее или на последнем баре
         LastBar=БарОкончания;                     // Перенести на нулевой бар
         StopBar=LastBar-1;
         StopLine=Time[StopBar];
         if( !ObjectMove("StopLine",0,StopLine,0) ){
            if( !РежимОтладки ) PlaySound("alert.wav");
            Print("***   StopLine - объект не перемещен, ошибка "+GetLastError());
      }  }
      if( StopLine!=OldStopLine ){                 // Новая стоп-линия
         ReInit();                                 // Повторная инициализация
         ClearScreen();                            // Очистить экран
         Shift=0.01*(WindowPriceMax()-WindowPriceMin())*СдвигИндикатораТиков;
         Error=fArrow("TickIndicator","",0,StopBar // Сформировать индикатор тика
                     ,WindowPriceMin()+Shift,0,0,0,0
                     ,ЗнакИндикатораТиков,ЦветИндикатораТиков,РазмерИндикатораТиков);
         OldStopLine=StopLine;                     // Стоп-линия обработана
         New=true;                                 // Выполнить построение заново
      }
      else{                                        // Нет новой стоп-линии
         New=false;                                // Построение заново не выполнять
   }  }
   else{                                           // Нет стоп-линии
      New=false;                                   // Построение заново не выполнять
      Error=fObjectDelete("TickIndicator");        // Удалить индикатор тика
   }
   return(New);
}
 
tara:

Gracias.
 

Me encuentro con un problema. Estoy desarrollando mi propio indicador sobre la base de un indicador, pero hay algunas cadenas que no entiendo y estas cadenas utilizan la biblioteca dll. Si puedes decirme con tus propias palabras para qué sirven estas líneas. ¿Cómo puedo cambiarlos sin usar la biblioteca dll? He resaltado estas líneas a continuación:

#import "user32.dll"
        int  RegisterWindowMessageA (string lpString); 
        int  PostMessageA           (int hWnd,int Msg,int wParam,int lParam);
                
#define  WM_COMMAND                     0x0111
#import

            int MT4InternalMsg;
            int hwnd;
            string sn; 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);

  if(MT4InternalMsg == 0)  
         {
         MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); 
    }       
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
      
  }

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
                  hwnd = WindowHandle(Symbol(), 1);
        if(PostMessageA(hwnd, 0x0111, 0x822c, 0) == false)
          {
          hwnd = 0;
          return;
          }
          PostMessageA(hwnd, MT4InternalMsg, 2, 1);    
  }
//+------------------------------------------------------------------+
 
1. ¿Cómo puedo abrir dos o más pedidos al mismo tiempo?
2. ¿Cómo puedo saber que la orden se ha cerrado en TP o SL y llamar a algo en este evento?
3. ¿Qué problemas pueden surgir durante las operaciones reales del Asesor Experto? ¿Pueden mis TP, SL, pendientes, etc. no ser ejecutados en un servidor? ¿Qué haría usted en ese caso? ¿Dónde puedo almacenar mis registros de operaciones de forma fiable (en variables globales, en el terminal, en archivos, etc.)?
 
smart_man:
1. ¿Cómo puedo abrir dos o más pedidos al mismo tiempo?
2. ¿Cómo puedo saber si una orden está cerrada por TP o SL, y llamar a algo en este evento?
3. ¿Qué problemas pueden surgir durante las operaciones reales del Asesor Experto? ¿Pueden mis TP, SL, pendientes, etc. no ser ejecutados en un servidor? ¿Qué haría usted en ese caso? ¿Dónde puedo almacenar los registros comerciales de forma fiable (en variables globales, en el terminal, en archivos, etc.)?

Aquí puedes encontrar parte de las respuestas: https://www.mql5.com/ru/forum/131859