[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 113

 
r772ra:

Ciclo através das posições

Muito obrigado, vou tentar tudo agora! Obrigado!
 
r772ra:

Ciclo através das posições

Experimentei, não funcionou. Portanto, sim, eu posso encontrá-lo. Mas o problema é que eu fico com a seguinte situação:

Por exemplo, em 01.01 eu abri uma posição, mas a condição desencadeada somente em 02.01. Ou seja, a partir do preço de abertura da ordem no lado negativo, o preço passou de 50 pips no segundo dia. Se a condição for cumprida, a ação será executada. E a ação é reduzir o comércio em 1/3, ou seja, reduzir o volume do comércio em um fator de três. Mas a ação funcionará até que o lote seja completamente fechado. Podemos colocar alguma bandeira. Se b=0, então a ação está em vigor. E ao final da ação b=1. Se não anularmos a bandeira no final do dia, a troca será executada uma vez e é isso quando a testamos pela história. Se zerarmos a bandeira, então assim que a bandeira for zerada, a ação começará novamente a reduzir os pedidos até fechá-la completamente. Pensei que seria possível comparar o volume do comércio inicialmente aberto e depois alterado, mas eles serão sempre os mesmos na comparação. Se diminuirmos o volume do lote, o volume de fundos na conta também diminuirá, portanto, o volume inicial será recalculado. Isto é, também não é isso, penso que para o terceiro dia. Não tenho nenhuma pista, você tem alguma outra idéia?

 
Boneshapper:

Boa tarde!

Prezados profissionais, por favor, me aconselhem.

Se o preço exceder em 50 pips o preço aberto deste pedido, o pedido terá que ser modificado.

OrderSelect(0, SELECT_BY_POS,MODE_TRADES);

duplo OPEN = OrderOpenPrice();
duplo máximo = OPEN + 0,00500;
Alerta ("maximus = ",maximus);
duplo mínimo = OPEN - 0,00500;
RefreshRates();//refazer dados.
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS); //Calcule a hora atual no formato HH:MM.
if ((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
Lootup = OrderLots () * 0,34;
Lootdown = OrderLots () * 0,34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE);
Alerta (GetLastError());
Deal_bb = 1;
}

Se isso acontecer durante o dia, eu sou capaz de fazê-lo. Diga-me, como verificar se o preço de abertura + 50 P é controlado pelo preço de cada lote, até que seja fechado no dia seguinte?

Você cronometra um fio e depois mede por cordas - original!!!!
Não há necessidade de inventar nada: primeiro você verifica a resolução do tempo e, em seguida, apenas os pedidos em atraso. Soluções comprovadas para ambos podem ser encontradas aqui e aqui.

 
Boneshapper:

Experimentei, não funcionou. Funciona, mas o problema é: não consigo encontrá-lo. Mas o problema é que eu fico com a seguinte situação:

Por exemplo, 01.01 eu abri um negócio, mas a condição é acionada apenas 02.01. Ou seja, a partir do preço de abertura do mandado no lado negativo o preço passou de 50 pips no segundo dia. Se a condição for cumprida, a ação será executada. E a ação é reduzir o comércio em 1/3, ou seja, reduzir o volume do comércio em um fator de três. Mas a ação funcionará até que o lote seja completamente fechado. Podemos colocar alguma bandeira. Se b=0, então há uma ação. E ao final da ação b=1. Se não anularmos a bandeira no final do dia, a troca será executada uma vez e é isso quando a testamos pela história. Se zerarmos a bandeira, então assim que a bandeira for zerada, a ação começará novamente a reduzir os pedidos até fechá-la completamente. Pensei que seria possível comparar o volume do comércio inicialmente aberto e depois alterado, mas eles serão sempre os mesmos na comparação. Se diminuirmos o volume do lote, o volume de fundos na conta também diminuirá, portanto, o volume inicial será recalculado. Isto é, também não é isso, penso que para o terceiro dia. Não tenho nenhuma pista, você tem alguma outra idéia?

O que os dias têm a ver com isso? Basta escrever o que você quer, e você será avisado sobre o algoritmo. Parece-me que você não deve verificar os dias, mas verificar o lucro/perda do pedido e, em seguida, tirar sua escolha. 50 (ou o que for) gratificações são importantes para você...

 
TarasBY:

Você coloca o tempo em um fio, e depois o mede com cordas - isso é original!
Você não precisa inventar nada: primeiro você verifica a resolução do tempo, e depois simplesmente segue os pedidos. Soluções comprovadas para ambos podem ser encontradas aqui e aqui.

Muito obrigado por sua resposta, você me deu um link para exatamente o que eu preciso. Vou tentar agora, mas acho que vai funcionar.

Sinto muito pelos erros, mas sou novo em programação e ainda não sou muito bom nisso.

 
artmedia70:

O que os dias têm a ver com qualquer coisa? Basta anotar o que você quer e eles lhe dirão o algoritmo. Parece-me que você não deve verificar os dias, mas verificar o lucro/perda de um pedido e depender dele, porque 50 (ou qualquer outro) pontos são importantes para você...

Sim, você está certo. Meu lucro/perda é no que estou confiando. TarasBY apontou exatamente o que eu precisava. Vou dar uma olhada agora.

Obrigado por sua atenção amável!

 

Você pode me dizer se existe uma função kim para procurar fractais?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Como escrever a mesma função que conta o número de fractais em um determinado período?
 
berezhnuy:

Você pode me dizer se existe uma função kim para encontrar fractais?

Como escrever a mesma função que conta o número de fractais em um determinado período?

É mais ou menos assim:

void fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                            int fi_TF,                  // таймфрейм
                            datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                            int fi_ExtDepth = 12,       // ExtDepth         
                            int fi_ExtDeviation = 5,    // ExtDeviation
                            int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//---- 
}

Os extremos do ZigZag do tempo atual até o Time_Control são coletados em uma matriz.

 
Você pode sugerir uma função para verificar o novo fractal ou o antigo?
 
berezhnuy:
Você pode sugerir uma função para verificar o novo fractal ou o antigo?

Aqui, fui ao tópico "Funções úteis" e trouxe "em uma bandeja de prata":

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 07.10.2006                                                      |
//| Описание : Поиск ближайшего фрактала.                                      |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента     (NULL - текущий символ)                |
//|   tf - таймфрейм                    (  0  - текущий ТФ)                    |
//|   mode - тип фрактала               (MODE_LOWER|MODE_UPPER)                |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
Viva e use-o com boa saúde! Existem de todos os tipos! Não é preciso pedir, não é preciso esperar, basta pegá-lo e usá-lo!
Razão: