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 114

 
MarkTrade:

Peço desculpas, explique qual é o erro aqui. Eu não consigo entender.


for (i=0;i>5<==ошибка;i++)
 
MarkTrade:

Peço desculpas, explique qual é o erro aqui. Eu não consigo entender.

Vamos quebrar o fio.

for (i=0;i<5;i++)

Que eu varie de zero a cinco. Após cada iteração, o contador aumentará em um. As iterações serão calculadas até que eu tenha menos de cinco anos. Ou seja, o loop funcionará e passará por cinco iterações: 0, 1, 2, 3, 4 - estes são valores do contador i loop. Quando eu for igual a cinco, o loop terminará

Vamos ver o que você tem:

for (i=0;i>5;i++)

Você tem o i contraposto inicializado com zero, mas as iterações do laço devem funcionar desde que o i seja maior que cinco. E não é, inicialmente, maior do que cinco. Portanto, o laço não começa.

 
artmedia70:

Vamos quebrar o fio

Que eu varie de zero a cinco. Após cada iteração, o contador aumentará em um. As iterações serão calculadas até que eu tenha menos de cinco anos. Ou seja, o loop funcionará e passará por cinco iterações: 0, 1, 2, 3, 4 - estes são valores do contador i loop. Quando eu for igual a cinco, o loop terminará

Vamos ver o que você tem:

Você tem o i contraposto inicializado com zero, mas as iterações do laço devem ocorrer desde que o i seja maior que cinco. E não é, inicialmente, maior do que cinco. Portanto, o laço não começa.



Ah, certo! Obrigado! Eu devo ter tido um olho negro.
 
K-o-t:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Cavalheiros programadores, favor aconselhar como combinar uma EA com um indicador?

Por exemplo, peguei um simples bot mo_bidir.mq4 que negocia usando seu próprio algoritmo e quero que ele abra negócios usando seu próprio algoritmo, mas depois de 3 sinais de MA

Por exemplo nosinal - Três Médias em Movimento:

FastEMA>MediumEMA>SlowEMA (tendência acima) - bot compra

FastEMA<MediumEMA<SlowEMA (tendência down) - bot vende

Inp_Signal_ThreeEMA_FastPeriod = 8;

Inp_Signal_ThreeEMA_MediumPeriod = 38;

Inp_Signal_ThreeEMA_SlowPeriod= 48;

Quero que meu consultor especializado opere com um prazo de 5 minutos e que o indicador dê sinais diários ou de 4 horas, e quero poder mudar os prazos nas configurações do bot.

\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Peço desculpas pela repetição, mas ao menos me diga em que tópico do fórum devo aplicar, ou devo criar um novo tópico?

Eu não sei o que fazer.


O que você quer fazer é chamado de filtragem. Portanto, faça uma pesquisa sobre a palavra "filtro", olhe alguns EAs com filtragem e veja se você pode fazer o que precisa.
 
artmedia70:

Estou ficando um pouco confuso... :) Um problema:

1. Há uma posição aberta de 0,1 lote

2. Seu valor TakeProfit é de 50 pips.

3. Calculo seu lucro potencial de acordo com a fórmula PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Do cálculo recebo o lucro potencial de $5,00 (0,1*50*1,0).

A posição vai no vermelho e em algum momento mais uma compra em média abre, mas com 0,2 lote

1. Calculo o Breakeven para estas duas posições. A função tem sido usada há muito tempo, como requerido, e não tenho nenhuma reclamação até agora:

2. Perfeito. Você calculou o nível de breakeven, mas... se você colocar as fichas dessas duas posições, elas fecharão em zero. Está bem, eu acho. Agora preciso somar a este nível da BU tantos pontos quantos forem necessários para obter um lucro total, igual ao previamente calculado - $5.

3. e aqui é onde eu tenho um bloqueio no meu cérebro. O que faço: Tomo $5, divido pelo lote total destas duas posições (0,1 + 0,2 = 0,3), multiplicado pelo TICK_VALUE

Eu tenho 5/(0,3*1,0) = 16,6666 Depois multiplico por Ponto (0,00016) e adiciono ao preço Breakeven.

4. Perfeito. Os gastos são transferidos para lá, mas me parece que o lucro total de dois Baisers fechando neste nível não é igual a US$ 5 - me parece menos. Isto pode ser visto no gráfico de testes. Mostra claramente que quando uma posição fecha, o aumento do saldo é muito maior do que quando múltiplas posições são fechadas no nível de tomada total calculado (você pode ver estes lugares no gráfico pela aparência da linha de equidade sobre eles). Gráfico:


Onde eu estou errado?

Eu entendo que você pode imprimir o lucro total, mas... Quero entender onde posso estar errado em meus cálculos, não o valor das variáveis. Eu já os imprimi.

( 0.3 * 16 = 4.8 ) < ( 0.3 * 16.66666 = 5 )
Não sei se esta é a diferença que você tinha em mente, mas devido ao arredondamento de 16,6666, o lucro será naturalmente menor do que os 5 dólares que você planejou obter.
 
artmedia70:

Estou ficando um pouco cheio de mim mesmo... :) O problema:

1. Há uma posição aberta de 0,1 lote

2. Seu valor TakeProfit é de 50 pips.

3. Calculo seu lucro potencial de acordo com a fórmula PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Do cálculo recebo o lucro potencial de $5,00 (0,1*50*1,0).

A posição vai no vermelho e em algum momento mais uma compra em média abre, mas com 0,2 lote

1. Calculo o Breakeven para estas duas posições. A função tem sido usada há muito tempo, como requerido, e não tenho nenhuma reclamação até agora:

2. Perfeito. Você calculou o nível de breakeven, mas... se você colocar as fichas dessas duas posições, elas fecharão em zero. Está bem, eu acho. Agora preciso somar a este nível da BU tantos pontos quantos forem necessários para obter um lucro total, igual ao previamente calculado - $5.

3. e aqui é onde eu tenho um bloqueio no meu cérebro. O que faço: Tomo $5, divido pelo lote total destas duas posições (0,1 + 0,2 = 0,3), multiplicado pelo TICK_VALUE

Eu tenho 5/(0,3*1,0) = 16,6666 Depois multiplico por Ponto (0,00016) e adiciono ao preço Breakeven.

4. Perfeito. As receitas são transferidas para lá, mas me parece que o lucro total de dois Baisers fechando neste nível não é igual a US$ 5 - me parece menos. Isto pode ser visto no gráfico de testes. Mostra claramente que quando uma posição fecha, o aumento do saldo é muito maior do que quando múltiplas posições são fechadas no nível de tomada total calculado (você pode ver estes lugares no gráfico pela aparência da linha de equidade sobre eles). A tabela:


Onde eu estou errado?

Eu entendo que você pode imprimir o lucro total, mas... Quero entender onde posso estar errado em meus cálculos, não o valor das variáveis. Eu já os imprimi.

Não entendo por que tem que ser tão complicado.
Isso não facilitaria as coisas?

  double sumprofit=0;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
 

ou como este

double sumprofit;
  for (int i=0; i<OrdersTotal(); i++) 
      {
       if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
          {
           if ((OrderSymbol()==Symbol()) 
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
                  {
                    sumprofit+=OrderProfit()+OrderCommission()+OrderSwap();
                  }
             }
         }
      }
  if(sumprofit > 5) AllPosClose();//5 ----> суммарный профит позиций
  if(sumprofit < -5) Dolivka();//  определенным лотом Sell или Buy
 
Por favor, avise-me, eu não sou um programador - onde no terminal estão os indicadores baixados (como vê-los e executá-los). ??? Eu os baixei e instalei, mas não consigo encontrá-los no próprio terminal?
 
fox6900:
Por favor, avise-me, eu não sou um programador - onde no terminal estão os indicadores baixados (como vê-los e executá-los). ??? Eu os baixei e instalei, mas não consigo encontrá-los no próprio terminal?

como você os instalou? Diga-nos como... talvez tenhamos uma pista...
 
O AccountNumber( ) pode ser lido a partir da dll e como? Ao menos me dê uma dica de onde cavar. Quero dizer sem passar o valor da função para a dll, ou seja, a partir da própria biblioteca dinâmica.