[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 77
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
Olá a todos
Por favor, informe, por que a scoop compra, mas quando as condições estão maduras não fecha a posição
/---- parâmetros de entradaPerRSI=8;
externo int MagicNamber=77771;
Lotes duplos externos=1,0;
//+------------------------------------------------------------------+
int start()
{
int
cnt, // índice de pedidos
bilhete, // número de identificação do pedido
total; // número de pedidos já abertos
duplo
rsi_0, // Valor. rsi_0 corrente
rsi_1; // Valor. rsi_1 1ª barra
se (Bars<100)
{
Impressão ("barras com menos de 100");
retorno(0);
}
total=OrdensTotal();
if(total<1)
{
rsi_0=iRSI(NULL,0, PerRSI,0,0); // Barra de corrente
rsi_1=iRSI(NULL,0, PerRSI,0,1); // Barra de corrente mais 1
if(rsi_0 < rsi_1 && rsi_0 < 30) // Se a linha tiver ultrapassado 30
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "My RSI", MagicNamber,0,Green);
if(bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("VENDER pedido aberto : ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError()));
retorno(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_BUY && OrderSymbol()==Symbol()) // esta é uma posição aberta? OP_BUY ou OP_SELL
{
if(OrderType()==OP_BUY) // posição longa aberta
{
if(rsi_0 > rsi_1 && rsi_0 > 70) // se a linha tiver ultrapassado os 70
{
OrderClose(OrderTicket(),1,Bid,3,Violet); // posição fechada
retornar(0); // sair
}}}}}}
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "My RSI", MagicNamber,0,Green);
if(bilhete>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Imprimir("Pedido de venda aberto : ",OrderOpenPrice())
}
Que diabos é isto? Para que serve o OrderSelect()?
O resto é difícil de entender porque o código é disposto sem travessões e não se pode seguir parênteses - eu não quero estragar minha visão.
Muito obrigado por toda a sua ajuda! E também para condescender - y. Agora há outro problema. Abrimos, por exemplo, 10 posições de compra. Quando fechamos as posições 1, 2, 3, etc. usando stop ou take, o Expert Advisor começa a comprar, se houver um sinal para comprar. Mas eu preciso que TODAS as ordens sejam fechadas primeiro, e então, quando não houver uma posição aberta, um novo ciclo comercial será iniciado. Em outras palavras, precisamos de um contador. Primeiro as posições abertas para um determinado número, e depois, quando as posições são fechadas, para zero. Gostaria de agradecer antecipadamente.
É exatamente assim que se faz agora. Enquanto houver pelo menos uma ordem em aberto, outra não será aberta. Se você quiser fazer o contrário, você tem que ser mais preciso. Então você tem que escolher - se suas ordens são abertas se há ou não posições abertas.
Aqui vai uma pergunta:
Há alguma ferramenta de depuração no MetaTrader?
Por favor, compartilhe suas experiências - como você depura scripts e EAs?
É tudo uma questão de dígitos, parâmetros, visões de algoritmos e assim por diante. Como você pega os bugs no algoritmo?
Aqui vai uma pergunta:
Há alguma ferramenta de depuração no MetaTrader?
Por favor, compartilhe suas experiências - como você depura scripts e Expert Advisors?
Se eu precisar fazer a depuração, eu a faço através de Print()
Mas na maioria dos casos, tal necessidade não se faz sentir.
RefreshRates();
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum
bool sellclose = OrderClose(OrderTicket(),OrderLots(),Ask,3,YellowGreen);
if (sellclose)
{
PlaySound("money.wav");
}
else
{
Print("Ошибка : ",Error(GetLastError()));
PlaySound("timeout.wav");
}
Você pode me dizer por que neste projeto após fechar um pedido "timeout.wav" soa primeiro, "nenhum erro" igual ao número de pedidos a serem fechados (se 2 pedidos forem fechados, "nenhum erro" aparecerá duas vezes, etc.) e depois "money.wav" soa. O engraçado é que isto é apenas para comércios curtos, para comércios longos tudo funciona bem. Quem sabe qual é o truque e como consertá-lo?
RefreshRates();
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum
bool sellclose = OrderClose(OrderTicket(),OrderLots(),Ask,3,YellowGreen);
if (sellclose)
{
PlaySound("money.wav");
}
else
{
Print("Ошибка : ",Error(GetLastError()));
PlaySound("timeout.wav");
}
Você pode me dizer por que neste projeto após fechar um pedido "timeout.wav" soa primeiro, "no error" igual ao número de pedidos a serem fechados (se 2 pedidos forem fechados, "no error" irá aparecer duas vezes, etc.), e então "money.wav" soa. O engraçado é que isto é apenas para comércios curtos, para comércios longos tudo funciona bem. Quem sabe qual é o truque e como consertá-lo?
O suporte não é depois do primeiro, se fechado?
if(OrderType()==OP_SELLL && OrderMagicNumber()==mnum
Esta linha de alguma forma cai fora.
RefreshRates();
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum
bool sellclose = OrderClose(OrderTicket(),OrderLots(),Ask,3,YellowGreen);
if (sellclose)
{
PlaySound("money.wav");
}
else
{
Print("Ошибка : ",Error(GetLastError()));
PlaySound("timeout.wav");
}
Você pode me dizer por que neste projeto após fechar um pedido "timeout.wav" soa primeiro, "no error" igual ao número de pedidos a serem fechados (se 2 pedidos forem fechados, "no error" irá aparecer duas vezes, etc.), e então "money.wav" soa. O engraçado é que isto é apenas para comércios curtos, para comércios longos tudo funciona bem. Quem sabe qual é o truque e como consertá-lo?
A condição no primeiro operador condicional "se" afeta apenas o próximo operador que o segue (a próxima linha).
Os outros são executados sem que a ordem seja fechada. Isto é, mesmo que não haja comando para fechar a ordem, um dos playounds funcionará.
A maneira correta é esta:
O suporte não está fechado após o primeiro se ????
if(OrderType()==OP_SELLL && OrderMagicNumber()==mnum
Esta linha, de alguma forma, cai fora
Se(OrderType()==OP_SELL && OrderMagicNumber()==mnum, então cai fora, mas trabalha o truque para transações curtas e longas, mas o erro "Sem erro" com som "timeout".o "wav" funciona apenas para comércios curtos, para comércios longos funciona bem, há os mesmos parênteses e tudo é o mesmo