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 746

 
AlexeyVik:

Ah, e há outra coisa que não entendo. Se N é a data, então D' 19:00 ' é o formato de texto. Eles podem ser comparados? Não. Em casos de comparações de tempo eu escrevo

D'19:00' é uma constante literal do tipo data/hora.
 

Quero perguntar-lhes, caros programadores, por favor, expliquem-me em russo como pesquisar leituras de indicadores anteriores com o código. Por exemplo, ao vender preciso colocar 3 ZigZag alto da barra zero, ou sobre o oitavo fractal superior. onde quer que eu leia - ou não é isso, ou escrito não é assim :)

 
Petiyashaket:

Quero perguntar-lhes, caros programadores, por favor, expliquem-me em russo como pesquisar leituras de indicadores anteriores com o código. Por exemplo, ao vender eu preciso colocar 3 ZigZag alto da barra zero, ou sobre o oitavo fractal superior. onde quer que eu leia - ou não é isso, ou escrito não é assim :)

O loop desde a barra de zero até o início do gráfico, int x=0. No loop, chame o indicador requerido, por exemplo, fractal. Se o valor não estiver vazio, adicione 1 a x, quando x atingir o valor desejado - memorize a iteração do loop e saia do loop, o valor da iteração será teoricamente o número da barra onde o fractal desejado está localizado. Teoricamente porque enquanto o ciclo está em execução, mais uma barra pode aparecer na M1 e então o ponteiro será mostrado a uma barra errada ))))
 
evillive:
Ciclo desde a barra zero até o início do gráfico, int x=0. No ciclo, chamar o indicador requerido, por exemplo, fractal. Se o valor não estiver vazio, adicione 1 a x, quando x atingir o valor requerido - lembre-se da iteração do laço e saia do laço, o valor da iteração será teoricamente o número da barra onde o fractal requerido está localizado. Teoricamente, porque quando o laço está funcionando, uma nova barra pode aparecer na M1 e então o ponteiro será mostrado para uma barra errada))))
O tempo deve ser poupado. Ou, melhor ainda, use a matriz onde o tempo de formação dos últimos fractais é armazenado. A velocidade de trabalho será reduzida devido à eliminação de malhas desnecessárias
 
Petiyashaket:

Por favor, me explique em russo como pesquisar as leituras dos indicadores anteriores no código? Por exemplo, preciso colocar na venda 3 ZigZag alto da barra zero, ou o oitavo fractal superior, onde quer que eu leia - ou não algo, ou não escrito :)

"linguagem russa" e "linguagem de programação" (quer uma explicação de código) não são a mesma coisa.

Algoritmicamente:

1) Definir que valor o ZigZag de juros retorna, se não tiver "ponto fractal" - pode ser EMPTY_VALUE ou 0,0.

2) Usando iCustom() no laço, obtenha o valor do indicador de buffer correspondente na barra que está sendo verificada no laço, verifique a diferença em relação ao "valor vazio" e mantenha um contador dessas diferenças. Quando o contador for igual a 3 no seu caso - o número (N) da barra será a barra desejada;

3) Alto[N] - será o nível exigido.

Para a Alta ZigZag padrão, estamos procurando algo assim:

#define  ZZ_NULL  0.0

    uint li_N = 0, li_Bar = 1;
    double ld_ZZ = 0.;
//----
    while (li_Bar < Bars - 1)
    {
        ld_ZZ = iCustom (_Symbol, _Period, "ZigZag", /* внешние параметры индикатора */, 1, li_Bar);
        if (ld_ZZ != ZZ_NULL)
        {
            li_N++;
            if (li_N >= 3) break;
        }
        li_Bar++;
    }
    double ld_Price = High[li_Bar];

Mas antes disso, temos que mudar o número de buffers exibidos em código ZigZag de 1 para 3:

#property indicator_buffers 3
 

Obrigado pelas respostas, vou voltar a elas :) agora o problema é

http://clip2net.com/s/j7xvk9

Não consigo entender porque não modifica o pedido, mas apenas abre novas ordens pendentes

 
Petiyashaket:

Obrigado pelas respostas, vou voltar a elas :) agora o problema é

http://clip2net.com/s/j7xvk9

Não consigo entender porque não modifica o pedido, mas apenas abre novas ordens pendentes

 
evillive: Obrigado por mostrar :)
  double Up=iFractals(Symbol(),0,MODE_UPPER,3);           //верхний фрактал
  double Down=iFractals(Symbol(),0,MODE_LOWER,3);         //нижний фрактал
//----
  if(Up>0&&Down==0&&Volume[0]<2) //если верхний есть а нижнего нет то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если цена позволяет выставить отложенный ордер то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {
        for (int pos=0;pos<OrdersTotal();pos++) //     скопировал эту строчку хз откуда ибо не понимаю грёбаный счетчик :) тут видимо и косяк
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); // ищем текущие ордера
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)// и если все условия совпадают то:
          {
          OrderModify(OrderTicket(),Up+5*Point,Up-sl,Up+tp,0,CLR_NONE);//переносим байстоп на новый верхний фрактал
          }


 
Petiyashaket:
Obrigado por mostrar :)
Do que está reclamando no registro de modificação? "Estupidamente abre novas ordens pendentes" porque não há limite, mas há um OrderSend.
 
Petiyashaket:

1) Qualquer estratégia deve ser definida pelo número de ordens abertas ao mesmo tempo. Assim, antes de abrir o próximo pedido, devemos verificar quantos já estão abertos.

2) Em uma barra, não pode haver UPPER e LOWER fractals ao mesmo tempo, respectivamente, o cheque é classificado como

    if (Up > 0 && Down == 0)

pertence à categoria de idiotice do programador.

3) Antes de escrever as condições para o retorno dos valores indicadores de retorno, você precisa saber exatamente qual valor está "vazio" para ele? Você já verificou que é 0?

4) A construção.

    if (Volume[0] > 2)

Embora funcione (na maioria dos casos), mas não é natural, porque é uma idéia de "livre arbítrio" do desenvolvedor, e não é informativa para o comerciante. Uma alternativa - o rastreamento de um novo bar.

5) Você tem que partir do básico, porque isto:

    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {

Indica que você não entende nada do que está escrevendo.

A melhor maneira de entender é estudar como funcionam os códigos de outras pessoas e modificá-los para seus próprios propósitos. Boa sorte.