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
Oopsie :) Vou fazer um comercial agora, preste atenção - http://forexsystems.ru/phpBB/viewtopic.php?t=694&start=45
Posso mudar o número de alças nas configurações do sistema (W'XP) e como?
Qual é a maneira correta de fazer isso:
1.
for(int nCnt = 0; nCnt < OrderTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic) { if(CurTime() - OrderOpenTime() > (nHoursToHold - 1) * 60 * 60) { if(OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, nSlip, Aqua); else if(OrderType() == OP_SELLL) OrderClose(OrderTicket(), OrderLots(), Ask, nSlip, OrangeRed); } } }2.
for(int nCnt = OrderTotal() - 1; nCnt >= 0; nCnt--) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic) { if(CurTime() - OrderOpenTime() > (nHoursToHold - 1) * 60 * 60) { if(OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, nSlip, Aqua); else if(OrderType() == OP_SELLL) OrderClose(OrderTicket(), OrderLots(), Ask, nSlip, OrangeRed); } } }3. indiferente.
4. Devemos definir o retorno e processar a próxima ordem no próximo tick
5. Deve ser feito de alguma outra forma.
Deixe-me explicar. Assumir que temos duas ordens abertas e que ambas precisam ser fechadas. O laço
Ela fechará a ordem zero, após o que a primeira ordem se tornará zero. Depois tentará fechar a primeira encomenda, e haverá um erro. Certo?
Não creio que todos os erros da EA discutidos neste tópico estejam relacionados a esta questão, por exemplo, o erro comum não tem nada a ver com isso. Mas se eu estiver certo, talvez isso explique a) a ordem trancada e tal e b) o fato de que precisamos de vários EAs para que os erros apareçam.
Можно ли изменить число хэндлов в системных установках (W'XP) и как?
Se um programa não tiver alças, ele é escrito com erros. Caso contrário, há alças suficientes para dar a volta.
for(int nCnt = 0; nCnt < OrderTotal(); nCnt++)
por
for(int nCnt = OrderTotal() - 1; nCnt >= 0; nCnt--)
Passei do erro 139 para 138 e 4109
(requote, Não inicializado string in array)
O último não tem nenhum comentário...
A 10 Consultores Especialistas em um intervalo de minutos, 30 segundos para cada... Errado, é impossível viver dessa maneira.
Com 10 especialistas em um intervalo de um minuto, 30 segundos para cada... Errado, esta não é uma maneira de viver.
Esta é a maneira de viver, e o que você está fazendo é um teste à força do ferro.
1. Ciclos fixos.
2. O número Magik é privatizado para a hora de início da barra. Isto dá, se não estou enganado, um atraso na abertura. Ou seja, a EA com mn 7 abrirá 7 segundos após o início do bar. Evitará sobrecarga do servidor, CPU do computador e conflito com o máximo de 2,5 segundos, se ainda estiver em algum lugar...
Mas, infelizmente, os erros permanecem.
As regras são as mesmas - abrir várias janelas, em qualquer período de tempo (minutos, por exemplo) e esperar.
double dStopLoss; int nHoursToHold; datetime timePrev = 0; int nSlip = 5; double dLotSize = 0.1; int nMagic = 0; ////////////////// int init () { timePrev = 0; dStopLoss = 110 * Point; nHoursToHold = 1; if(Symbol() == "EURUSD") nMagic = 1; else if(Symbol() == "EURJPY") nMagic = 2; else if(Symbol() == "USDCHF") nMagic = 3; else if(Symbol() == "GBPUSD") nMagic = 4; else if(Symbol() == "GBPJPY") nMagic = 5; else if(Symbol() == "GBPCHF") nMagic = 6; else if(Symbol() == "USDJPY") nMagic = 7; else if(Symbol() == "AUDUSD") nMagic = 8; else if(Symbol() == "EURGBP") nMagic = 9; else if(Symbol() == "USDCAD") nMagic = 10; else if(Symbol() == "EURCHF") nMagic = 11; else if(Symbol() == "EURAUD") nMagic = 12; timePrev += nMagic; // Open nMagic seconds after the new bar return(0); } // ------ int deinit() { return(0); } // ------ int start() { if(Bars < 5) return(0); // The previous bar just closed bool bIsBarEnd = false; if(timePrev != Time[0] + nMagic) bIsBarEnd = true; timePrev = Time[0] + nMagic; if(!bIsBarEnd) return(0); // ------ int nSignal = GetSignal(); if(nSignal == OP_BUY) Buy(); else if(nSignal == OP_SELL) Sell(); for(int nCnt = OrdersTotal() - 1; nCnt >= 0; nCnt--) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic) { if(CurTime() - OrderOpenTime() > (nHoursToHold - 1) * 60 * 60) { if(OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, nSlip, Aqua); else if(OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, nSlip, OrangeRed); } } } return(0); } // ------ void Sell() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); int nResult = OrderSend(Symbol(), OP_SELL, dLotSize, Bid, nSlip, Bid + dStopLoss, 0, "Friday", nMagic, 0, OrangeRed); if(nResult == -1) { int nError = GetLastError(); Alert(Symbol() + ", " + nError); } } // ------ void Buy() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, Ask, nSlip, Ask - dStopLoss, 0, "Friday", nMagic, 0, Aqua); if(nResult == -1) { int nError = GetLastError(); Alert(Symbol() + ", " + nError); } } // ------ double GetLotSize() { double dLot = 0.1; return(dLot); } // ------ int GetSignal() { int nSignal; if(MathMod(Hour(), 2) == 0) nSignal = OP_BUY; else nSignal = OP_SELL; return(nSignal); } // ------