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 871

 
//-------Пример(мой) приказа на открытие позиции с привязкой закрытия ----------------------------------------------------- 
                                                      
                                                      //Локальная переменная, открывающая ордер БАЙ
   int OrdBuy_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));
   
        //-------Тогда закрытие именно для этого приказа может быть таким:-----------------------------------------------------
    
    if (OrdBuy_1()==true)                              //Если был открыт ордер №1, то...
     {                                                 //...выполнить следующее:...
                                                       //...при условии, что Желтая выше красной, с сужением(условие1)...
                                                       //...и есть верхний перелом Средней (условие2)...
                                                       //...ИЛИ при условии, что Желтая выше красной, с расширением(условие1а)...
                                                       //...и есть верхний перелом Боллинджера (условие2а)... 
     if ((Yellow_0>Red_0) && (Yellow_0-Red_0)<(Yellow_1-Red_1) && (MA_2 < MA_1 && MA_1 > MA_0) || (Yellow_0>Red_0) && (Yellow_0-Red_0)>(Yellow_1-Red_1) && (MB_2 < MB_1 && MB_1 > MB_0))
        {                              
       bool Ans=OrderClose(OrdBuy_1,Lots,Bid,0);       //...закрыть ордер №1 по цене Bid (лок.переменная)и выдать сообщение                                                      
         Alert("Попытка закрыть ордер БАЙ лотом("Lots"), с ценой открытия("Ask"). Ожидание ответа..");
        }
      }
   if (Ans==true)                                     // Если получилось,... 
        {                                             //... выдать сообщение
         Alert ("Закрыт ордер БАЙ лотом("Lots"),с ценой открытия("Ask"), цена закрытия("Bid"));
        }
 
Este é um exemplo ligeiramente modificado para o posto acima
 
rapid_minus:

r772ra eartmedia70, obrigado pelo esclarecimento.

Meu entendimento é que a magia é necessária principalmente quando um comerciante usa vários EAs, com várias ordens abertas, em vários pares de moedas, contas, etc. (certo?)

Acho que não, e se eu achar que meu consultor especializado vai trabalhar com lucro, isso será suficiente para mim. Ainda estou desenvolvendo-o para um par, uma conta em uma corretora e apenas uma ordem deve ser aberta e um mágico (ou qualquer outro identificador para uma posição aberta) é necessário para que seja fechado somente após a ocorrência de certas condições para esta mesma ordem e outras condições que são válidas para o fechamento de outras ordens (que podem ser abertas somente após o fechamento desta ordem) não seriam válidas para esta ordem.

Por exemplo, um pedido pode estar aberto quando as condições (a+b+c+d+d) ou (a+d+e) ou (f+c+i+c) aparecem e, dependendo das condições nas quais o BAY está aberto, ele deve fechar de acordo com suas próprias condições:(a+b+c+d) por (f+j+l),(a+d+e) por (h+l+m+n),(g+z+i+k) por (p+r+c+t) .

Parece-me que o ciclo de pedidos também não é necessário aqui. Tem que haver uma solução simples que não tome muito espaço. Eu declarei minha visão acima, mas ainda não tive que analisar, e além dos erros lógicos devo ter erros de sintaxe (pode haver parênteses ausentes ou conjunto de variáveis errado, etc.).

Não considere isso um problema, por favor, ajude. Fico preso sem ele. Obrigado

Determinar o bilhete da última posição aberta e processá-lo. IMHO - armazenar o número do bilhete em uma variável é ruim, pois é fácil perdê-lo em caso de qualquer falha. Para trabalhar com um pedido, ele deve primeiro ser selecionado. E você pode selecioná-lo ou por índice, ou por bilhete. O bilhete deve ser conhecido exatamente. Após uma seleção bem sucedida usando o bilhete, devemos também verificar se a posição com este bilhete foi fechada. Se houver apenas uma posição no mercado, o ciclo não é uma operação demorada. Mas não precisamos armazenar o número do bilhete em uma variável. Podemos selecionar a última ordem na lista, mas existe uma dependência de classificação, que pode ser alterada (anteriormente, havia uma dependência de classificação no terminal, depois foi removida, depois apareceu novamente, depois foi removida novamente) - você acredita que não vai aparecer novamente? Eu não tenho. No ciclo, haverá apenas uma iteração com apenas uma posição no mercado - é muito?

A condição de compra já chegou perto?
Se assim for, procuraremos o bilhete da última posição aberta Comprar
Se não, então vamos para o início.
Se encontramos o bilhete, fazemos o que precisamos na situação em questão com o pedido.
Caso contrário, vá para o início

 
rapid_minus:
Este é um exemplo ligeiramente modificado para o posto acima

Qual é a função OrdBuy_1() ? Não é uma variável, mas uma função. Esta construção é completamente errada. Uma função é definida fora de qualquer outra função, não por dentro.

 
artmedia70:

Determinar o bilhete da última posição aberta e processá-lo. IMHO - armazenar o número do bilhete em uma variável é ruim, pois é fácil perdê-lo com qualquer falha. Para trabalhar com o pedido, ele deve primeiro ser selecionado. E você pode selecioná-lo ou por índice, ou por bilhete. O bilhete deve ser conhecido exatamente. Após uma seleção bem sucedida usando o bilhete, devemos também verificar se a posição com este bilhete foi fechada. Se houver apenas uma posição no mercado, o ciclo não é uma operação demorada. Mas não precisamos armazenar o número do bilhete em uma variável. Podemos selecionar a última ordem na lista, mas existe uma dependência de classificação, que pode ser alterada (anteriormente, havia uma dependência de classificação no terminal, depois foi removida, depois apareceu novamente, depois foi removida novamente) - você acredita que não vai aparecer novamente? Eu não tenho. No ciclo, haverá apenas uma iteração com apenas uma posição no mercado - é muito?

A condição de compra já chegou perto?
Se assim for, procuraremos o bilhete da última posição aberta Comprar
Se não, então vamos para o início.
Se encontramos o bilhete, fazemos o que precisamos na situação em questão com o pedido.
Caso contrário, vá para o início

Obrigado, vou tentar refazê-lo. Ainda assim, embora eu tente refazer de acordo com a sua explicação, exprima meus erros no exemplo acima para que eu não os repita.

Obrigado

 
rapid_minus:

Obrigado, vou tentar refazê-lo. Ainda assim, embora eu tente refazer de acordo com a sua explicação, exprima meus erros no exemplo acima para que eu não os repita.

Obrigado

Eu tenho que ir - não tenho tempo. Resumindo - se a variável é int, por que você a verifica como um bool? Os valores de Stop Loss e Take Profit devem ser normalizados. Eu não procurei mais.
 

Eu me descuidei com a linha de tendência e aprendi como consegui-la. Mas acontece que os objetos gráficos não funcionam durante a otimização no testador.

O que eu devo fazer? Vale a pena colocá-lo em um indicador?

Buffer[i]= ObjectGetValueByTime(chart_ID,name,Time[1],sub_window);

A otimização funcionará de tal forma?

 
artmedia70:
Eu tenho que ir - não tenho tempo. Em resumo - se uma variável é int, por que você a verifica como bool? Os valores de Stop Loss e Take Profit devem ser normalizados. Eu não procurei mais.

Bem, estou completamente confuso: OrdBuy_1( ) é a função que abre a BAY nas condições #1 acima desta função. Apenas provavelmente o tipo correto é o dobro e não o int, pois devolve o preço de abertura do pedido. E, pelo que entendi, não o inseri em nenhuma função; ele é colocado separadamente, após int start(), extraindo os valores de todos os indicadores necessários e analisando a situação atual do mercado (estou errado?).

E como normalizar a parada e tomar, ou melhor ainda, como não fixá-las de modo algum?

E eu não entendo sobre o cheque. Devo ter entendido mal o tutorial - "bool OrderClose (int ticket, double lots, double price, int slippage, color Color=CLR_NONE)Função para fechar uma ordem de mercado". O que é um cheque?

De qualquer forma, quanto mais avançamos, mais idiota ele fica :(.

 
Forexman77:

Eu me descuidei com a linha de tendência e aprendi como consegui-la. Mas acontece que os objetos gráficos não funcionam durante a otimização no testador.

O que eu devo fazer? Vale a pena colocá-lo em um indicador?

Será que a otimização funcionará desta forma?

Calcular uma linha virtual em vez da linha real.
 
Forexman77:

Eu me descuidei com a linha de tendência e aprendi como consegui-la. Mas acontece que os objetos gráficos não funcionam durante a otimização no testador.

O que eu devo fazer? Vale a pena colocá-lo em um indicador?

A otimização funcionará de tal forma?

Não, não vai. Os gráficos são exibidos apenas no modo de visualização.
Razão: