[Arquivo!] Escreverei um assessor GRATUITO - página 13

 

Olá!

Qualquer pessoa que saiba prescrever corretamente o seguinte no código:

Existe um indicador MACD Histogramm WIS. O histograma é calculado em seu código e barras coloridas, dependendo da direção da linha e do filtro macd em diferentes cores.

int start()
{
int limit,i;
int counted_bars = IndicatorCounted();

if(counted_bars > 0) counted_bars--;
limit = iBars(NULL,0) - counted_bars;

BufferResize(Filter);
BufferResize(Histograma);

for(i = 0; i <= limite; i++)
MACD[i] = iMA(NULL, 0, FastMA, 0, MAMethod, MAAppliedPrice, i) - iMA(NULL, 0, SlowMA, 0, MAMethod, MAAppliedPrice, i);
for(i = 0; i <= limite; i++)
Signal[i] = iMAOnArray(MACD, iBars(NULL,0), SignalMA, 0, MAMethod, i);
for(i = 0; i <= limite; i++)
Histogram[i] = MACD[i] - Signal[i];
CalcFilter(Linha, limite);
for(i = limite; i >= 0; i--)
{
if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i];
}
if(Histogram[i] < Histogram[i+1] && Filter[i] < Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = Histogram[i];
HistogramBuy[i] = 0.0;
}
if((Histograma[i] >= Histograma[i+1] && Filtro[i] <= Filtro[i+1]) ||| (Histograma[i] <= Histograma[i+1] && Filtro[i] >= Filtro[i+1])
{
HistogramWaitClose[i] = Histogram[i];
HistogramSell[i] = 0.0;
HistogramBuy[i] = 0.0;
}
}

return(0);
}

Estou tentando prescrever no Expert Advisor, uma das condições, a abertura de posições para cima se:

if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i];

mas preciso comparar apenas 2 barras fechadas, ou seja, a primeira e a segunda (zero não tocar), não todas (i-bars), ou seja, preciso comparar a primeira e a segunda barra, e se o gráfico de barras da primeira barra for maior que a segunda e estiver de acordo com os filtros e outras condições da EA, compre, para vender o oposto .... como prescrevê-lo corretamente, por favor, aconselhe, amador aprendiz de chá)

Obrigado

 
kvg31:

Escreverei um assessor de qualquer complexidade. O principal é ter uma boa idéia. Como você vai usá-lo não me importo: vender - não me importo (não vou pedir dinheiro).

P. S. Se você precisar de um indicador, você tem que me dizer a estratégia na qual você quer usá-lo.


Eu não sei nada sobre programação e sou um principiante.

Talvez este assessor já o tenha feito, em geral:

Com base no princípio do "rollover", o cruzamento de dois EMAs fecha o anterior e abre um novo, os EMAs devem ser variáveis.

Penso que em H1, H4 é bastante relevante.

 
riabusha:


Talvez tal EA já exista, aqui está como ela funciona:

Com base no princípio do "rollover", o cruzamento de dois EMAs fecha o anterior e abre um novo, os EMAs devem ser variáveis.

Penso que em H1, H4 é bastante relevante.

Sim, é a média móvel padrão incluída no pacote MT4. Mas não é EMA, mas SMA (Simple Moving Average), que não muda a questão. É claro que podemos mudar o tipo de MA no EA ou mesmo movê-lo para parâmetros externos, mas não se tornará um graal.
 

Olá.

Por favor, faça um simples Expert Advisor que abra um pedido para uma determinada quantidade de pontos e se o preço os ultrapassar e fechar no lado +, o pedido fecha e abre novamente no lado +. Se estiver na posição "menos", inverte para a posição "menos".

Parâmetros a serem definidos - Tamanho do lote e número de pontos a serem passados.

Muito obrigado de antemão.

Cumprimentos ao Dimitriy.

 
kvg31:

Escreverei um assessor de qualquer complexidade. O principal é ter uma boa idéia. Como você vai usá-lo não me importo: vender - não me importo (não vou pedir dinheiro).

P. S. Se você precisar de um indicador, você tem que me informar sobre a estratégia na qual você quer usá-lo.


Olá Prezados desenvolvedores. Por favor, ajude-me a criar um indicador baseado no indicador SSL_fast_sBar_mtf.

Quero que ele desenhe duas "réguas", uma com valor "Lb" maior e outra com valor menor (ou TIME FREAM maior e menor). Se na barra as cores

de ambos os "governantes" são os mesmos (e no anterior eles eram diferentes), então no início do próximo bar você deve dar o sinal para abrir (colocar a seta).

As setas devem ser desenhadas usando buffers indicadores, e não objetos gráficos. Os dados de ambas as "réguas" são necessários na janela dos parâmetros externos

(para uma maior seleção de seus parâmetros).

 

http://savepic.ru/1965498.gif

Eu não sei como enviar um link para o indicador. Está na biblioteca da MQL4.com

 

Boa tarde!

Muito eu peço para fazer um especialista (bem eu não sou um programador) :((.

Parâmetros técnicos:
1) Trabalhamos em um gráfico de velas de 4 horas cruzando duas linhas Movendo Média: um(Vermelho) período 18, método Exponencial, paraFechar preços, respectivamente(Amarelo) período 8, método também Exponencial, para Fechar preços.

2) Tamanho do comércio 1 lote

3) Trabalhamos de linhas cruzadas para linhas cruzadas. Assim que a linhaamarela cruza a linha vermelha(vermelha) no sentido ascendente (norte), a ordem de compra, o segundo cruzamento de linhas, a linha amarela cruza de acordo com a linha vermelha de cima para baixo - fixação da ordem aberta, com abertura simultânea de uma nova ordem de venda, e assim por diante.

4) Um stop loss de 35 pontos é definido para todas as negociações.

O gráfico de 4 horas permite que você evite movimentos desnecessários, ao contrário do gráfico horário, trabalhando com certeza.

Se apenas olharmos para os pares de moedas, a idéia se justifica (sem perdas, em torno de zero na pior das hipóteses), é claro, deve-se levar em conta a tendência e usar o Expert Advisor enquanto se olha para trás. Como exemplo, para EUR/USD, se em 1º de setembro compramos +139 pontos antes de cruzar +115 pontos, então compramos novamente antes de cruzar +1184 pontos em 12 de outubro. Tire a mesma foto em agosto +368 pontos de venda, depois compre venda no mesmo nível sem perdas e +181 pontos abaixo na venda com lucro. Além disso, por exemplo, ouro GOLD(a comissão é de 70 pontos, mas o ponto é de 2,5 dólares por lote) e assim, a partir do dia 31 de agosto, comprar +1789 pontos, vender imediatamente +547 pontos, +4557 pontos comprar, vender nulo, +4328 comprar, vender nulo e até este fim de semana novamente +3636 pontos.

Cumprimentos, Yuriy

 
Olá pessoal, não consigo entender o mql4(( quero escrever um pequeno EA baseado em dois EMA's (médias móveis) que dão um bip após a travessia? Você pode me dizer algo sobre este programa? Obrigado de antemão!!!
 
silmin85:
Olá pessoal, não consigo entender o mql4(( quero escrever um pequeno EA baseado em dois EMA's (médias móveis) que dão um bip após a travessia? Você pode me dizer algo sobre este programa? Obrigado de antemão!!!
Tome como base a Média Móvel padrão incluída no pacote e experimente com ela. Você pode substituir MA por EMA.
 
goldtrader:
Tome como base a Média Móvel padrão fornecida e experimente com ela. Você pode substituir o MA pelo EMA.
A questão é que eu quero um simples EA, que a cada cruzamento dos dois EMAs dê um bip! MetaTradere tem uma média móvel.mq4 em especialistas

Aqui está a descrição completa:

//+------------------------------------------------------------------+

//| Moving Average.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp.
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA 20050610

Lotes duplos externos = 0,1;
duplo máximoRisco externo = 0,02;
duplo fator de redução externo = 3;
período de mudança dupla externa = 12;
duplo MovingShift externo = 6;
//+------------------------------------------------------------------+
//| Calcular posições abertas |
//+------------------------------------------------------------------+
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);
senão devolve(-sells);
}
//+------------------------------------------------------------------+
//| Calcular o tamanho ideal do lote |
//+------------------------------------------------------------------+
duplo LotsOptimized()
{
lote duplo=Lotes;
int orders=HistoryTotal(); // histórico total de ordens
int losses=0; // número de ordens de perdas sem intervalo
//---- selecione o tamanho do lote
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- calcule o número de ordens de perdas sem uma pausa
if(DiminaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==falso) { Print("Erro na história!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continua;
//----
if(OrderProfit()>0) quebra;
if(OrderProfit()<0) perdas++;
}
if(perdas>1) lote=NormalizarDuplo(lote-lot*losses/DecreaseFactor,1);
}
//---- tamanho do lote de retorno
if(lote<0,1) lote=0,1;
retorno(lote);
}
//+------------------------------------------------------------------+
//| Verifique as condições de pedidos em aberto |
//+------------------------------------------------------------------+
CheckForOpen()
{
dupla mãe;
int res;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) voltar;
//---- get Moving Average
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- condições de venda
if(Abrir[1]>ma && Fechar[1]<ma)
{
res=OrderSend(Symbol(),OP_SELLL,LotsOptimized(),Bid,3,0,0,",MAGICMA,0,Red);
retornar;
}
//---- condições de compra
if(Abrir[1]<ma && Fechar[1]>ma)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,",MAGICMA,0,Blue);
retornar;
}
//----
}
//+------------------------------------------------------------------+
//| Verifique as condições de fechamento do pedido |
//+------------------------------------------------------------------+
verificação nula CheckForClose()
{
dupla mãe;
//---- go trading only for first tiks of new bar
if(Volume[0]>1) voltar;
//---- get Moving Average
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- check order type
if(OrderType()==OP_BUY)
{
if(Abrir[1]>ma && Fechar[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
pausa;
}
if(OrderType()==OP_SELL)
{
if(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
pausa;
}
}
//----
}
//+------------------------------------------------------------------+
//| Função Start |
//+------------------------------------------------------------------+
início nulo()
{
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular pedidos em aberto pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
senão CheckForClose();
//----
}

//+------------------------------------------------------------------+

Como posso mudá-lo aqui para que funcione para mim, eu não entendo! Eu só quero 50EMA e 100EMA e um bip em cada travessia!!!