por exemplo, fio
bool neutral = OrderClosePrice() == OrderOpenPrice();
provavelmente devemos moldar a operação das condições algorítmicas como esta:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
e as outras duas condições na mesma veia
A propósito, o último acordo na história nem sempre é o último acordo no tempo.
por exemplo, linha
talvez devêssemos formar o trabalho de condições algorítmicas como esta:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
e as outras duas condições na mesma veia
mas ainda assim, certamente vou verificar e reescrever. Eu o informarei sobre o resultado.
Sim, removi a amostragem de tempo, mas ainda não funciona... Já usei este bloco antes em outros sistemas e funcionou perfeitamente nesta parte.
mas ainda assim, certamente vou verificar e reescrever. Eu o informarei sobre o resultado.
estas variáveis são reiniciadas em algum lugar?
ObchMin = ObchMin + SumPosOrder; // Подсчет общего минуса Minus++; //Подсчет отрицательных сделок Sdelok++; //Подсчет количества сделок
Talvez ir a partir do mapeado.
Vou remover a coleta de estatísticas desta função por enquanto, e menos geral e estatísticas em outra (função separada irá produzir)
Escrita por blocos.
Reunir estatísticas e calcular menos e mais (menos e mais são variáveis globais)
if(OrderSelect((OrdersHistoryTotal() - 1), SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol) { if(OrderTicket() != Tiket2) { bool profit1 = false; if(OrderClosePrice() > 0) { profit1 = true; } bool loss1 = false; if(OrderClosePrice() < 0) { loss1 = true; } SumPosOrder = OrderLots(); Tiket2 = OrderTicket(); Print(OrderCloseTime()); if(loss1) { ObchMin = ObchMin + SumPosOrder; Minus++; Sdelok++; } if(profit1) { ObchPlus = ObchPlus + (SumPosOrder * 0.8); } if(profit1 && ObchPlus < ObchMin) { Pobeda++; Sdelok++; } if(profit1 && ObchPlus > ObchMin) { ObchPlus = 0; ObchMin = 0; Pobeda++; Sdelok++; } }
Bloco 2 - seleção da variável n para cálculo (ou melhor, seleção) da taxa
int GetN() { int n = 0; for(int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol) { bool profit = false; if(OrderClosePrice() > 0) profit = true; bool loss = false; if(OrderClosePrice() < 0) loss = true; } if(loss) { n++; } if(n >= MartinSteps) { n = 0; break; } if(profit && ObchPlus < ObchMin) { n++; } if(profit && ObchPlus > ObchMin) { n = 0; break; } } Print(n); return n; } double SelectVolume(int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; } //+------------------------------------------------------------------+
Isto seria provavelmente correto...
Eu ainda não entendo a lógica.
Como assim?
bool profit = false; if(OrderClosePrice() > 0) profit = true; bool loss = false; if(OrderClosePrice() < 0) loss = true;
Como o preço de fechamento do pedido pode ser inferior a zero?
A ordem de compra tem lucro se o preço de fechamento for maior que o preço de abertura
aqui está a condição de um plus de compra (excluindo comissões e trocas):
OrderClosePrice() > OrderOpenPrice()Se for ao contrário, é um sinal de menos
A ordem de compra tem lucro se o preço de fechamento for maior que o preço de abertura
aqui está a condição de um plus de compra (excluindo comissões e trocas):
Se for ao contrário, é um sinal de menosComo estou escrevendo para opções binárias, tenho feito as coisas um pouco diferente:
if(OrderProfit() > 0)
Isto seria provavelmente correto?
Talvez ir a partir do mapeado.
Vou remover a coleta de estatísticas desta função por enquanto, e o total menos e estatísticas em outra (função separada que vou produzir)
Escrita por blocos
Acumulados menos e mais (menos e mais são variáveis globais)
Bloco 2 - seleção da variável n para cálculo (ou melhor, seleção) da taxa
Isto seria provavelmente correto...
Não quero interferir e ainda nem sequer olhei seu código e dicas...
double SelectVolume(int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; }
chamou minha atenção. A este respeito, uma pergunta: não é mais fácil e mais legível usar o interruptor operador
double SelectVolume(int n) { double Volume = 0.0; switch(n) { case 1 : Volume = Volume2; break; case 2 : Volume = Volume3; break; case 3 : Volume = Volume4; break; case 4 : Volume = Volume5; break; case 5 : Volume = Volume6; break; case 6 : Volume = Volume7; break; case 7 : Volume = Volume8; break; case 8 : Volume = Volume9; break; case 9 : Volume = Volume10; break; default : Volume = Volume1; break; } return(Volume); }Acho que é mais fácil de ler e entender. Talvez funcione um pouco mais rápido também.
Você já recebeu conselhos sobre todo o algoritmo, eu não quero interferir e nem sequer olhei para seu código e os mesmos conselhos... Mas isto
chamou minha atenção. A este respeito, uma pergunta: não é mais fácil e mais legível usar o interruptor operador
Acho que é mais fácil de ler e entender. Talvez também funcione um pouco mais rápido.Originalmente eu o fiz da maneira que o encontrei, funcionou, então não pensei em melhorá-lo.
Você sabe o que eles dizem - Funciona - não toque nele.
Mas agora vou certamente tentar aplicar este método. Porque é necessário aprender e desenvolver.
Mas eu só vou lidar com minha variável n agora. Não quer ser contado.
sempre n = 0 (até agora)

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Código de redação
A tarefa era originalmente:
Encontrar a última ordem fechada.
Verifique se fechou na posição mais ou menos.
Conte o número de negócios
Conte o número de negócios mais e menos.
Calcule o valor da aposta.
Se o comércio for lucrativo (e total menos = 0) então aposte o número 1
Se o comércio for menos, então conte menos e aposte o número 2
Se mais, mas menos > 0 então aposte a próxima aposta.
Mas, por alguma razão, não conta o número de apostas e o valor das apostas corretamente.