[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 341

 
dyxaa:

Exatamente. Brilhantemente simples))))

Preciso de uma parada de compra se o preço descer 100 pips para apagá-lo.

Você o coloca programática ou manualmente?

Se for manualmente, então feche-o manualmente (melhor).

Se feito de forma programática (através de um Consultor Especialista), então passe pelas ordens e encontre a ordem certa. Então:

if (Bid < OrderOpenPrice()-100*Point) OrderDelete(OrderTicket());   // Это для Вашего типа ордера - Бай-Стоп

Se você não souber como fazer o excesso e outras ações mais simples, então comece lendo um tutorial sobre o MCL. Porque, neste caso, é pouco provável que você seja capaz de lidar com o código.

 
hoz:

Tenho uma idéia, mas como fazê-lo na vida real e como funcionará de forma confiável na vida real, eu realmente não sei.

A essência é a seguinte. Devemos entrar no mercado após colocar a coruja no gráfico imediatamente após o fechamento do bar, ou seja, na abertura de um novo bar. Esta é a primeira encomenda. Além disso, quando o pedido é fechado por um TP ou por um preço Stop, devemos abrir um pedido na abertura de um novo bar imediatamente. Como fazer isso de forma mais razoável?

Entendo que devemos criar uma variável. Coloque o preço aberto do bar atual nele. E comparar este valor com o preço de abertura da barra atual. Se o valor da variável não for igual ao preço de abertura da barra atual com o índice zero, abriremos um pedido.

Esta é a variante mais ideal, não é?

Aqui, encontrei uma função para determinar a Nova Ordem enquanto resolvo meus próprios casos:

//+------------------------------------------------------------------+
//|  Проверка на появление нового бара                               |
//+------------------------------------------------------------------+
bool isNewBar()
   {  static datetime TimeBar=0;
      bool flag=false;
      if(TimeBar!=Time[0])
         {
          TimeBar=Time[0];
          flag=true;
         } 
      return (flag);
   }
//+------------------------------------------------------------------+
Agora só falta abrir uma ordem... : )))
 
dyxaa:

Exatamente. Brilhantemente simples))))

Preciso de uma parada de compra se o preço descer 100 pips para apagá-lo.

Eu tenho minha própria cruz e tenho que contar 100 pontos pela diferença entre o preço e o preço para colocar o pedido pendente!
 

Não entendo o que está errado, ajude-me a entender, erro 'start' - variável não definida, preciso encontrar o máximo de valores RSI para um determinado período

(RSIBuffer3[i]) // matriz com valores RSI

// definir o tamanho da matriz

int count=ArraySize(RSIBuffer3[i]);

// busca do valor máximo da matriz

int RSI_max=ArrayMiximum (RSIBuffer3[i], count-1, int start=0);

 
Chiripaha:

Se implementado, ele funcionará de forma tão confiável na vida real quanto na demonstração. Mas não o fato de que será lucrativo.

Você pode implementá-lo através da abertura de um novo bar. Mas você não formulou em que direção a barra se abre, e sob quais condições este lado é determinado.

Você não precisa comparar nada - basta abrir um pedido quando uma nova barra aparece (com base em sua entrada) e pronto.

Se você não tem a menor idéia:

"A experiência é filha de muitos erros.
E um gênio é um amigo dos paradoxos" (Alexander Sergeyevich falando com você).

Você precisa fazer (escrever) uma coruja e verificá-la experimentalmente. - Acho que ninguém vai escrever a coruja para você (de graça). Dar-lhe uma dica é uma coisa. Mas implementar idéias (pensamentos) não é ajuda, mas trabalho.


Eu imagino tudo. A idéia é que a primeira ordem, se usarmos uma ou outra função para determinar a nova barra, se abrirá espontaneamente, quando a EA for anexada ao gráfico como . no momento de colocar a EA no gráfico, a variável que armazena o tempo de abertura do bar não será igual ao tempo da abertura atual do bar.. Pensei em apenas atribuir o tempo de abertura da barra atual à variável na Inite e então, se esta variável for igual ao tempo de abertura da barra atual, não farei mais nada e, se não for igual, executarei a função aberta. Pensei que seria a variante mais adequada ou talvez eu pudesse passar sem o inite.

 
Merincool:

Não entendo o que está errado, ajude-me a entender, erro 'start' - variável não definida, preciso encontrar o máximo de valores RSI para um determinado período

(RSIBuffer3[i]) // matriz com valores RSI

// definir o tamanho da matriz

int count=ArraySize(RSIBuffer3[i]);

// busca do valor máximo da matriz

int RSI_max=ArrayMiximum (RSIBuffer3[i], count-1, int start=0);

// determinar o tamanho da matriz

int count=ArraySize(RSIBuffer3);

// busca do valor máximo da matriz

int RSI_max=ArrayMiximum(RSIBuffer3, count-1, int start=0);

 

O que eu preciso escrever no atalho do programa para que o terminal comece com uma conta específica?

 
Olá, existem 4 indicadores e o usuário tenta escrever um Expert Advisor para isso. A questão é o que você precisa prescrever para que o valor do preço de cada indicador não mostre 0, mas ainda assim um número. eu preciso apenas prescrever gramaticalmente no icustom, eu prescrevo, mas isso não funciona, aqui está o "conjunto".
Arquivos anexados:
 
Elektronik, parece abrir com o último com quem você trabalhou. Pelo menos, eu não vi nenhum outro.
 
palomnik:
Elektronik, parece abrir com a última, pelo menos não vi nenhuma outra.

Eu termino no testador e começo no verdadeiro.

Razão: