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
...
Dê uma olhada neste post : https://www.mql5.com/en/forum/174385/page12
Foi sobre um problema semelhante e você pode usar essa mesma contagemAbrirAbrirAcorrente
função para limitar a abertura de apenas um comércio por crossover
Oi amigos, sou um novato. Eu tenho uma estratégia simples. Eu só escalpo quando a EMA se cruza. Eu só aceito apenas uma troca em cada crossover. Preciso de um código que possa aceitar apenas uma troca em cada crossover da EMA. Por favor, 8 de maio de 2008.
Simplesmente código EMA crossover precisa........
Muito obrigado, MLADEN...
Eu apenas verifico sua função. Está com bom aspecto. Eu também preciso de alguma ajuda. Preciso acrescentar valor RSI(50) com o crossover EMA.... como eu posso...?
Pares: GBP/USD & EUR/USD
Cronograma: 15min,1 hora e acima;
-------------------------------
COMPRAR: EMA 5 Cross EMA 12 para cima, RSI maior que 50
VENDA: EMA 5 Cross EMA 12 para downside, RSI menos de 50
(apenas um comércio em cada crossover da EMA)
Estou esperando a resposta. Por favor.......
Você pode fazer isso de duas maneiras.
Uma maneira (diretamente na EA) poderia ser algo parecido com isto :
Você tem todas as informações necessárias: a linha cinza é a "tendência". As linhas verde e vermelha podem ser usadas como pontos de entrada e reentrada. Você pode "otimizar" visualmente em um instante, e então usar esses parâmetros no EA (muito mais rápido "otimização" visualmente do que a dolorosa "mudança de parâmetros, rodá-lo, ver o que você tem e então a mesma coisa repetidamente". E é bastante fácil chamá-lo a partir do EA. Seria assim:
Portanto, no geral, sempre recomendo o uso de um indicador de uso de um Ea. Você pode até mesmo mudar a lógica do Ea sem tocá-lo apenas alterando e refinando seu código de indicadores, caso em que o EA é "apenas" uma estrutura para gerenciamento de pedidos e dinheiro (já que os sinais estão vindo do indicador) que, em minha opinião, é uma maneira mais eficiente de usar Ea. Anexando o indicador também, assim você decide qual o caminho (o direto ou o "por indicador") que deseja usar em seu Ea
PS: nos exemplos acima, os testes são conduzidos na barra de corrente (ainda aberta). Se você deseja testar a barra fechada, substitua o 0 e 1 por 1 e em chamadas para iCustom(),iMa() e iRSI()
Muito obrigado, MLADEN...
Eu apenas verifico sua função. Está com bom aspecto. Eu também preciso de ajuda. Preciso acrescentar valor RSI(50) com EMA crossover.... como posso...?
Pares: GBP/USD & EUR/USD
Cronograma: 15min,1 hora e acima;
-------------------------------
COMPRAR: EMA 5 Cross EMA 12 para cima, RSI maior que 50
VENDA: EMA 5 Cross EMA 12 para downside, RSI menos de 50
(apenas um comércio em cada crossover da EMA)
Estou esperando a resposta. Por favor.......Saldo do 1o. do mês?
Hoje eu tenho estado aqui sentado tentando descobrir se existe uma maneira de extrair o saldo inicial do 1º dia do mês para uma exibição na tela.
O que eu estou tentando fazer é obter a diferença percentual entre o saldo do 1º e o saldo atual.
Eu tenho a diferença percentual acima de tudo.
(Saldo - Depósito)/Depósito*100
Eu gostaria de acrescentar uma diferença mensal.
(Saldo - 1º)/1º*100
Qualquer dica ou código real seria ótimo.
Abraço
Beno
Mais uma vez obrigado, MALADEN...
Obrigado por seu indicador e conselhos. Eu apenas tento seguir suas instruções. Mas como sou inábil no mq4, não consegui fazer isso................
AQUI ESTÁ MINHA..............
------------------------------------
-----------------------------------
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 3
#indicador de propriedade_color1 LimeGreen
#indicador de propriedade_color2 PaleVioletRed
#indicador de propriedade_color3 DarkGray
#largura_do_indicador de propriedade1 2
#largura_do_indicador de propriedade2 2
#indicador de propriedade_mínimo -1,1
#indicador de propriedade_máximo +1.1
externo int EmaFast = 5;
EmaSlow int externo = 12;
extern int EmaPrice = PREÇO_PREÇO_PREÇO;
int externo RsiPeriod = 14;
RsiPrice int externo = PREÇO_PREÇO_PREÇO;
duplo signup[];
duplo signdn[];
duplo signdn[];
duplo TakeProfit externo=15,0;
duplo externo Lots=0,1;
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int init()
{
retorno(0);
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int start()
{
int count,counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
int cnt, bilhete, total;
double trendc = iCustom(NULL,0, "ema + rsi binário",EmaFast,EmaSlow,EmaPrice,RsiPeriod,RsiPrice,2,0);
dupla tendênciap = iCustom(NULL,0, "ema + rsi binário",EmaFast,EmaSlow,EmaPreço,RsiPeriodo,RsiPreço,2,1);
se (trendc!=trendp)
total = EncomendasTotal();
if(total < 1)
{
se (trendc=== 1) //... sinal para compra
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de compra : ",GetLastError());
retornar(0);
}
se (trendc==-1) //... sinal para venda
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido de venda aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de VENDA : ",GetLastError());
retornar(0);
}
}
retorno(0);
}
---------------------------------------
---------------------------------------
Eu preciso de sua ajuda....
Pedi desculpas a você se eu te apareço mais como você caiu perturbado. Mas eu realmente desamparado...
Estou à espera de uma resposta. Por favor.......
...
Tente usar algo como isto :
forMonth é o mês para trás para o qual você deseja ver o saldo 0 sendo o mês atual. Ele então calcula o que era o saldo no primeiro dia do mês requerido. A função levará em conta também os depósitos e saques (OrderType() == 6), portanto deve funcionar bem.
Hoje eu tenho estado aqui sentado tentando descobrir se existe uma maneira de extrair o saldo inicial para o 1º dia do mês para uma exibição na tela.
O que estou tentando fazer é obter a diferença percentual entre o saldo no 1º e o saldo atual.
Eu tenho a diferença percentual acima de tudo.
(Saldo - Depósito)/Depósito*100
Eu gostaria de acrescentar uma diferença mensal.
(Saldo - 1º)/1º*100
Qualquer dica ou código real seria ótimo.
Abraço
Beno...
Você não pode gerenciar as ordens a partir do indicador. Você pode gerenciar ordens somente a partir de scripts ou EAs (que é o caso que você está procurando). O código de seu posto é um indicador.
Exemplos que eu postei devem ser usados de um EA (tanto quanto eu entendi você já tem um EA no qual você quer limitar o número de pedidos e deseja testar as condições de ema e rsi para entradas).
Mais uma vez obrigado, MALADEN...
Obrigado por seu indicador e conselhos. Eu apenas tento seguir suas instruções. Mas como sou inábil no mq4, não consegui fazer isso................
AQUI ESTÁ MINHA..............
------------------------------------
-----------------------------------
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 3
#indicador de propriedade_color1 LimeGreen
#indicador de propriedade_color2 PaleVioletRed
#indicador de propriedade_color3 DarkGray
#largura_do_indicador de propriedade1 2
#largura_do_indicador de propriedade2 2
#indicador de propriedade_mínimo -1,1
#indicador de propriedade_máximo +1.1
externo int EmaFast = 5;
EmaSlow int externo = 12;
extern int EmaPrice = PREÇO_PREÇO_PREÇO;
int externo RsiPeriod = 14;
RsiPrice int externo = PREÇO_PREÇO_PREÇO;
duplo signup[];
duplo signdn[];
duplo signdn[];
duplo TakeProfit externo=15,0;
duplo externo Lots=0,1;
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int init()
{
retorno(0);
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
int start()
{
int count,counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
int cnt, bilhete, total;
double trendc = iCustom(NULL,0, "ema + rsi binário",EmaFast,EmaSlow,EmaPrice,RsiPeriod,RsiPrice,2,0);
dupla tendênciap = iCustom(NULL,0, "ema + rsi binário",EmaFast,EmaSlow,EmaPreço,RsiPeriodo,RsiPreço,2,1);
se (trendc!=trendp)
total = EncomendasTotal();
if(total < 1)
{
se (trendc=== 1) //... sinal para compra
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de compra : ",GetLastError());
retornar(0);
}
se (trendc==-1) //... sinal para venda
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Imprimir("Pedido de venda aberto : ",OrderOpenPrice());
}
else Print("Erro na abertura do pedido de VENDA : ",GetLastError());
retornar(0);
}
}
retorno(0);
}
---------------------------------------
---------------------------------------
Eu preciso de sua ajuda....
Pedi desculpas a você se eu te apareço mais como você caiu perturbado. Mas eu realmente desamparado...
Estou esperando a resposta. Por favor.......Obrigado pela resposta, MLADEN,
Desculpe, acho que você me disse para colocar esse código em um novo EA.
Eu só sinto falta de entender sua resposta....
SIM. Você está certo....
Eu tenho EA e queria modificar. Com alguma nova condição.......
minha condição é :
------------------------------------------------------
COMPRAR: EMA 5 Cross EMA 12 para cima, RSI maior que 50
VENDA: EMA 5 Cross EMA 12 para downside, RSI menos de 50
Saída: com pequeno Take-Profit
(apenas um comércio em cada crossover da EMA)
aqui minha EA.....
---------------------
---------------------
Lotes duplos externos=0,1;
externo int TakeProfit=5;
externo int StopLoss=5;
externo int RSIPos=50;
externo int RSINeg=50;
extern int Slippage=2;
extern int abandon=101;
datatime bartime=0;
int bartick=0;
duplo p;
int cnt=0;
int OrdensPerSímbolo=0;
bullMA3=0; double bullMA3=0;
double bearMA7=0;
duplo RSI=0;
bool RSIPOS=0;
bool RSINEG=0;
duplo TP;
duplo SL;
int init()
{
if (Symbol()=="AUDUSD") {TakeProfit= 60; StopLoss= 23; abandon=103;}
if (Symbol()=="EURAUD") {TakeProfit= 95; StopLoss=141; abandon=33;}
if (Symbol()=="EURCHF") {TakeProfit= 81; StopLoss= 77; abandon=97;}
if (Symbol()=="EURGBP") {TakeProfit= 11; StopLoss= 77; abandon=108;}
if (Symbol()=="EURJPY") {TakeProfit= 38; StopLoss= 75; abandon=183;}
if (Symbol()=="EURUSD") {TakeProfit=35; StopLoss= 35; abandon=5;}
if (Symbol()=="GBPCHF") {TakeProfit= 79; StopLoss= 98; abandon=113;}
if (Symbol()=="GBPJPY") {TakeProfit= 13; StopLoss= 98; abandon=117;}
if (Symbol()=="GBPUSD") {TakeProfit= 55; StopLoss=100; abandon=69;}
if (Symbol()=="USDCAD") {TakeProfit= 66; StopLoss= 76; abandon=106;}
if (Symbol()=="USDCHF") {TakeProfit=117; StopLoss= 78; abandon=111;}
if (Symbol()=="USDJPY") {TakeProfit= 53; StopLoss= 74; abandon=110;}
}
int deinit()
{
}
int start()
{
p=Ponto;
// Verificação de erros e contagem de barras
if(AccountFreeMargin()<(200*Lots)) {Print("-----NO MONEY"); return(0);}
if(Bars<100) {Print("-----NO BARS "); return(0);}
if(bartime!=Time[0]) {bartime=Time[0]; bartick++;}
bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);
bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);
RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);
if(RSI>RSIPOS) {RSIPOS=verdadeiro; RSINEG=falso;}
if(RSI<RSINeg) {RSIPOS=falso; RSINEG=verdadeiro;}
OrdensPorSímbolo=0;
for(cnt=OrdensTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol()==Symbol() )
{
OrdensPorSímbolo++;
}
}
if(EncomendasPorSímbolo==0)
{
if(bullMA3>(bearMA7+p) && RSINEG)
{
SL=Ask-(StopLoss*p);
TP=Ask+(TakeProfit*p);
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP, "BUY "+CurTime(),0,0,White);
bartick=0;
}
if(bullMA3<(bearMA7-p) && RSIPOS)
{
SL=Bid+(StopLoss*p);
TP=Bid-(TakeProfit*p);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP, "SELL "+CurTime(),0,0,Red);
Bartick=0;
}
}
if(OrderPerSymbol===1 && bartick===abandonar)
{
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),Lots,Bid,Slippage,White);
SL=Bid+(StopLoss*p);
TP=Bid-(TakeProfit*p);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP, "SELL "+CurTime(),0,0,Vermelho);
bartick++;
}
if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),Lots,Ask,Slippage,Red);
SL=Ask-(StopLoss*p);
TP=Ask+(TakeProfit*p);
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP, "BUY "+CurTime(),0,0,White);
bartick++;
}
}
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol()==Symbol() )
{
if(OrderType()==OP_BUY)
{
se (OrderMagicNumber()==0)
{
if( Preço de Compra-Preço Aberto() > 3*Ponto )
{
OrderClose(OrderTicket(),Lots,Bid,0,White);
retornar(0);
}
}
}
if(OrderType()==OP_SELL)
{
se (OrderMagicNumber()==0)
{
if( OrderOpenPrice()-Ask > (3*Point) )
{
OrderClose(OrderTicket(),Lots,Ask,0,Red);
retornar(0);
}
}
}
}
}
retorno(0);
}
-------------------
---------------------
Como posso modificar isso....? Aguardando resposta. Por favor.......
dipu
No que diz respeito às entradas, esta funciona bem.
Agora cuide das saídas, pois da maneira como você as escreveu, você está fechando as ordens muito cedo Também o corretor de 5 dígitos está cuidando agora, e as entradas estão funcionando como deveriam. O período padrão para rsi está definido para 14 (eu não sabia qual deles você quer usar, em código você usa o período 2, mas isso provavelmente é curto). Os períodos Ema são, por padrão, 5 e 12. Além disso, ele está testando uma barra fechada agora (ele espera até que a barra feche e se então o sinal para compra r venda existir, ele entra no pedido)
Obrigado pela resposta, MLADEN,
desculpe por não obter informações claras.......
COMPRAR: EMA 5 Cross EMA 12 para cima, RSI[14] maior que 50
VENDA: EMA 5 Cruz EMA 12 para baixo, RSI[14] menos de 50
Saída: com pequeno TP/Sl....(5pip)
(apenas um comércio em cada crossover da EMA)
Eu só experimentei e vou informar o reasult....
Que ele também possa modificar ou não...
Obrigado novamente por sua ajuda.....