Bom dia,
Muito bom, só não entendi uma coisa. Quando coloco a ordem no WIN e WDO o EA abre 6 ordens com o número de contratos que inseri em "alavancagem". Então mesmo se eu quiser operar com 1 contrato, não consigo, ele abre 6.
Será algum conceito que me passou despercebido? Sou iniciante, portanto, parto dessa premissa.
Muito obrigado por compartilhar.
Bom dia,
Muito bom, só não entendi uma coisa. Quando coloco a ordem no WIN e WDO o EA abre 6 ordens com o número de contratos que inseri em "alavancagem". Então mesmo se eu quiser operar com 1 contrato, não consigo, ele abre 6.
Será algum conceito que me passou despercebido? Sou iniciante, portanto, parto dessa premissa.
Muito obrigado por compartilhar.
Pode estar acontecendo do sistema estar enviando mais de uma ordem quando você clica no mouse, os motivos podem ser diversos, mas obrigado por reportar 😁👍, para resolver este infortúnio, você deverá adicionar um teste extra no clique do mouse, os pontos a modificar ou adicionar estão marcados em VERDE ... muita atenção para digitar da forma como está, caso contrário poderá não enviar a ordem, ou ela não ser aceita pelo servidor ... mas adicionando este teste extra deverá resolver o seu problema. A lógica é a seguinte : Quando se clicar no mouse, a variavel STATIC será setada, e somente será resetada permitindo enviar uma nova ordem quando o mouse já não estiver pressionado.
inline void MoveTo(int X, int Y, uint Key) { static double d_block = 0; int w = 0; datetime dt; bool bEClick, bKeyBuy, bKeySell; double take = 0, stop = 0, price; bEClick = (Key & 0x01) == 0x01; //Clique esquerdo bKeyBuy = (Key & 0x04) == 0x04; //SHIFT Pressionada bKeySell = (Key & 0x08) == 0x08; //CTRL Pressionada ChartXYToTimePrice(Infos.Id, X, Y, w, dt, price); ObjectMove(Infos.Id, Infos.szHLinePrice, 0, 0, price = (bKeyBuy != bKeySell ? AdjustPrice(price) : 0)); ObjectMove(Infos.Id, Infos.szHLineTake, 0, 0, take = price + (Infos.TakeProfit * (bKeyBuy ? 1 : -1))); ObjectMove(Infos.Id, Infos.szHLineStop, 0, 0, stop = price + (Infos.StopLoss * (bKeyBuy ? -1 : 1))); if ((bEClick) && (bKeyBuy != bKeySell) && (d_block == 0)) CreateOrderPendent(bKeyBuy, Infos.Volume, (d_block = price), take, stop, Infos.IsDayTrade); else d_block = 0; ObjectSetInteger(Infos.Id, Infos.szHLinePrice, OBJPROP_COLOR, (bKeyBuy != bKeySell ? Infos.cPrice : clrNONE)); ObjectSetInteger(Infos.Id, Infos.szHLineTake, OBJPROP_COLOR, (take > 0 ? Infos.cTake : clrNONE)); ObjectSetInteger(Infos.Id, Infos.szHLineStop, OBJPROP_COLOR, (stop > 0 ? Infos.cStop : clrNONE)); };
Boa Tarde, onde eu ajusto o número de pontos e número de lotes para o mini-índice?
Na verdade neste código o ajuste é automático. Você diz o financeiro e o número de contratos a operar e o código faz o ajuste em termos de pontos ... Esta informação é dada no momento em que você coloca o Expert Advisor no gráfico. 😁👍

- 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
Novo artigo Desenvolvendo um EA de negociação do zero foi publicado:
Entenda como se dá o desenvolvimento de um EA para negociação programando o mínimo possível.
Este EA pode ser muito aperfeiçoado em diversos aspectos de forma que você poderá colocar ele para operar algum setup, é verdade que terá que adicionar mais código para ele ficar mais independente do MT5, mais isto vai da criatividade e necessidade de cada um.
O grande trunfo deste EA é o fato de ele usar o próprio MT5 para fazer as coisa que não estão no código do mesmo, e com isto ser extremamente estável e confiável.
Autor: Daniel Jose