[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 334
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
Boris, se você comentar uma das condições em GetGeneralSignal(), a abertura é clara.
Eu o localizei. A bandeira não muda seu valor quando a rentabilidade dos pedidos atualmente abertos está em menos. Aqui está a função reescrita que deve definir as bandeiras curta e longa como falsas, ou seja, proibir a abertura de uma posição se houver menos ordens:
A função de chamada é esta:
Talvez as condições sejam mais adequadas para a bai? Francamente falando, apenas as vendas são abertas hoje por causa do declínio muito fraco do euro, mas de qualquer forma algo é melhor do que nada!
Não. O sinal está escrito em int GetGeneralSignal() e funciona claramente. O sinal é primitivo, eu o levei apenas para o teste. Se a PCI cruzou a borda superior - comprar, e se a inferior - vender. Eu mesmo não uso índices, mas decidi verificar isto apenas para uma experiência.
Então, aí está. Sem bandeiras, tudo funciona perfeitamente. Mas não é assim com as bandeiras. Quando a funçãoint FindOrders(bool&longo,bool&curto) contém uma ordem do tipo dado e seu lucro está abaixo de zero, minha função, de acordo com a referência à função GetGeneralSignal(), deve passar um valor falso para uma determinada bandeira, mas na verdade as bandeiras sempre se mostram verdadeiras:
//+-------------------------------------------------------------------------------------+ //| Поиск своих ордеров | //+-------------------------------------------------------------------------------------+ int FindOrders(bool& long, bool& short) { int t, total = OrdersTotal() - 1; double profitL, // Профит лонговой позиции profitS; // Профит шортовой позиции for (int i=total; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != i_magic) continue; { if (OrderType() == OP_BUY) // Найден ордер типа OP_BUY { if (profitL < OrderProfit()) { profitL = OrderProfit(); pr("profitL =" + profitL); if (profitL < 0) long = false; } } else if (OrderType() == OP_SELL) // Найден ордер типа OP_SELL { if (profitS < OrderProfit()) { pr("profitS =" + profitS); profitS = OrderProfit(); if (profitS < 0) long = false; } } t++; } } return (t); }Posso vê-la na impressora, mas não está claro porque a bandeira não muda.
A propósito, eu mostrei a rentabilidade dos pedidos na impressão:
E na impressão o valor das bandeiras, é isto que é mostrado:
Ou seja, é claro que quando a rentabilidade está abaixo de zero, a bandeira correspondente deve ser colocada em falso, mas isso não acontece... Tudo parece ser elementar, mas algo não está acontecendo.
Não. Há um sinal na função GetGeneralSignal() que funciona bem. O sinal é primitivo, eu o levei apenas para o teste. Se a PCI cruzou a borda superior - comprar, e se a inferior - vender. Eu mesmo não uso índices, mas decidi verificar isto apenas para uma experiência.
Então, aí está. Sem bandeiras, tudo funciona perfeitamente. Mas não é assim com as bandeiras. Quando a funçãoint FindOrders(bool&longo,bool&curto) contém uma ordem do tipo dado e seu lucro está abaixo de zero, minha função, de acordo com a referência à função GetGeneralSignal(), deve passar um valor falso para uma determinada bandeira, mas as bandeiras sempre contêm a verdade:
Eu vejo isso na impressão, mas não entendo porque a bandeira não muda.
Posso vê-la na impressão, mas a razão pela qual a bandeira não muda não é clara.Corrigido o erro datilográfico.
Aqui está uma captura de tela:
Você pode ver, na tabela, que a bai é minúscula e a bandeira = TRU tudo na mesma.
Sinto pena de você! Escreverei como funcionará sem loops, que são retardados por funções! Aqui está seu código, mas em que eu o transformo!
Este esquema é livre de cãibras e funciona instantaneamente! Acabar com funções desnecessárias! Você pode encontrar a função ExistPositions() em Funções Úteis do Querido Kim!Sinto pena de você! Escreverei como funcionará sem loops, que são retardados por funções! Aqui está seu código, mas em que eu o transformo!
Este esquema é fácil e funciona instantaneamente! Acabar com funções desnecessárias! Você pode encontrar a função ExistPositions() em Funções Úteis de Kim!Boris, a funçãoExistPositions temo mesmo laço, só que tem mais verificações desnecessárias, de modo que não será lento no caminho. Sua lógica é clara para mim, mas o motivo da inoperabilidade da versão anterior não foi revelado, o que é estranho :)
Você também usa estas bandeiras:
E eu estava demonstrando que eles não retornam corretamente.
Portanto, novamente, se as variáveis profitL e profitS estiverem presentes nesta função, então as bandeiras não são necessárias.
Foi assim que aconteceu:
Mais uma vez, não está abrindo no sinal, está abrindo em qualquer coisa.
mudou-o para...
Agorao nível próximonão é modificadoquando o lucro aumenta...
Eu já descobri isso.
Boris, a funçãoExistPositions tem o mesmolaço, mas há mais verificações desnecessárias, de modo que não será lento ao longo do caminho. Sua lógica é clara para mim, mas o motivo da inoperabilidade da versão anterior não foi revelado, o que é estranho :)
Você também está usando estas bandeiras:
E demonstrei que eles não são devolvidos corretamente.
Portanto, novamente, se as variáveis profitL e profitS estiverem presentes nesta função, então as bandeiras não são necessárias.
Foi assim que tudo funcionou:
Mais uma vez ela se abre não por sinal, mas por qualquer coisa.