[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

 

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.

 
PapaYozh:

Não
????... se você não se importa, por favor, dê uma resposta mais detalhada... e seria ótimo se você pudesse dar pelo menos um simples roteiro como exemplo, o que deixaria claro para que serve a função WindowHandle
 
drimara: ou seja, se você lançar ADX na tabela sem especificar os limites e depois lançar RSI sobre ela, então RSI escalas por ADX máximo e mínimo. se ADX especifica limites de 0 a 100, então haverá muito poucos cruzamentos óbvios entre ADX e RSI.

É possível definir o valor do RSI quando ele é escalonado por ADX.

E se você então o mover para a esquerda e direita, os pontos de cruzamento começarão a se desviar
 
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)
 
sss2019:
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)
Mostrar código + parâmetros de entrada no indicador
 
7777877:
????... 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"

 
Estou pedindo aos gurus da programação que me informem sobre minha pergunta, é até realista fazer este conselheiro?
 
stater:
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;

}

}

 
Neo777:

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