Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1059

 
artmedia70:

E você precisa ser muito específico sobre o que você quer redesenhar.

Você pode ter que recalcular completamente todos os amortecedores indicadores.
Temos que experimentar o comportamento do indicador e sua resposta às mudanças externas de suas variáveis internas.

Honestamente, eu nunca tentei (não... bem, eu certamente o fiz, e muitas vezes fiz indicadores que reagem aos eventos e desenham o que é necessário). Mas eu originalmente usei uma abordagem não-padrão para desenhar buffers). Faça um indicador de teste, que desenha algo (pelo menos dois ou três pontos na tela nas barras mais próximas) e tente mudar seu valor tampão usando eventos. Se mudar - esta é uma maneira de trabalhar com seu indicador, se não - esta é outra abordagem a ser considerada. Talvez você tenha que mover todos os cálculos para um temporizador, ou diretamente no OnChartEvent() fazer um ciclo de recálculo após o evento desejado ser detectado...

Em resumo - são necessárias experiências...

Obrigado!

 
artmedia70:

Por alguma razão, o aparecimento de um TakeProfit não interrompe a soma. Conta todos os "minuses" da história.
 
Neron_plus34:
Por alguma razão, o aparecimento de um TakeProfit não interrompe a soma. Conta todos os "minuses" da história.
Desdobre o laço.
 
artmedia70:
Desdobre o laço.
Obrigado, funciona.
 

Olá...eu costumava negociar no ForexClub com o MT4 que baixei de lá... Decidi abrir outra conta na InstaForex... mas quando me conecto a outra conta, a tela de cotações de ações diz "à espera de atualização" .... Tenho que escolher"abrir gráfico" novamente para abrir a tela necessária... Tentei baixar o MT4 do fabricante, mas depois não consigo me conectar a contas de negociação....pis sem conexão...o que estou fazendo de errado? Por favor, ajude ....

 
Forexman77:

Obrigado, eu consegui!

Como faço para que o indicador redesenhar depois de arrastar a linha?

// Определение 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:

Obrigado!
 

Estou enfrentando um problema. Estou desenvolvendo meu próprio indicador com base em um indicador, mas há algumas cordas que não entendo e essas cordas usam a biblioteca dll. Se você puder me dizer com suas próprias palavras para que servem estas linhas. Como posso mudá-los sem usar a biblioteca dll? Destaquei estas linhas abaixo:

#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. Como posso abrir dois ou mais pedidos ao mesmo tempo?
2. Como eu sei que o pedido foi fechado no TP ou SL e que algo foi chamado para este evento?
3. Que problemas podem surgir durante a comercialização real pelo Consultor Especialista? Meu TP, SL, pendente, etc. não pode ser executado em um servidor? O que você faria em um caso desses? Onde guardo meus registros comerciais de forma confiável (em variáveis globais, em terminal, em arquivos, etc.)?
 
smart_man:
1. Como posso abrir dois ou mais pedidos ao mesmo tempo?
2. Como posso saber se um pedido é fechado pela TP ou SL, e chamar algo sobre este evento?
3. Que problemas podem surgir durante a comercialização real pelo Consultor Especialista? Meu TP, SL, pendente, etc. não pode ser executado em um servidor? O que você faria em um caso desses? Onde armazeno os registros de comércio de forma confiável (em variáveis globais, em terminal, em arquivos, etc.)?

Aqui você pode encontrar parte das respostas: https://www.mql5.com/ru/forum/131859