Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 93

 
seny:

Por favor, ajude, aqui está um exemplo

Funciona assim...

mas não assim...

como escrever no buffer através da variável k?

duplo k=0;
 
Alekseu Fedotov:
duplo k=0;

Não ajuda! nem no corpo do código, nem na inicialização, nem no início...

 
seny:

funciona assim... e não assim...

Para entender, é preciso simplificar. Compare duas expressões: 100/10/10 = 1 e k=10/10 100/k = 100 mas se k=10*10, então está correto

 
Saudações. Você poderia me dizer como fazer com que a linha do tempo se estenda para o futuro quando a compensação da linha do tempo estiver habilitada?
 
Andrey Sokolov:
Saudações. Você poderia me dizer como estender a linha do tempo para o futuro quando a compensação do gráfico estiver habilitada?

Você não pode. Você mesmo só pode desenhar as linhas verticais - elas mostram o tempo na parte inferior.

 

Olá. Você pode me dizer como escrever uma condição pela qual: se uma ordem aberta for fechada na TakeProfit - eliminar todas as ordens de mercado restantes; se não (fechada na Stop Loss) - colocar a mesma ordem exata (com a mesma Stop Loss e Take Profit) que uma ordem pendente.

 
6737998:

Olá. Você pode me dizer como escrever uma condição pela qual: se uma ordem aberta for fechada em um takeprofit - eliminar todas as ordens de mercado restantes; se não (fechada no stoploss) - colocar a mesma ordem exata (com o mesmo stoploss e takeprofit) que uma ordem pendente.


Eu lhe disse em outro tópico - trabalhe com a história e escrevi os operadores que você precisa para fazer isso.

 

Ou você poderia escrever um artigo na seção "Artigos" sobre algum fenômeno cambial,
e no final do artigo colocar um anúncio para um indicador pago do mercado, um indicador que pode ser usado para investigar este fenômeno. ?

 

Olá a todos, encontrei um problema...

A tarefa é mudar interativamente um EA em um gráfico. Não estou considerando uma opção com vários gráficos e vários EAs.

Eu sei sobre o uso de ChartApplyTemplate e ele funciona, mas às vezes ele retorna uma resposta falsa com o argumento de que não pode colocar um comando na fila.

O que é esta fila, onde posso ler sobre ela ou como posso limpar esta fila, uma vez que minha tarefa deve ter prioridade sobre todas as outras?

Obrigado de antemão.

PS: Isto não acontece com a mudança manual do modelo. Talvez então através do WinAPI tente... necessidade de cavar, não tenho trabalhado com isso

ChartApplyTemplate - Chart Operations - MQL4 Reference
ChartApplyTemplate - Chart Operations - MQL4 Reference
  • docs.mql4.com
ChartApplyTemplate - Chart Operations - MQL4 Reference
 
Vasili Taucci:

Olá a todos, encontrei um problema...

A tarefa é mudar interativamente um EA em um gráfico. Não estou considerando uma opção com vários gráficos e vários EAs.

Eu sei sobre o uso de ChartApplyTemplate e ele funciona, mas às vezes ele retorna uma resposta falsa com o argumento de que não pode colocar um comando na fila.

O que é esta fila, onde posso ler sobre ela ou como posso limpar esta fila, uma vez que minha tarefa deve ter prioridade sobre todas as outras?

Obrigado de antemão.

PS: Isto não acontece com a mudança manual do modelo. Talvez então através do WinAPI tente... Necessidade de cavar, não tenho trabalhado com isso

Dê uma olhada nisto. É para o MT5, mas o princípio é completamente semelhante para o MT4. Ao usar o ChartApplyTemplate você precisa de sincronização obrigatória, o que eu faço no ticket da seguinte forma

  static bool TemplateApply( const long Chart_ID, const string &Str, const bool Sync = true )
  {
    string TmpStr = Str;

    const bool SyncFlag = (Sync && Chart_ID && (Chart_ID != ::ChartID()) && !::IsStopped());

    if (SyncFlag)
    {
      const color ColorStopLevel = (color)::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL);

      if ((bool)(ColorStopLevel >> 24))
        ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, ColorStopLevel & 0xFFFFFF);

      const int NewColorStopLevel = (int)EXPERT::StringBetween(TmpStr, EXPERT_STOPLEVEL, STRING_END) | (0x01 << 24);

      TmpStr = Str;
      EXPERT::StringReplace(TmpStr, EXPERT_STOPLEVEL, STRING_END, EXPERT_STOPLEVEL + (string)NewColorStopLevel + STRING_END);
    }

    short Data[];
    const bool Res = ::StringToShortArray(TmpStr, Data, 0, ::StringLen(TmpStr)) &&
                     ::FileSave(FILENAME, Data) && ::ChartApplyTemplate((ulong)Chart_ID, FILENAME);

    if (Res && SyncFlag)
    {
      long Value;

      while ((!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(0);

      ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, (int)Value & 0xFFFFFF);
    }

    return(Res);
  }
Expert
Expert
  • votos: 12
  • 2017.08.28
  • fxsaber
  • www.mql5.com
Библиотека чтения/записи параметров произвольных советников.
Razão: