[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 412
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
Bom dia a todos! enquanto escrevia um especialista em agitação, estava procurando por pontos de saída mais precisos e se deparou com um cruzamento entre RSI (8) e ADX(25). visualmente tudo está bem quando se negocia manualmente na demonstração.
Pergunta como escrever a condição de cruzamento RSI (8) com ADX(25) DI + por exemplo, se, RSI (8) tem um limite de 0 a 100, e ADX(25) não tem limite. isto é, se você lança ADX no gráfico sem limite e depois lança RSI nele, então escalas de RSI por ADX máximo e mínimo. se ADX especifica limite de 0 a 100, então há muito poucos cruzamentos claros de ADX com RSI.
É possível definir o valor do RSI quando ele é escalonado por ADX.
Não
É possível definir o valor do RSI quando ele é escalonado por ADX.
Tenho um indicador com cerca de 8 parâmetros, introduzi todos os parâmetros corretamente, verifiquei-o várias vezes, mas no erro de compilação ')' ainda aparece - parâmetros errados contagem D:\InstaTrader=experts=Expert_2.mq4 (11, 280)
Existe um limite para o número de parâmetros em um indicador não-padrão, quando conectado via iCustom?
Tenho um indicador com cerca de 8 parâmetros, introduzi todos os parâmetros corretamente, verifiquei-o várias vezes, mas no erro de compilação ')' ainda aparece - parâmetros errados contagem D:\InstaTrader=experts=Expert_2.mq4 (11, 280)
????... se você não se importa, por favor, dê uma resposta mais detalhada... e seria ótimo se você pudesse dar pelo menos algum script simples como exemplo, o que ajudaria a entender para que serve a função WindowHandle
Em seu nível atual de conhecimento, você não precisa muito dele.
Se você tem um desejo de se tornar um programador, então mastigue a ciência com a ajuda do Google. Consulta "site descritor de janela:mql4.com"
Peço ao guru da programação que me diga sobre minha pergunta, é mesmo realista fazer este conselheiro?
Qualquer coisa é possível, se você quiser que seja.
ver as seguintes coisas:
1) Controle de abertura de barras
2) EncomendarEnviar
Tente e tente, e os gurus irão corrigir
Aqui está uma EA para fazer a ordem abrir no FECHADO da vela, não apenas uma cruz.
Quem ajudará com antecedência agradece.
//+------------------------------------------------------------------+
//| RSI_MA.mq4 |
//| Copyright © 2008, AEliseev k800elik@gmail.com |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#direitos de propriedade intelectual "Copyright © 2008, Andrey E. k800elik@gmail.com"
#link da propriedade "http://www.metaquotes.net"
//---- parâmetros de entrada
CCI_Per=14;
externo MA_Per=20;
CCI_close_Per=14 externo;
duplo TakeProfit externo=500;
StopLoss duplo externo=150;
Lotes duplos externos=0,01;
Depósito externo interno=1000;
bool MM=falso;
externo interno _MagicNumber=131313;
dormir no exterior=5000;
int LotA=1, Err=0;
int j=0; var2,var1;
int contra=0;
int ticket;
bool var3;
bool order=false;
//+------------------------------------------------------------------+
//| função de inicialização de especialista |
//+------------------------------------------------------------------+
int init()
{
Comentário("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com");
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização de especialistas |
//+------------------------------------------------------------------+
int deinit()
{
/* int i, a1, a2;
//----
se (OrdensTotal()>0)
{
para (i=0; i==OrdensTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS);
se (OrderMagicNumber()==13131313)
{
a1=OrderClose(LotA*Lots,Ask,5,Red);
//a2=OrderClose(var1,LotA*Lots,Ask,5,Red);
}
}
} */
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
se (isNewBar()) Todas as barras();
EveryTick();
//----
retorno(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Verificar novo bar |
//+------------------------------------------------------------------+
bool isNewBar()
{ data/hora estática TimeBar=0;
bool flag=false;
if(TimeBar!=Time[0])
{
TimeBar=Time[0];
bandeira=verdadeiro;
}
retorno(bandeira);
}
//+------------------------------------------------------------------+
//| Executar ação quando surgir uma nova barra |
//+------------------------------------------------------------------+
nulo Todas as barras()
{
// Imprimir("Chegou uma NOVA BAR!)
duplo MA[100], CCI[100], CCIclose[100], StandDevi[100];
int i,limit=ArraySize(CCI);
duplo SL, TP;
Dormir(_Dormir);
SL = NormalizeDouble(Ask - StopLoss*Point, Dígitos);
TP = NormalizeDuplo(Ask + TakeProfit*Point, Dígitos);
para(i=0; i<limite; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
// verificar se há dinheiro suficiente para abrir um novo pedido
if(AccountFreeMargin()<(1000*Lots))
{
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin()));
retorno(0);
}
//=================================================================================
int _GetLastError = 0, _OrdensTotal = OrdensTotal();
//---- passar por todas as posições em aberto
para ( int z = _OrdensTotal - 1; z >= 0; z -- )
{
//---- se ocorrer um erro ao selecionar a posição, continuar para a próxima
se ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Imprimir("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continuar;
}
// se uma posição é aberta não para o símbolo atual, ela é pulada
se ( OrderSymbol() != Symbol() ) continuar;
// se o MagicNumber não for igual a _MagicNumber, pule
// esta posição
se ( OrderMagicNumber() != _MagicNumber ) continuar;
//---- se uma posição BAY estiver aberta,
se ( OrderType() == OP_BUY )
{
//---- se a CCI cruzar a linha 190 para baixo
if (((CCIclose[2]>190) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2])
{
//---- posição de fechamento
se ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) )
{
_GetLastError = GetLastError();
Imprimir("OrderClose error # , _GetLastError );
Err=1;
retorno(-1);
}
}
// se o sinal não mudou, saia - é muito cedo para abrir
//nova posição
senão
{ return(0); }
}
//---- se uma posição de Venda for aberta,
se ( OrderType() == OP_SELL )
{
//---- se a CCI cruzar a linha -190 para cima,
if (((CCIclose[2]<-190) && (CCIclose[1]>=-300)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2]))
{
//---- posição de fechamento
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red )
{
_GetLastError = GetLastError();
Imprimir("OrderClose error # ", _GetLastError );
Err=2;
retorno(-1);
}
}
// se o sinal não mudou, saia - é muito cedo para abrir
// nova posição
senão voltar(0);
}
}
//+------------------------------------------------------------------+
//| se a execução tiver chegado a este ponto, não há posição em aberto
//| verificar se é possível abrir uma posição |
//+------------------------------------------------------------------+
Dormir(_Dormir);
//---- se a CCI tiver cruzado o MACD de baixo para cima,
SL = NormalizeDouble(Bid - StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid + TakeProfit*Point, Dígitos);
se ((CCI[1]>MA[limite-MA_Por-1]) && (CCI[2]<MA[limite-MA_Por-2])
{
//---- posição aberta na BAY
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError();
Imprimir ("OrderSend OP_BUY error # ", _GetLastError );
Err=3;
retorno(-1);
}
retorno(0);
}
//---- se a CCI tiver cruzado o MACD de cima para baixo,
SL = NormalizeDouble(Ask + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Ask - TakeProfit*Point, Dígitos);
se ((CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>MA[limit-MA_Per-2])
{
//---- abrir uma posição de venda
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError();
Imprimir("OrderSend OP_SELL error # ", _GetLastError );
Err=4;
retorno(-1);
}
retorno(0);
}
}
//+------------------------------------------------------------------+
//| Realizar cálculos a cada mudança de preço |
//+------------------------------------------------------------------+
nulo EveryTick()
{
int i;
se (MM===verdadeiro)
{
se (AccountBalance()>(2*Deposit)) LotA=2;
se (AccountBalance()>(3*Deposit)) LotA=3;
se (AccountBalance()>(4*Deposit)) LotA=4;
se (AccountBalance()>(5*Deposit)) LotA=5;
se (AccountBalance()>(6*Deposit)) LotA=6; if (AccountBalance()>(6*Deposit); LotA=6;
se (AccountBalance()>(7*Deposit)) LotA=7;
se (AccountBalance()>(8*Deposit)) LotA=8;
se (AccountBalance()>(9*Deposit)) LotA=9;
se (AccountBalance()>(10*Deposit)) LotA=10;
se (AccountBalance()>(11*Deposit)) LotA=11;
se (AccountBalance()>(12*Deposit)) LotA=12;
se (AccountBalance()>(13*Deposit)) LotA=13;
se (AccountBalance()>(14*Deposit)) LotA=14;
se (AccountBalance()>(15*Deposit)) LotA=15;
se (AccountBalance()>(16*Deposit)) LotA=16;
se (AccountBalance()>(17*Deposit)) LotA=17;
se (AccountBalance()>(18*Deposit)) LotA=18;
se (AccountBalance()>(19*Deposit)) LotA=19;
se (AccountBalance()>(20*Deposit)) LotA=20;
}
int _GetLastError = 0, _OrdensTotal = OrdensTotal();
int z;
duplo SL, TP;
duplo MA[100], CCI[100], CCIclose[100], StandDevi[100];
int limit=ArraySize(CCI);
para(i=0; i<limite; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
interruptor(Err)
{
caso 1:
para ( z=_OrdensTotal - 1; z >= 0; z -- )
{
se ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Imprimir("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continuar;
}
se ( OrderSymbol() != Symbol() ) continuar;
se ( OrderMagicNumber() != _MagicNumber ) continuar;
se ( OrderType() == OP_BUY )
{
if (((CCIclose[2]>300) && (CCIclose[1]<=300) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2])
{
se ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
{
_GetLastError = GetLastError();
Imprimir ("CASE OrderClose error # , _GetLastError );
Err=1;
retorno(-1);
}
senão Err=0;
}
}
}
pausa;
//=============================================================================
caso 2:
para ( z=_OrdensTotal - 1; z >= 0; z -- )
{
se ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Imprimir("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
continuar;
}
se ( OrderSymbol() != Symbol() ) continuar;
se ( OrderMagicNumber() != _MagicNumber ) continuar;
se ( OrderType() == OP_SELL )
{
if (((CCIclose[2]<-300) && (CCIclose[1]>=-300) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2]))
{
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red )
{
_GetLastError = GetLastError();
Imprimir("CASE OrderClose error # ", _GetLastError );
Err=2;
retorno(-1);
}
senão Err=0;
}
}
}
pausa;
//==============================================================================
caso 3:
SL = NormalizeDouble(Bid - StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid + TakeProfit*Point, Dígitos);
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError();
Imprimir ("CASE OrderSendam OP_BUY error # ", _GetLastError );
Err=3;
retorno(-1);
}
senão Err=0;
pausa;
//===================================================================================
caso 4:
SL = NormalizeDouble(Ask + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Ask - TakeProfit*Point, Dígitos);
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError();
Print("CASE OrderSend OP_SELL error # ", _GetLastError );
Err=4;
retorno(-1);
}
senão Err=0;
pausa;
}
}
Aqui está uma EA para fazer a ordem abrir no FECHADO da vela, não apenas uma cruz.
Eu gostaria de saber como abrir o pedido.
E como você planeja saber que o bar fechará com este tique? Talvez com a abertura de um novo bar?
O código é inserido por botão SRC