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
...
Não é um erro de código
Vá até Ferramentas->Centro de História e então escolha e baixe dados de 1 minuto do símbolo que você quer testar (tudo que você precisa para 90% de precisão é 1 minuto de dados, sem necessidade de baixar o resto)
Olá Codificadores
Ainda estou aprendendo meus primeiros passos no MQL-Code.
qual é a razão quando tenho a mensagem seguinte na revista:
Testgenerator:
erro de dados incomparável ( limite de volume 159 em 2009.05.06 19 15 excedido )
onde devo procurar no código?
ObrigadoMeu amigo e eu estamos trabalhando em um EA. Em algum momento ele (o EA) precisa ler & recuperar o preço em uma determinada hora, digamos, 17:00 EST... etc.
Qualquer idoso pode aconselhar como fazer isso, em vez de contar as barras de preço para trás? Talvez já exista uma função escrita para isso. Por gentileza, ajude. Obrigado a todos e que Deus os abençoe!
B rgds/abundânciaiBarShift(...) ajuda a encontrar o número de barras em sua tabela, depois use Fechar ou Abrir.
iBarShift(...) ajuda a encontrar o número de barras em sua tabela, depois use Fechar ou Abrir.
Obrigado Roger. Isso foi útil. E desculpe por não ter tornado tudo mais claro. Precisamos dos dois preços Bid & Ask. Como podemos obtê-los? Desculpe se é uma pergunta idiota.
B rgds/abundância
Erro de dados
Oi mladen
obrigado por sua resposta rápida.
Acho que não é um problema dos tickdata, porque quando eu testo com outro EA funciona bem.
Acho que é um problema com o Custom-Indicator.
Eu vou construir no seguimento indi: AllAverages_v2.3
duplo ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,0);
agora tenho a seguinte mensagem: número tampão de índice inválido na função iCustom
Como definir este iCustom corretamente?
Olá, senhor, encontrei o problema.
Eu esqueci um parâmetro: Cor
a definição correta:
duplo ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF, "AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,ALL_AVERA_COLOR,0);
Não é um erro no código Ir para Ferramentas->Centro de História e depois escolher e baixar 1 minuto de dados do símbolo que você quer testar (tudo o que você precisa para 90% de precisão é 1 minuto de dados, sem necessidade de baixar o resto)
Obrigado Roger. Isso foi útil. E desculpe por não ter deixado isso mais claro. Precisamos de ambos os preços Bid & Ask. Como podemos obtê-los? Desculpe se é uma pergunta boba B rgds/abundance
Todos os preços nos gráficos são Licitações. Ask=Bid+MarketInfo(Symbol(),MODE_SPREAD)*Ponto;
Restrições ao comércio
Então comecei a escrever uma EA básica com um desses construtores de EA geradores de modelos. Pareço ter conseguido a premissa do modelo EA, mas preciso de uma maneira de fazer com que o EA entre no máximo em uma profissão. Neste momento, ele continua gerando negócios e faz com que o sorteio seja redículo. Aqui está o código do lote de comércio:
//Check position
bool IsTrade = Falso;
para (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = Verdadeiro;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Início do Sinal (Compra de Saída) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Ordem = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Fim do sinal (Compra de Saída) |
//+------------------------------------------------------------------+
if (Order === SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
se (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuar;
}
// Parada de trilha
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Ponto * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
{} else {
//Close
Se alguém pudesse ajudar, seria muito apreciado.
Então comecei a escrever uma EA básica com um desses construtores de EA geradores de modelos. Pareço ter conseguido a premissa do modelo EA, mas preciso de uma maneira de fazer com que o EA entre no máximo em uma profissão. Neste momento, ele continua gerando negócios e faz com que o sorteio seja redículo. Se alguém pudesse ajudar, seria muito apreciado.
{
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
}Obrigado OnTheRoad
Encontrei esta EA, não entendo parte dela.
bool get_signal()
{
bool enable_trade = falso;
int trend_up = 0;
int trend_down = 0;
int i;
ArrayInitialize( TradeSign, false );
if( Bars >= 100 ){
for( i = 0 ; i < DEF_MA_NUM ; i++ ){
Buf_MA[0][ i ] = calc_SMA( PERÍODO_M30, MA_prm_1, i );
Buf_MA[1][ i ] = calc_SMA( PERÍODO_M30, MA_prm_2, i );
Buf_MA[2][ i ] = calc_SMA( PERÍODO_M30, MA_prm_3, i );
Buf_MA[3][ i ] = calc_SMA( PERÍODO_M30, MA_prm_4, i );
Buf_MA[4][ i ] = calc_SMA( PERÍODO_M30, MA_prm_5, i );
}
duplo vRSI = iRSI( Symbol(), PERÍODO_M5, RSI_period5, PRICE_CLOSE, 0 );
duplo vRSI2 = iRSI( Symbol(), PERÍODO_M1, RSI_period1, PRICE_CLOSE, 0 );
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] < Buf_MA[1]) && (Buf_MA[1] < Buf_MA[0])){
trend_up+++;
}
}
if((trend_up > 3) && (vRSI <= RSI_lower) && (vRSI2 <= RSI_lower)){
TradeSign[SIG_Buy] = verdadeiro;
enable_trade = verdadeiro;
}
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] > Buf_MA[1]) && (Buf_MA[1] > Buf_MA[0])){
trend_down+++;
}
}
if((trend_down > 3) && (vRSI >= RSI_upper) && (vRSI2 >= RSI_upper)){
TradeSign[SIG_Sell] = verdadeiro;
enable_trade = verdadeiro;
}
}
return(enable_trade);
}
duplo calc_SMA( int timeframe, int period, int offset )
{
vMA duplo = 0;
soma dupla=0;
int i;
for( i = 0; i < período; i++ ){
soma += iClose( Símbolo(), prazo, i + offset );
}
vMA = soma / período;
retorno(vMA);
}
há uma parte em que "trendup>3", isto é calculado a partir da matriz? Como funciona um array, então pode dar "trendup>3" ? Isto é para conhecer a média a partir de uma única linha (é provável que essa linha suba ou desça)? Eu não entendo como funciona.Como reiniciar especialistas quando se atinge o lucro alvo? Estou usando a estratégia de martingale, mas ela não abre lotes em sequência...
exemplo: lotes 0,1, 0,2, 0,4, 0,8, 1,6
lotes abertos: 0,1, 0,2, 0,4 -> obter lucro nos lotes 0,4 mas os próximos lotes são 0,8, 0,1, 0,2, 0,4...
qualquer um pode ajudar...???
for(int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderComment()==Name_ExpertS)
{ T++;
if(OrderType()==OP_BUY) s=1;
if(OrderType()==OP_SELL) s=2;
Last=OrderOpenPrice();
}}
if (Lots<0.1) Lots=0.1;
for (int j=0;j<T;j++)
{
Lots=LotsUP[j];
}Alto/baixo com critérios
Estou tentando codificar um indicador que procura por coisas específicas antes de afirmar que uma vela é o verdadeiro alto ou o verdadeiro baixo. Este é basicamente o critério (anexei um gráfico para ajudar a explicar):
1. Procure Fechar que é mais baixo que todos os 20 fecha antes (a segunda seta é este ponto), depois (2) 12 barras depois o fechamento deve ser mais alto que os 12 fecha antes (a terceira seta). Esta tendência para cima continuará até (3) que haja um fechamento que seja mais baixo que as 7 fecham antes (a quarta flecha).
Tenho tentado usar a função iLowest sem muito sucesso. Acho que minha melhor aposta é usar uma matriz, mas meu conhecimento de matrizes é limitado.
Alguma idéia ou exemplo de como usar o ArrayMinimum e o ArrayMaximum? Ou se existe uma maneira de obter o iLowest e o iHighest para trabalhar?