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
completei minha EA com a nossa ajuda ThanX novamente
Olá, mLaden,
Que X novamente por nossa grande ajuda
completei minha EA com a nossa ajuda ThanX novamente
Do queXXXXXXXXXXXX
Indicadores de reimpressão
Eu postei esta pergunta para este tópico "Coding Help" há algumas semanas, mas não obtive resposta.
A maioria dos indicadores MTF repintam, alguns mais do que outros. Tenho um que pinta ligeiramente, mas tem um fator que é muito bom e que poderia ser incluído em um método. O problema é que eu preciso atualizar/refazer manualmente constantemente para que isso faça sentido. Existe uma maneira de codificar uma atualização automática a cada tick ou a cada 'x' segundos/ticks?
Atualmente, para atualizar, ou mudo o tempo do gráfico e depois volto, ou vou para a guia Gráficos/Refresh, ou adiciono outro indicador ao gráfico e excluo o anterior....... vezes sem conta! Muito demorado!
Se houver uma maneira de fazer esta atualização automática, eu vou compartilhar o que encontrei............
Thx,
el abelha
...
el abelha
Metatrader está enviando um sinal de autorefresh para cada um dos indicadores na janela quando um novo tick chega, portanto não é um problema de refrescamento. Normalmente esse tipo de problema acontece quando um indicador não encontra a contagem de barras trocadas (normalmente nomeada nos indicadores como "limite") corretamente ... então é um problema para o indicador. Quando você muda os prazos, ele recalcula todas as barras novamente e é por isso que ele o mostra corretamente nesse caso e não o faz corretamente quando há apenas 1 barra alterada
Para concluir: verifique o código do indicador - ele tem um bug
Eu postei esta pergunta para este tópico "Coding Help" há algumas semanas, mas não obtive resposta.
A maioria dos indicadores MTF repintam, alguns mais do que outros. Eu tenho um que pinta ligeiramente, mas tem um fator que é muito bom e que poderia ser incluído em um método. O problema é que eu preciso atualizar/refazer manualmente constantemente para que isso faça sentido. Existe uma maneira de codificar uma atualização automática a cada tick ou a cada 'x' segundos/ticks?
Atualmente, para atualizar, ou mudo o tempo do gráfico e depois volto, ou vou para a guia Gráficos/Refresh, ou adiciono outro indicador ao gráfico e excluo o anterior....... vezes sem conta! Muito demorado!
Se houver uma maneira de fazer esta atualização automática, eu vou compartilhar o que encontrei............
Thx,
el abelhaajuda indicadora
Eu poderia usar um indicador que colocasse uma linha vertical na vela mais recente, adjuvante, se alguém tem uma e pode compartilhar ou se uma poderia ser feita, seria mais apreciada
Existe um código errado ?
Estou tentando escrever um EA que se baseie em abrir e fechar a barra
mas tenho um problema com as condições para abrir um comércio .
meu método é algo parecido com isso :
+ VENDA quando a abertura da barra atual é maior do que o fechamento da barra anterior . TP é o fechamento da barra anterior
+ COMPRAR quando a abertura da barra atual é menor que a abertura da barra anterior . TP está aberta da barra anterior
+ FECHAR quando a barra atual fecha .
e aqui está o código (ainda estou tentando aprender mql4 , então sei que não é o melhor código)
#property link "sando"
#define MAGICMA 20050610
//====================parameter===================//
duplo solantang externo =3;
duplo solantângio externo =3;
duplo solantang externo =1;
//==============================================//
//+------------------------------------------------------------------+
//| verificar se há comércio aberto |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(símbolo de corda)
{
int compra=0,vende=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) compra++;
if(OrderType()==OP_SELL) vende++;
}
}
//---- volume de pedidos de devolução
if(compra>0) return(compra);
caso contrário, retorna(-sells);
}
//+------------------------------------------------------------------+
//| Moneymanagement (Tipo 3) |
//+------------------------------------------------------------------+
duplo gerenciamento de dinheiro3()
{
tamanho duplo LotsSize = 0,1;
if(OrdensHistóriaTotal()>0)
{
OrderSelect(OrderHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
if(OrderProfit() > 0)
{
if(OrderLots() > LotsSize)
{
LotsSize = OrderLots()/solangiam;
}
senão
{
LotsSize = Tamanho do LotsSize;
}
}
senão
{
LotsSize = OrderLots() * solantang;
}
}
retorno (NormalizeDouble(LotsSize,2));
}
//+------------------------------------------------------------------+
//| CONDIÇÃO de abrir um comércio |
//+------------------------------------------------------------------+
opentrada vazia()
{
int res;
if(Close[0]<Open[1])
{
res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red);
retornar;
}
if(Open[0]>Open[1])
{
res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],"",MAGICMA,0,Blue);
retornar;
}
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
início nulo()
{
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular ordens abertas pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) opentrade();
// else donggiaodich();
//----
}
//+------------------------------------------------------------------+
e, por favor, verifique a foto em anexo
Eu acho que algo está errado no código
algum dia a EA não faz o comércio quando cumpre a condição T_T Não sei por que
e, às vezes, a EA faz o comércio quando não cumpre a condição!
Por favor, ajude-me a corrigir o erro no código .
Estou tentando escrever uma EA que se baseie em abrir e fechar o bar
mas tenho um problema com as condições para abrir um comércio .
meu método é algo parecido com isso :
+ VENDA quando a abertura da barra atual é maior do que o fechamento da barra anterior . TP é o fechamento da barra anterior
+ COMPRAR quando a abertura da barra atual é menor que a abertura da barra anterior . TP está aberta da barra anterior
+ FECHAR quando a barra atual fecha .
e aqui está o código (ainda estou tentando aprender mql4 , então sei que não é o melhor código)
e, por favor, verifique a foto em anexo
Eu acho que algo está errado no código
algum dia a EA não faz o comércio quando cumpre a condição T_T Não sei por que
e, às vezes, a EA faz o comércio quando não cumpre a condição!
Por favor, ajude-me a corrigir o erro no código .[lang=pl]+ SELL quando a abertura da barra atual é maior do que o fechamento da barra anterior . TP é o fechamento da barra anterior
+ COMPRAR quando a abertura da barra atual é menor que a abertura da barra anterior . TP está aberta da barra anterior
Aqui está o primeiro erro:
if(Fechar[0]Fechar[1])
if(Open[0]>Open[1]) (Deve ser Open[0]<Open[1])
O segundo é o StopLoss. Em seu código, você define StopLoss, mas na descrição acima
você disse que quer fechar negócios se surgir um novo bar.
Aqui está mais um problema. Suponha que Abra[0]<Abrir[1]. A diferença pode ser tão pequena
que quando seu pedido for executado o preço estará aberto[1] e TP
menos do que o preço aberto do pedido . Abaixo acrescento a condição que permite apanhar este caso.
Se eu bem entendo que você quer fechar todos os pedidos no final da barra aqui é código.
#link de propriedade "sando"
#define MAGICMA 20050610
//====================parameter===================//
duplo solantang externo =3;
duplo solantângio externo =3;
duplo solantang externo =1;
//==============================================//
//+------------------------------------------------------------------+
//| verificar se há comércio aberto |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(símbolo de corda)
{
int compra=0,vende=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) compra++;
if(OrderType()==OP_SELL) vende++;
}
}
//---- volume de pedidos de devolução
if(compra>0) return(compra);
caso contrário, retorna(-sells);
}
//+------------------------------------------------------------------+
//| Moneymanagement (Tipo 3) |
//+------------------------------------------------------------------+
duplo gerenciamento de dinheiro3()
{
tamanho duplo LotsSize = 0,1;
if(OrdensHistóriaTotal()>0)
{
OrderSelect(OrderHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
if(OrderProfit() > 0)
{
if(OrderLots() > LotsSize)
{
LotsSize = OrderLots()/solangiam;
}
senão
{
LotsSize = Tamanho do LotsSize;
}
}
senão
{
LotsSize = OrderLots() * solantang;
}
}
retorno (NormalizeDouble(LotsSize,2));
}
//+------------------------------------------------------------------+
//| CONDIÇÃO de abrir um comércio |
//+------------------------------------------------------------------+
opentrada vazia()
{
int res;
se(Fechar[1] Fechar[1] )
{
res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1],"",MAGICMA,0,Red);
retornar;
}
if(Open[0]<Open[1] && Ask <Aber[1])
{
res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"",MAGICMA,0,Blue);
retornar;
}
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
início nulo()
{
if(isNewBar())
{
closeOrders(MAGICMA,OP_BUY);
closeOrders(MAGICMA,OP_SELL);
}
Print(Close[1]-Open[0]);
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular ordens abertas pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) opentrade();
// else donggiaodich();
//----
}
Encomendas nulas (int oMagic,int oType) {
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic || oMagic<0) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
if(OrderType()==OP_BUY) {
OrderClose(OrderTicket(),OrderLots(),Bid,0);
i--;
}
se (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
i--;
}
if(OrderType()==OP_SELL) {
OrderClose(OrderTicket(),OrderLots(),Ask,0);
i--;
}
se (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
i--;
}
}
}
}
}
}
}
bool isNewBar() {
estática no tempo;
bool newBar=false;
if(Time[0]!=prevTime) {
newBar=verdadeiro;
prevTime=Time[0];
}
return(newBar);
}
//+------------------------------------------------------------------+
Abraço,
Grzesiek[/lang]
Ajuda na codificação: Colocação de Stop Loss & Take Profit com EA usando um corretor ECN
Pare de Perda, Lucre com ECN Broker
Amigos,
Sou um novato na programação da MQL4 e preciso de ajuda para anexar um SL & TP a um ORDERSEND com um corretor ECN.
Inicialmente, eu não conseguia entender porque os SL & TPs estavam fazendo meu pedido resultar em um erro até que alguém apontou que alguém tem que definir o campo StopLoss & TakeProfit dentro do ORDERSEND para "0" ou então um corretor ECN/STP não executará o pedido.
Portanto, minha pergunta é: Como posso executar uma ordem no Mercado e depois imediatamente (ou dentro de um ou dois segundos) anexar um SL/TP a esse bilhete?
Aqui está um trecho do código pertinente à minha pergunta:
if(Preço atualComprador>Aparafusador de Preço Superior)
{
OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,0,Co mm,0,0,0,CLR_NONE);
}
Qualquer pessoa pode me ajudar a inserir o código logo após o comando OrderSend para que eu possa anexar um TP/SL de 25pips, digamos arbitrariamente, a esse ticket específico?
Qualquer ajuda seria muito apreciada. Agradecemos antecipadamente.
Saudações,
Kasio
Pare de Perda, Lucre com ECN Broker
Amigos,
Sou um novato na programação da MQL4 e preciso de ajuda para anexar um SL & TP a um ORDERSEND com um corretor ECN.
Inicialmente, eu não conseguia entender porque os SL & TPs estavam fazendo meu pedido resultar em um erro até que alguém apontou que alguém tem que definir o campo StopLoss & TakeProfit dentro do ORDERSEND para "0" ou então um corretor ECN/STP não executará o pedido.
Portanto, minha pergunta é: Como posso executar uma ordem no Mercado e depois imediatamente (ou dentro de um ou dois segundos) anexar um SL/TP a esse bilhete?
Aqui está um trecho do código pertinente à minha pergunta:
if(Preço atualComprador>Aparafusador de Preço Superior)
{
OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,0,Co mm,0,0,0,CLR_NONE);
}
Qualquer pessoa pode me ajudar a inserir o código logo após o comando OrderSend para que eu possa anexar um TP/SL de 25pips, digamos arbitrariamente, a esse bilhete específico?
Qualquer ajuda seria muito apreciada. Agradecemos antecipadamente.
Cumprimentos,
KasioOi kasio,
Se você comercializa com corretor ECN, você deve enviar um pedido sem SL/TP e modificá-lo.
aqui está um exemplo:
stopLoss duplo externo = 25;
TakeProfit duplo externo = 25;
if(isECN===verdadeiro )
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - StopLoss*Point, StopLoss),sltpValue(Ask+ TakeProfit*Point,TakeProfit),0);
}
duplo sltpValue(duplo w1, int w2)
{
if(w2 == 0)
retorno (0);
retorno (NormalizeDuplo(w1, Dígitos));
}
Espero que seja claro
Me pergunte se tiver mais perguntas.
saúde,
grzesiek
Informações não atualizadas a cada tique
Oi, pessoal,
Escrevi esta ea que me mostra informações sobre vários indicadores em minha tela.
Entretanto, quando eu anexar a ea ao meu gráfico, a informação só será atualizada a cada 5 minutos (no gráfico de 5 minutos),
em vez de cada tique. Há algo errado em minha codificação? Eu gostaria de ver as informações para mudar cada tique.
//+------------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2011, Test Inc. |
//| test.net - Recursos e informações de teste. |
//+------------------------------------------------------------------+
#direitos de propriedade intelectual "Copyright © 2011, Test Inc."
#link da propriedade "http://www.test.net"
//+------------------------------------------------------------------+
//| etiquetas |
//+------------------------------------------------------------------+
#define ccilabel "CCIValue"
#define rsilabel "RSIValue
#define stochlabel "StochValue
#define upperbandlabel "UpperBandValue"
#define lowerbandlabel "LowerBandValue"
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
//===================================================================
// Índice de Força Relativa Dinâmica berekenen
//===================================================================
RSI duplo;
banda dupla UpperBand;
banda inferior dupla;
RSI=iCustom(NULL,0, "Dynamic Zone RSI",14,0,1);
UpperBand=iCustom(NULL,0, "Dynamic Zone RSI",14,1,1);
LowerBand=iCustom(NULL,0, "Dynamic Zone RSI",14,2,1); LowerBand=iCustom(NULL,0, "Dynamic Zone RSI",14,2,1);
//===================================================================
// CCI berekenen
//===================================================================
CCI dupla;
CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1);
//===================================================================
// Estocástico berekenen
//===================================================================
duplo Stoch;
Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
//===================================================================
// Exibir informações
//===================================================================
// CCIValue
ObjectDelete(ccilabel);
ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0, 0);
ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);
ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20);
ObjectSetText(ccilabel, "CCIValue is " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue);
// StochValue
ObjectDelete(stochlabel);
ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0, 0);
ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40);
ObjectSetText(stochlabel, "StochValue is " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue);
// RSIValue
ObjectDelete(rsilabel);
ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0, 0);
ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20);
ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);
ObjectSetText(rsilabel, "RSIValue is " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue);
// UpperBandValue
ObjectDelete(rótulo superior);
ObjectCreate(upperbandlabel, OBJ_LABEL, 0, 0, 0, 0);
ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80);
ObjectSetText(upperbandlabel, "UpperbandValue is " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue);
// Valor LowerBandValue
ObjectDelete(lowerbandlabel);
ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0, 0);
ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100);
ObjectSetText(lowerbandlabel, "LowerBandValue is " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue);
//----
retorno(0);
}
//+------------------------------------------------------------------+
KG Suporte e Resistência mod
Olá,
Preciso de alguém para modificar um dos indicadores de apoio e resistência anexos. O primeiro tem um alerta quando uma fuga é feita. Este indicador é um dos melhores indicadores de suporte/resistência e também muito poderoso, especialmente em prazos mais altos.
Obrigado
kg_support_and_resistance.mq4 ou
kg_support_and_resistance_alert_revision_2.ex4