[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 600

 
r772ra:


Todos os indicadores, inclusive os padrão, são redesenhados em barra 0.

Uma palavra de conselho... Se você tem uma pergunta como esta, há uma função como esta:

bool WindowScreenShot( nome de arquivo string, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
Salva a imagem da tabela atual em um arquivo GIF. Em caso de falha, ele retorna FALSO. Para obter informações sobre o erro, é necessário chamar a função GetLastError().

A captura de tela é salva nos arquivos do terminal(arquivos de teste do terminal em caso de teste do Expert Advisor) ou em suas subpastas.


Não todos, mas alguns deles, e não apenas na barra zero, mas em geral, concordo completamente com você que é mais caro trabalhar com barra zero.

Estou tão confuso. Eu não consigo entender como uma captura de tela pode ajudar a resolver o problema?

 
rigonich:


Na verdade, não todos eles, e alguns não apenas na barra zero, mas em geral concordo absolutamente com você que trabalhar na barra zero é "mais caro".

Estou tão confuso. Não consigo entender como uma captura de tela pode ajudar a resolver um problema?


WindowScreenShot tira uma imagem de tela de um gráfico, acho que é claro. Se você o colocar corretamente após a função de abrir uma posição,

você sabe, surge a pergunta PORQUÊ ?????? Vamos dar uma olhada na foto.

 
r772ra:


WindowScreenShot tira um instantâneo do gráfico, acho que isto é claro. Se você o colocar logo após a função de abertura de posição,

veja, surgiu a pergunta PORQUÊ ?????? Veja foto.


Existe um tal assistente.
 
r772ra:

Existe um tal assistente.

Entendi. Obrigado. Interessante, vou ter que tentar.
 
rigonich:

Para responder mais precisamente, você precisa olhar o código de um EA. Isso geralmente acontece quando não levamos em conta algumas peculiaridades de como funciona uma EA com os chamados indicadores. Os consultores especializados não calculam eles mesmos os valores indicadores, eles os tiram dos amortecedores indicadores já prontos. É por isso que se você precisa, por exemplo, lembrar os valores anteriores do indicador ou algo mais, que o próprio indicador faz, você tem que incluir tudo isso em seu Consultor Especializado. E às vezes há indicadores "tortos", mas acho que você tem um estocástico padrão e isso não tem nada a ver com isso.


Obrigado pela resposta, mas não me ajudou muito, mais uma vez vou postar o problema, talvez outra pessoa tenha algumas idéias sobre este assunto?

Boa tarde, por favor, ajude-me, não consigo entender por que as ordens indesejadas abrem ((, na imagem da tela estão circuladas em vermelho, o código está anexado...

Arquivos anexados:
 
rigonich:

Se for o caso, é com os desenvolvedores de ajuda.


Os desenvolvedores não tiveram nada a ver com isso. :__

Ao invés de ( Hora()>=10 || Hora()<20 ) você deveria ter feito isso simples Hora()>=10 && Hora()<20

e tudo funcionou.

 
Rapazes, vocês poderiam me dizer como fazer o testador exibir os negócios e indicadores usados na EA na janela de visualização?
 

Por favor, informe onde procurar para ver como a condição "Se o último take profit deal foi > 0 então...." está codificada.

ou seja, a contabilidade de negócios já fechados (automaticamente) .

 
lottamer:

Por favor, informe onde procurar para ver como a condição "Se o último take profit deal foi > 0 então...." está codificada.

ou seja, a contabilização de negócios já fechados (automaticamente) .


https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

Função isCloseLastPosByTake().

Esta função retorna uma bandeira para fechar a última posição por Takei. A bandeira é hasteada - Verdadeiro - TakeProfit foi acionada. Bandeira arriada - Falsa - posição foi fechada devido a outro motivo. Uma seleção mais precisa das posições a serem consideradas é feita usando parâmetros externos:

  • sy - Nome do instrumento de mercado. Se você especificar este parâmetro, a função considerará apenas as posições do instrumento especificado. O valor padrão "" significa qualquer instrumento de mercado. NULL significa o instrumento atual.
  • op - Operação comercial, tipo de posição. Valores válidos: OP_BUY, OP_SELL ou -1. O valor padrão -1 significa qualquer posição.
  • mn - Identificador de posição, MagicNumber. O valor padrão -1 significa qualquer identificador.
  • //+----------------------------------------------------------------------------+
    //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
    //+----------------------------------------------------------------------------+
    //|  Версия   : 19.05.2008                                                     |
    //|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
    //+----------------------------------------------------------------------------+
    //|  Параметры:                                                                |
    //|    sy - наименование инструмента   (""   - любой символ,                   |
    //|                                     NULL - текущий символ)                 |
    //|    op - операция                   (-1   - любая позиция)                  |
    //|    mn - MagicNumber                (-1   - любой магик)                    |
    //+----------------------------------------------------------------------------+
    bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
      datetime t;
      double   ocp, otp;
      int      dg, i, j=-1, k=OrdersHistoryTotal();
    
      if (sy=="0") sy=Symbol();
      for (i=0; i<k; i++) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
          if (OrderSymbol()==sy || sy=="") {
            if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (op<0 || OrderType()==op) {
                if (mn<0 || OrderMagicNumber()==mn) {
                  if (t<OrderCloseTime()) {
                    t=OrderCloseTime();
                    j=i;
                  }
                }
              }
            }
          }
        }
      }
      if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
        dg=MarketInfo(sy, MODE_DIGITS);
        if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
        ocp=NormalizeDouble(OrderClosePrice(), dg);
        otp=NormalizeDouble(OrderTakeProfit(), dg);
        if (ocp==otp) return(True);
      }
      return(False);
    }

 
BeerGod:

https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

A função isCloseLastPosByTake().

Esta função retorna uma bandeira para fechar a última posição por Take Profit. A bandeira está hasteada - Verdadeiro - TakeProfit foi acionada. Bandeira arriada - Falsa - posição foi fechada devido a outro motivo. Uma seleção mais precisa das posições a serem consideradas é feita usando parâmetros externos:

  • sy - Nome do instrumento de mercado. Se este parâmetro for definido, a função considerará apenas as posições do instrumento especificado. O valor padrão "" significa qualquer instrumento de mercado. NULL significa o instrumento atual.
  • op - Operação comercial, tipo de posição. Valores válidos: OP_BUY, OP_SELL ou -1. O valor padrão -1 significa qualquer posição.
  • mn - Identificador de posição, MagicNumber. O valor padrão -1 significa qualquer identificador.




Obrigado, eu mesmo encontrei as bibliotecas da KIM...(Camarada Kim aparentemente como MARX do mundo forex - escreveu CAPITAL...e todos nós o citamos agora (ou seja, inserimos em nossos EAs) .... há "bandeiras" de negócios recentes em diferentes variações.

exceto que eu nunca usei # includ-....

você pode explicar em poucas palavras?

no topo escrevo # includindo (nome do arquivo mqh)

Mas no código... onde eu coloco a função?

GetTypeLastClosePos ();

e depois o que ?

O QUE disto me devolverá o tipo de posição?

int GetTypeLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}

OrderType() ?

ou seja, se(OrderType() ==TRUE ) fizer isto e aquilo... certo?