[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 1127
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
Muito obrigado por sua ajuda =)
Não se esqueça de que no testador o indicador não joga a janela de alerta, mas, em vez disso, escreve mensagens de alerta nos registros. É melhor depurar tais pedaços de código com scripts - é mais rápido.
Além disso, as mensagens indicadoras, curiosamente, não são escritas no testador para os logs do testador, mas para os logs em tempo real.
http://www.google.ru/search?as_sitesearch=mql4.com&as_q=%EA%EE%EC%E8%F1%F1%E8%FF+%E2+%F2%E5%F1%F2%E5%F0%E5
Não há uma maneira "direta" de fazer isso.
Você poderia fazer desta maneira.
Ou também encontrei isto
Obrigado!
Eu não entendo bem como funcionam as condições.
Decidi descobrir como funciona um indicador fractal, qual é a diferença entre MODE_UPPER e MODE_LOWER, e escrevi o seguinte código
int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>==1|down>=1){
Alerta("Previous upper fractal is:", para cima, " O fractal inferior anterior é:", para baixo);Alerta ("y",y);}}}
WindowFirstVisibleBar() dá o número de barras no gráfico, esta coisa funciona se você riscar se (para cima>=1||down>=1) da EA, dá uma boa série de barras contadas, só que são tantas.
É como um sinal ||| ou, o operador parece fazer os parênteses {} se pelo menos uma das condições é verdadeira, ou ambas são verdadeiras ao mesmo tempo, certo?
Nada mudou para mim!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Acho que entendi bem. Ajude-me!!!!!!!
Eu não entendo bem como funcionam as condições.
Decidi entender como funciona um indicador fractal, qual é a diferença entre MODE_UPPER e MODE_LOWER.
int start()
{\i1}int y;
y= WindowFirstVisibleBar();Alerta ("y",y);
para (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
se (acima>==1|| abaixo>=1){
Alerta ("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alerta ("y",y);}}}} Alerta ("Previous upper fractal is:", up, " Previous lower fractal is:", down)
WindowFirstVisibleBar() dá o número de barras no gráfico, esta coisa funciona se você riscar se (para cima>=1|baixo>=1), dá uma boa série de barras calculadas, mas há muitas delas.
É como um sinal ||| ou, o operador parece fazer os parênteses {} se pelo menos uma das condições é verdadeira, ou ambas são verdadeiras ao mesmo tempo, certo?
Nada mudou para mim!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Acho que tudo está correto. Ajude-me!!!!!!!
código normal lugar via counter-alt - M - resposta mais rápida...sem exclamações.
É como ||||
https://docs.mql4.com/ru/basis/operations/bool
Uma operação OU lógica.
Zy counter-alt - M é como um botão de pressão SRC e codifica através dele.
Eu tentei o código que você sugeriu. O resultado é sempre o mesmo - ele continua abrindo negócios durante o dia. Mais uma vez, eu gostaria de manter a opção de ligar/desligar.
Aqui estão as variantes testadas:
bool WaitForNewDay = verdadeiro;
init() vazio
{
SMB=Símbolo();
retornar;
}
início nulo()
{
bool Trade=verdadeiro;
if(WaitForNewDay){if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)!=0) Trade=false;}
if(CalculateCurrentOrders(Symbol())==0 && Trade)
{CheckForOpen(); return;}
}
//-----------------------------------------------------------------
int HistoryBuy(int MAGICMA)
{int BuyOrders=0;
para (int i=OrdensHistóriaTotal()-1;i>=0;i--) {
se (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
Imprimir(" ",GetLastError()," ",i);
}
senão {
if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGICMA){ continuar;}
if(OrderType()==OP_BUY){
if(OrderOpenTime()>=iTime(SMB,PERÍODO_D1,0)){
BuyOrders++;
}
}
}
}
devolução(BuyOrders);
}
//-----------------------------------------------------------------
int HistorySell(int MAGICMA){
int SellOrders=0;
para (int i=OrdensHistóriaTotal()-1;i>=0;i--){
se (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
Imprimir(" ",GetLastError()," ",i);
}
senão {
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGICMA){ continuar;}
if(OrderType()==OP_SELL){
if(OrderOpenTime()>=iTime(SMB,PERÍODO_D1,0)){
VENDEDORES++;
}
}
}
}
devolução(SellOrders);
}
//////////////Outra opção/////////////////////
bool WaitForNewDay = verdadeiro;
Comércio=verdadeiro;
init() vazio
{
SMB=Símbolo();
if(WaitForNewDay) {Trade=false;}
retornar;
}
início nulo()
{
if(WaitForNewDay) {if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)==0) Trade=true;}
if(CalculateCurrentOrders(Symbol())==0 && Trade)
{CheckForOpen(); Trade=false; return;}
}