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
Pelo menos nos ajustadores de métodos isto se justifica - o código pode se tornar mais legível e compacto, você recebe um la nominativo de parâmetros
ChartObject *hline=HLine::New(1.255).Color(clrGreen).Width(2).Selectable(true); // не надо помнить очерёдность параметров и можно писать в одну строку - цепочкой
// получается вот из подобного :
class HLine:public ChartObject {
public:
HLine(double price);
HLine *New(double _price) { return new HLine(_price); } // это чтобы не городить (new HLine(...)).Method1
HLine *Color(color _clr) { fgColor=_clr; return GetPointer(this); } // а это чтобы получались цепочки obj.Method1(..).Method2(..)
};
e interfere um pouco na qualificação das funções pelo tipo retornado.
Sinta-se livre para devolver GetPointer(isto) dos métodos.
Desta forma , isto é mais conciso.
Bem, deixe-me começar primeiro.
Para fechar um pedido, não é necessário definir o tipo de pedido e o preço que corresponde a este tipo. Basta escrever "fechar a preço" em OrderClosePrice()!
void OnStart()
{
int i, total = OrdersTotal()-1;
for(i = total; i >= 0; i--)
{
if(OrderType() < OP_SELLSTOP)
{
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100))
printf("***********");
}
}
}/********************************************************************/
Bastante legal! ) Obrigado.
Julgando pelo exemplo, você também não precisa da OrderSelect()?
(Legal! ) Obrigado.
Julgando pelo exemplo, OrderSelect() também não é necessário?
Legal! ) Obrigado.
Necessário. Só falhou por preguiça...
Sim, bem... Realmente confuso.
Mas antes, eu não me deparei com estes tópicos.
Portanto, você pode usar OrderClosePrice somente DEPOIS do OrderSelect correspondente. Uma vez que OrderSelect copia uma vez os dados para Order(const)-functions, e o mesmo RefreshRates não é capaz de atualizá-los.
Isto é, se, por exemplo, o OrderClosePrice não fechar, então o OrderSelect deve ser feito novamente antes da próxima tentativa (não é necessário fazer uma atualização).
ZS Esta linha é de 2005! Há argumentos detalhados dos desenvolvedores aqui.
As ordens abertas devem ser analisadas a partir de um número maior, ou seja, for(int nom=OrdensTotal()-1; nom>=0; nom--)
Isto é especialmente importante quando se trata de eliminar pedidos.
Mas o que acontecerá se fizermos o contrário para(int nom=0; nom<OrdersTotal(); nom++) ?
No início, o índice é igual a zero e a primeira ordem com o número 0 é eliminada.
Então o índice se torna igual a 1. Neste ponto, as ordens restantes são deslocadas e aquela com o número 1
ocupa a posição zero. O antigo número 2 toma a posição 1. Será apagado.
Então o índice passa a ser 2. E a ordem que era a número 4 no início será apagada.
Assim, as ordens que ocupam posições de número par no início são eliminadas. As de número ímpar permanecerão. Isto pode ser visto nos comentários aos pedidos e números.
Eu anexei um script mostrando as opções de exclusão e capturas de tela
Há 20 ordens pendentes
Eliminado um a um