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 404

 
fenix74:
malvado vivo, tentou substituir como você disse, mas acho que mesmo isto requer um pouco mais de conhecimento, compilando dá "53 erro(s), 18 aviso(s)", o resultado é anexado. mal vivo, posso pedir-lhe que faça estas substituições, se você tiver tempo.

Basta estar mais atento, ou não ser preguiçoso para especificar o tipo de variável em cada linha, ou colocar uma vírgula em vez de um ponto-e-vírgula. E nas chamadas indicadoras devem ser definidas variáveis, não apenas a partir de uma tocha.


Aqui está um exemplo, e então - por conta própria...

Embora o segundo arquivo pareça estar bem, exceto por um ponto em um nome variável. Sem pontos em nomes variáveis.

Arquivos anexados:
 
Vinin:
Apenas quatro funções são acessadas pelo servidor. Abertura, modificação e fechamento (exclusão) de um pedido
artmedia70:
Funções comerciais. Eles são os únicos que enviam um pedido especificamente para o servidor comercial e recebem uma resposta do mesmo.

Obrigado.

 
Roger:
O usuário pode classificar o histórico apenas para percepção visual, os números de posição no histórico não podem ser alterados.


Como você pode dizer se uma estratégia é lucrativa ou não lucrativa com base nos indicadores?
 
khorosh:

E se você for desmontar a função, não deve ter cortado o cabeçalho da função, há ali informações importantes.

Retorna o tipo da última posição aberta ou -1 - isto significa que se não houver posições fechadas, então quando a função é chamada, seu valor será igual a -1

sy - nome do instrumento (par de moedas)

mn - número mágico. Se definirmos -1, a função retornará o tipo da última ordem fechada, não importa o número mágico utilizado

Saiba isso também, exceto pelo recurso de "número mágico".
Obrigado por fornecer orientações úteis.
Não há necessidade de truncar a descrição das variáveis.

artmedia70:

1. Vamos dispensar o sarcasmo, ok? Ele tornou seu aprendizado fácil e conveniente. O que o gênio tem a ver com isso?
2. Argumentativo.
3. Você não entende nada, a julgar por seus comentários no código.
4. Isso acontece.

Em relação ao item 2, aqui está um exemplo:

Há menos coisas desnecessárias.

1 - não houve sarcasmo! A genialidade reside no fato de que isso tornou meu aprendizado confortável e fácil.
2 - tantas pessoas quantas opiniões existam. :)
3 - ainda é compreensível. Não esclareci a finalidade executável da variável, o que fez com que esta opinião aparecesse.

Obrigado pela descrição detalhada da ação das cordas da função, eu me certifiquei da minha compreensão da função apresentada.

Por favor, note que agora estávamos envolvidos em uma conversa virtual sobre quatro tópicos simultaneamente. É muito vantajoso colocar suas respostas na Internet ponto por ponto, mas algumas pessoas consideram isso como um insulto, desculpe.

A propósito, dirigir-se a mim como "você", pois minha idade não permite que eu me dirija como "você" (uma opinião formada em relação ao curso de estudos sociais do nono ano).
khorosh:

1 - Seus exemplos não são corretos. 2 - Quando você chama uma função que tem parâmetros, você deve dar os valores desses parâmetros entre parênteses, separados por vírgulas. Você também deve estar ciente de que nem todas as funções são valores atribuídos. 3 - Se o tipo de função é nula, então não tem significado e se destina a realizar alguma ação, ou a calcular algumas variáveis. Neste último caso, você precisa conhecer os nomes destas variáveis para poder utilizar os resultados desta função.

Desculpe-me, a resposta está dividida em parágrafos.
1 - meus exemplos são incorretos - isto é uma conseqüência de minha ignorância.
2 - Eu esqueci completamente os parênteses. Obrigado. Eles me lembraram deles.
3 - nulo ? É possível utilizá-lo em vez do bool ao contar por ações (*, /, +, - )?


artmedia70:

O compilador irá gerar um erro nesta linha dizendo que a variável não é declarada.

O requisito mínimo é este:


Sim, sim! Esqueci os parênteses, mas fui lembrado, obrigado de qualquer forma!
 
Profitov:

Como você pode dizer a partir da história que a estratégia é lucrativa ou deficitária, com base em leituras de indicadores?

Os indicadores utilizam preços fechados/abertos e altos/mínimos de barras para os cálculos.
Os valores dos preços de fechamento/abertura e dos máximos/mínimos de barras são armazenados no histórico.
Então, os indicadores obtêm valores de preços fechados/abertos, máximos/mínimos de barras a partir do histórico,
indicador correspondente faz cálculos a partir do histórico.
pode-se concluir que se a estratégia é baseada em indicações de indicadores, pode-se verificar se é lucrativa ou não lucrativa usando dados históricos.

Vinin:

Você deve primeiro se familiarizar com o conceito de uma função. E então você pode passar para o que eles fazem e como usá-los.

Familiarizado com as três interpretações da palavra "função".
 
Link_x:


3 - nulo ? É possível utilizá-lo em vez de bool quando se conta por ações (*, /, +, - )?

Eu não entendo a pergunta. A documentação dá um exemplo de uma função do tipo void que imprime o nome do erro:

void errmesg(string s)
  {
   Print("error: "+s);
  }
 

E talvez depois da terceira vez alguém ainda preste atenção ao meu pedido?

Escreveu uma função CAM, mas o testador dá erro 4051, ou seja, número impossível de lotes. Alguém tem uma opinião sobre isso?

double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble (((OrderOpenPrice()-Bid)*Point)*OrderLots()/TP,2); 
           if (Lot>0)
           {
              TotalLot= TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble (((Ask-OrderOpenPrice())*Point)*OrderLots()/TP,2);
           if (Lot>0)
           {
            TotalLot= TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
 
Trader7777:

E talvez depois da terceira vez alguém ainda preste atenção ao meu pedido?

Escreveu uma função CAM, mas o testador dá erro 4051, ou seja, número impossível de lotes. Alguém tem uma opinião sobre isso?


O preço precisa ser multiplicado por pontos?

(OrderOpenPrice()-Bid)*Point)
 
Trader7777:

E talvez a terceira vez que alguém ainda atenda ao meu pedido?

Eu escrevi a função pelo SAM, mas o testador dá erro 4051, ou seja, número impossível de lotes. Alguém tem uma opinião sobre isso????

 double Lot=0; double TotalLot=0;
if (Lot>0)
Observe o valor da variável que define o número de lotes quando uma posição é aberta.
Este valor é zero.
É impossível abrir uma posição com volume zero para negociação.



vadynik:


O preço precisa ser multiplicado por pontos?


Também é possível, o principal é escrever o código corretamente.
 
vadynik:


O preço precisa ser multiplicado pelos Pontos?


Vamos supor que comprei a 1,50.000 e o preço subiu para 1,49950. Se você não multiplicar por Pontos, ele sai 0,0005*0,1/100=0,0000005 não é suficiente


Se multiplicado, então 50*0,1/100= 0,05 é o valor correto.

Razão: