Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 71
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Muito bem, vamos fazer isto.
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
orders[count1].Ticket=OrderTicket();
orders[count1].lot=OrderLots();
orders[count1].orderopenprice=OrderOpenPrice();
orders[count1].ordertype=OrderType();
orders[count1].profit=OrderProfit();
orders[count1].stoploss=OrderStopLoss();
count1++;
}
certo?
Você também precisa de parênteses encaracolados, caso contrário, somente a primeira linha após() funcionará. Você tem muitos parênteses onde não precisa deles, e depois não há parênteses onde você precisa deles. Isto quebra a lógica do programa, às vezes muito. E o balcão não tem que ser global, mas não é tão importante.
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()
&& OrderMagicNumber()==Magic && OrderType()<2)
{
orders[count1].Ticket=OrderTicket();
orders[count1].lot=OrderLots();
orders[count1].orderopenprice=OrderOpenPrice();
orders[count1].ordertype=OrderType();
orders[count1].profit=OrderProfit();
orders[count1].stoploss=OrderStopLoss();
count1++;
}
}
Ajude-me a escrever a condição: Se a quantidade de fundos disponíveis na conta for inferior a 50% do depósito, então {ação} MT5
De que depósito? Inicial? Ou a partir do equilíbrio atual?
Se comparado com o saldo, então é assim:
Eu pensei que ele queria um mt5.
Tenho uma boa idéia de como levar o contador até o início do ontik e depois trabalhar com isso.
Agora, como posso tirar algo disso no meu caso?
e, além disso, se a matriz for bidimensional e mais (há uma diferença na escrita e na extração)
podemos falar um pouco sobre este ponto?Muito bem, vamos fazer isto.
{
int Ticket;
double orderopenprice;
int ordertype;
double profit;
double stoploss;
double lot;
};
myorder orders[];
int i;
int count1=0;
void CalcOrders()
{
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
orders[count1].Ticket=OrderTicket();
orders[count1].lot=OrderLots();
orders[count1].orderopenprice=OrderOpenPrice();
orders[count1].ordertype=OrderType();
orders[count1].profit=OrderProfit();
orders[count1].stoploss=OrderStopLoss();
count1++;
}
}
certo?
Não, não está certo.
Suas ordens de array[] tem valor zero. Onde você vai escrever os dados? Em uma matriz com tamanho zero? De jeito nenhum. Você deve incrementar o tamanho da matriz pela contagem1+1 - se você incrementar o contador após escrever para a matriz. Normalmente, o contador é incrementado antes de escrever, depois você aumenta o tamanho da matriz pelo tamanho do contador, e então você escreve os valores pelo índice [contagem1-1]. E, como foi corretamente observado acima - você precisa incluir todas as outras ações entre parênteses curvos após verificar as condições.
Por que você está tentando fazer algo sem conhecimentos e idéias elementares? Apenas "para dar sorte"?
Não, não é.
Suas ordens de array[] tem valor zero. Onde você vai escrever os dados? Em uma matriz com tamanho zero? De jeito nenhum. Você deve incrementar o tamanho da matriz pela contagem1+1 - se você incrementar o contador após escrever para a matriz. Normalmente, o contador é incrementado antes de escrever, depois você aumenta o tamanho da matriz pelo tamanho do contador, e então você escreve os valores pelo índice [contagem1-1]. E, como foi corretamente observado acima - você precisa colocar todas as outras ações entre parênteses curvos após verificar as condições.
Por que você está tentando fazer algo sem conhecimentos e idéias elementares? Apenas "para dar sorte"?
Não vamos atirar pintos podres e ovos podres à capacidade de alguém aprender. Sua proposta para resolver meu problema foi através da forma de construção de uma série de estruturas. Abri livros didáticos e colei juntos como pude entender, e joguei o código aqui para revisão pública para avaliar quão correto tudo isso é. Você não acha que eu vou fazer uma variante ideal de uma só vez, acha?
Devo ser desencorajado de ajudar depois de uma fantasia tão violenta. Eu lhe imploro uma última vez: anote o algoritmo em um pedaço de papel e revise-o com um lápis algumas vezes. Anote os valores e o tamanho da matriz - o que e onde será escrito a cada iteração do laço. Não procure por peças de código que você acha que se encaixam.
Artyom, isso é compreensível, mas eu também posso ser compreendido neste caso. Nada funciona e não vai funcionar na versão atual. Tenho escrito por várias páginas sobre a necessidade do próprio comando para puxar o elemento necessário da matriz dada e que não tenho idéia de como deve ser escrito para este caso em particular, por exemplo, o stop loss para a 5ª ordem.
Quanto ao lápis e à folha - o bot já está pronto há um mês e cai perfeitamente em qualquer instrumento, eu só quero modificá-lo adicionando um ramo de média irregular.
Artyom, isso é compreensível, mas eu também posso ser compreendido neste caso. Nada funciona e não funcionará na variante atual. Tenho escrito durante várias páginas sobre a necessidade de o próprio comando puxar o elemento requerido desta matriz e que não tenho idéia de como ele é escrito para este caso em particular, por exemplo, stoploss para a 5ª ordem.
Não tenho idéia de como escrevê-lo para este caso em particular, por exemplo, para a 5ª encomenda.
Não existe tal comando. Você precisa fazer o seu próprio. Isto é - uma função.
OK, então, como eu entendo, temos três funções personalizadas diferentes com o retorno da função certa (se procurarmos três parâmetros diferentes)
ArraySort
então
ArrayBsearch pelo número certo
e então como eu lido com isso?
Exatamente a transição de uma matriz para um elemento de estrutura