Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 75
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
SELL_Lvl é o número de joelhos (pedidos) da grade de venda eSELL_NoLossLevel é o nível total (preço) da CU desses pedidos. Bem, a idéia é a seguinte: precisamos de uma linha desenhada no nível de uma Linha de Compra e redesenhada respectivamente quando novas Linhas são abertas. Não sei como fazer isso.
Não entende como determinar a linha BU de todos os pedidos?
Você pode me dizer como escrevê-lo para economizar recursos e obter preços atualizados?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
ou como este?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
Você pode me dizer como escrevê-lo para economizar recursos e obter preços atualizados?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
ou como este?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
Você pode me dizer como escrevê-lo para economizar recursos e obter preços atualizados?
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
SymbolInfoTick(OrderSymbol(),Last_Tick); <<<
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
ou como este?
for(int i=OrdersTotal(); i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)) {
if(OrderSymbol()==symb) {
if(OrderType()==OP_BUY) {
tk=OrderTicket();
ask=Last_Tick.ask;
bid=Last_Tick.bid;
...
Eu diria que depende do tamanho dos pedidosTotal() e da probabilidade de mudanças de preço durante o ciclo.
Na minha opinião, obter dados novos diretamente no laço é mais correto.
E eu acho que variáveis adicionais (destacadas no código) são absolutamente desnecessárias.
Há um exemplo na documentação.
Provavelmente seria melhor analisar as ordens no loop e, desde que a próxima ordem seja menor do que a anterior, selecioná-la para continuar trabalhando com ela. Assim, após sair do laço, será selecionada a ordem a ser apagada.
Ou, você pode primeiro memorizar sua posição na lista de pedidos e depois selecioná-la após sair do laço usando o índice memorizado.
A primeira opção é mais correta. A segunda deve escreverSymbolInfoTick(symb,Last_Tick); <<<<
Sim, eu só copiei e não notei.
Estou me perguntando se oSymbolInfoTick é a maneira correta de colocá-lo dentro do laço, se ele é necessário lá, ou se ele pode ser colocado antes do laço. Usado em trailing stop, pode puxar grade até 50pc.
Sim, eu só copiei e não notei.
Estou me perguntando se oSymbolInfoTick é a maneira correta de colocá-lo dentro do loop, se é necessário, ou se pode ser colocado antes do loop. Usado na parada de reboque, pode puxar uma grade de até 50pc.
Não consegue descobrir como determinar a linha BU de todos os pedidos?
Para a parada de trilha, é claro que é melhor uma vez antes do ciclo.
Agora estou reescrevendo-o lentamente por 5. Quero dizer que o preço pode mudar muito rapidamente e o nível pode ser menor que o valor de stop-loss, o que levará a um erro. Quero dizer que o preço pode mudar muito rapidamente e o nível será menor que o nível de parada permitido, o que levará a um erro.
Entendo que este chapéu"SymbolInfoTick" é necessário para obter preços reais?