[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 171

 

Há um indicador, Sanyok é o autor.

Ele marca o nível de um fractal formado em uma barra com um volume maior do que o volume médio das últimas 3 barras antes do fractal.

como carregá-lo em um EA ?

Eu estou tentando:

h=NormalizeDuplo(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Dígitos);

l=NormalizeDuplo(iCustom(NULL,0, "vfractals",MODE_LOWER, 1),Dígitos);

não funciona.

Arquivos anexados:
vfractals.mq4  4 kb
 
NormalizeDuplo(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Dígitos); 1. MODE_UPPER e MODE_LOWER significa que você tira valores do primeiro e segundo buffers indicadores (você tem zero e primeiro) 2. Número 1 significa que você toma o valor de [1]-ésimo elemento (na última barra)
 
ilunga:
NormalizeDuplo(iCustom(NULL,0, "vfractals",MODE_UPPER, 1),Dígitos); 1. MODE_UPPER e MODE_LOWER significa que você tira valores do primeiro e segundo buffers indicadores (você tem zero e primeiro) 2. Número 1 significa que o valor de [1]-ésimo elemento é tomado (na barra anterior)

Obrigado.
 

Movido.

Pavel447 02.03.2011 10:57
Como você faz!
Se você tem um Expert Advisor (ou roteiro) que automaticamente define SL, TP, Trailing Stop, e transfere para BU sobre a tomada de lucro ...?
Agradecemos antecipadamente).

 
Movido.
dimeon 02.03.2011 11:41
sammi61:

Ajude-me a adicionar um lote dinâmico ao código do Expert Advisor, para que o lote aumente com o aumento do depósito, ou como uma porcentagem do depósito?
Se o lote for 0, então o lote automático está habilitado, se for um valor, então o lote é fixo
Arquivos anexos:
FiboWave_v1_1lavtolot.mq4 (9.26 KB) removido
 
artmedia70:
As matrizes podem ser usadas em tantos casos e para tantas tarefas diferentes. Então, qual é o exemplo certo?
  if (Cls_B[i]||Cls_S[i]) LotCt=NormalizeLot(OrderLots()/(4-i)); 
como escrever [i] ? Parece que a declaro como uma variável..., ela dá um erro de compilação. Eu não entendo ... É pedir um valor inteiro, mas um array também pode ser declarado como uma variável?!
 

100yan:
как прописать [i] ?

Ele pede um valor inteiro, mas uma matriz também pode ser declarada como variável?!

Seja mais específico.

uma matriz é uma variável com o mesmo nome, mas um número diferente

 
100yan:
como escrever [i] ? Parece que a declaro como uma variável..., ela dá um erro de compilação. Eu não entendo ... Ele pede um valor inteiro, mas um array também pode ser declarado como uma variável ?!
Qualquer construção entre parênteses [] deve ter o tipo de dados int.
 

Você pode me dizer qual é o significado dessa porcaria nos troncos? Como posso evitá-lo? O Expert Advisor negocia com este indicador, após um erro o comércio congela até que você reinicie o terminal, pois reiniciar o Expert Advisor pode travar novamente.

22:39:53 +ZigZag_Levels CLJ1,M5: uninit reason 3
22:39:53 Zigzag CLJ1,M5: razão uninit 1

22:39:53 Zigzag CLJ1,M5: removido

Talvez seja porque estou usando o terminal em um servidor remoto e em meu próprio computador ao mesmo tempo?

 
todem:

Olá a todos! Tenho uma pergunta: nesta função para duas posições (comprar e vender) eu estabeleço um stop-loss para que para vender SL=open buy+18 pips, e vice versa para comprar:

бла-бла-бла...

Os preços de abertura de posições opostas são obtidos a partir da função:

бла-бла-бла...

Conhecemos a função ModifyOrder como uma função padrão do KIMIW, usamo-la para definir os stoplosses calculados...

A questão é: a EA define os prejuízos apenas para uma Venda e não para uma Compra. Quem pensa assim?


void SimpleLock(string sy="", int mn=-1) {
  double po, pp, ops1=0, ops2=0, opb;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<=k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        po=MarketInfo(OrderSymbol(), MODE_POINT);
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_SELL) {
            opb=OrderStopLoss();                            // Значение стопа позиции до модификации = (0???)
            ops2=NormalizeDouble(OrderPrice(OP_BUY),Digits);
            if (ops2>0 && opb!=0) {
                ModifyOrder(-1, ops2+18*po, -1);
              }
            
          }
          if (OrderType()==OP_BUY) {
            opb=OrderStopLoss();
            ops1=NormalizeDouble(OrderPrice(OP_SELL),Digits);
            if (ops1>0 && opb!=0) {
                ModifyOrder(-1, ops1-18*po, -1);
              }
            
          }
        }
      }
    }
  }
}

Se a parada não estiver definida, a modificação não é chamada...

Se você não definir a parada-perda por muito tempo, então a modificação não é chamada..:

double OrderPrice(int type) {
   double price;
   int i, k=OrdersTotal();
      
      for (i=0; i<k; i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==type) {
            price=OrderOpenPrice();  // Значение цены открытия в списке ордеров терминала позиции с типом type и индексом i
            }
         }
      }
   return(price);  // Возвращает цену открытия последней в списке ордеров позиции с типом type и индексом не более k-1
}

Você tem certeza de que o preço de abertura do pedido solicitado é devolvido?