[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 480

 

Ajude adar sentido a este Expert Advisor

baseado no indicador jacaré
sinal para comprar quando a linha verde cruza o azul e vermelho de baixo para cima abre uma posição no sinal Comprar
sinal para vender quando a linha verde cruza o vermelho e azul de cima para baixo abre uma posição no Sell
posições são fechadas quando StopLoss e TakeProfit


não há erros durante a compilação, mas há erros ao testar no testador de estratégia
o primeiro erro à espera da ordem da string não abriu código deletado contendo a string compilada não houve erros no testador de estratégia
funciona, mas abre apenas posição de Venda para Comprar não quer
Você poderia por favor olhar e assinar o que está errado no código

Arquivos anexados:
all_2.mq4  2 kb
 
novicek:

Ajude-me a lidar com esta EA

indicador jacaré
um sinal de compra quando a linha verde cruza a linha azul e a vermelha cruza de baixo para cima, abre uma posição de compra
um sinal de venda quando a linha verde cruza a vermelha e a azul de cima para baixo abre uma posição de venda
posições são fechadas quando o StopLoss e o TakeProfit são alcançados


nenhum erro durante a compilação, mas quando testado no testador de estratégia há erros
o primeiro erro à espera da ordem da string não abriu código apagado contendo string da compilação nenhum erro executado no testador de estratégia
funciona, mas abre apenas posições em Vender na Compra não quer
Você poderiapor favor olhar e escrever o que está errado no código


olhar para as linhas de abertura:

OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,magic,Ask , StopLoss * Point, Ask , TakeProfit * Point);
            
OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,magic,Bid , StopLoss * Point, Bid , TakeProfit * Point);

Agora veja a especificação da própria função OrderSend (veja descrição aqui https://docs.mql4.com/ru/trading/OrderSend)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) 

e verificar se os parâmetros ainda estão lá

 
novicek:

Que não haja dúvidas sobre minha alfabetização
Não colocar sinais de pontuação é a minha farra, só isso.


Quando você colocar em prática sua binge "não pontuar", não se surpreenda de encontrar seus postos de interrogação freqüentemente ignorados.

As pessoas também têm o hábito de respeitar a si mesmas.
Eles também têm o hábito de respeitar sua própria língua.

 
Obrigado, mas não consegui encontrar uma solução lá, preciso aplicar o bollinger ao rsi, posso fazê-lo manualmente, mas como faço programático?
 
ZZZEROXXX:
Obrigado, mas não encontrei uma solução lá, preciso impor o bollinger ao rsi, você pode fazê-lo manualmente, mas como fazê-lo de forma programática?

O Bollinger é empurrado para cima e para baixo na StdDev. Você pode fazer isso de duas maneiras.

1. Se você estiver satisfeito com a mudança de desvio inteiro do Deviat, você pode usar a função iBandsOnArray

2. Se você também precisar contar as frações decimais do Deviat, você terá que usar as funções iMAOnArray e iStdOnArray

Isto é o que parece no código:

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_minimum 0
#property indicator_maximum 100

#property indicator_color1 SkyBlue
#property indicator_color2 LimeGreen
#property indicator_color3 LimeGreen
#property indicator_color4 LimeGreen
#property indicator_style2 STYLE_DOT

extern int rsiPeriod=14;
extern int rsiPrice=PRICE_CLOSE;
extern int bbPeriod=20;
extern int bbShift=0;
int bbMethod=MODE_SMA;
extern double bbDeviat=2;

double rsi[], ma[], up[], dn[], stdev[];
//------------------------------------------------------------------    init
int init()
{
  int i=0;
  SetIndexBuffer(i, rsi); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "RSI"); i++;
  SetIndexBuffer(i, ma); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "MA"); i++;
  SetIndexBuffer(i, up); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "UP"); i++;
  SetIndexBuffer(i, dn); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "DN"); i++;
  IndicatorBuffers(5);
  SetIndexBuffer(i, stdev); SetIndexStyle(i, DRAW_NONE); // добавочный буфер расчета
  return(0);
}
//------------------------------------------------------------------    start
int start()
{
  int count=IndicatorCounted(); if (count<0) return; // если ошибка расчета
  int lim=Bars-count; if (lim>1) lim=Bars-1; // если нерасчитано более 1 бара, то полный пересчет
  // 1. получаем массив RSI
  for (int i=lim; i>=0; i--) rsi[i]=iRSI(Symbol(), Period(), rsiPeriod, rsiPrice, i);
  // 2. строим на основе RSI - МА (средняя линия болинджера), StdDev и Верхнюю и Нижнюю границу Боллинджера
  for (i=lim; i>=0; i--) 
  {
    ma[i]=iMAOnArray(rsi, 0, bbPeriod, bbShift, bbMethod, i); // средняя линия
    stdev[i]=iStdDevOnArray(rsi, 0, bbPeriod, bbShift, bbMethod, i); // отклонение
    up[i]=ma[i]+bbDeviat*stdev[i]; // верхняя граница
    dn[i]=ma[i]-bbDeviat*stdev[i]; // нижняя граница
  }
  return(0);
}
Arquivos anexados:
_bbonrsi.mq4  3 kb
 
abolk:

Quando você implementar seu viés de "não pontuar", não se surpreenda que seus postos de interrogação sejam freqüentemente ignorados.
As pessoas também têm tendência a se respeitarem a si mesmas.
Eles também têm o hábito de respeitar sua própria língua.

É isso mesmo. Dói o olho e faz com que você queira se virar.
E de qualquer forma surgem dúvidas - "sobre minha alfabetização (educação)".
 
sergeev:

No código, é o que parece:

Obrigado! Exatamente o que você precisa.
 
abolk:


Quando você implementar seu viés de "não pontuar", não se surpreenda que seus postos de interrogação sejam freqüentemente ignorados.

As pessoas também têm tendência a se respeitarem a si mesmas.
Eles também têm o hábito de respeitar sua própria língua.

Eu, por exemplo, ainda não sei onde colocá-los, só sei que deve haver um ponto no final - sei disso com certeza. O russo é a língua mais difícil. Mas tem a vantagem de que você pode se expressar de modo que qualquer outra língua seria a inveja, especialmente a linguagem dos palavrões, é curta e compreensível para todos, eu às vezes a uso quando alguém é apertado você jura e todos imediatamente compreendem tudo e durante o dia ninguém vem até você com perguntas estúpidas.
 
Caro, você poderia aconselhar como chamar as informações Open[1] e Close[1] de várias TFs para o Expert Advisor?
 
Um bzik e um B em russo são coisas diferentes. Eu tenho um B sólido, sou bom o suficiente.