Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 49
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
Obrigado, isto é correto?
if(label==Lime) BUY_ = true;
Não, é assim que você obtém os dados de cor como um tipo int.
Tente ver o que está impresso no comentário.
Leia sobre a conversão
Leia sobre a conversão
Obrigado, a condição em si é correta?
if(label==Lime) BUY_ = true;
if(label==Red) BUY_ = false;
Provavelmente não. Se os dados forem do tipostring, você precisa anexá-los entre aspas, e escrever uma correspondência completa de cor caracter por caracter: "clrLime".
Provavelmente não. Se os dados forem do tipostring, você deve anexá-los entre aspas, e escrever uma correspondência completa de cor caracter por caracter: "clrLime".
Não, não é preciso estar entre aspas - estas são constantes. Ou seja, deveria ser assim: if(label===clrLime) {}
Obrigado, funciona.
Você poderia me dizer como obter corretamente o nível do indicador estocástico a partir do alto prazo.
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
Quando o indicador é ajustado em um período de tempo alto, tudo está correto, a seta é ajustada quando a linha do indicador está acima de 55.
Quando mudado para uma tabela inferior, o caos.
Obrigado, funciona.
Você poderia me dizer como obter o nível do indicador estocástico corretamente, a partir do alto prazo.
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto1_0=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i);
double sto1_1=iStochastic(Symbol(),TimeFrame1,kperiod1,dperiod1,slowing1,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,i+1);
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
Quando o indicador é ajustado em um período de tempo alto, tudo está correto, a seta é ajustada quando a linha do indicador está acima de 55.
Quando você muda para uma tabela inferior, o caos.
Se você estiver falando sobre o ciclo do indicador, então, para saber qual barra do tempo alto corresponde à barra, indicada pelo índice do ciclo no baixo preço, você precisa obter o tempo i da barra. Então este tempo é usado para identificar a barra do quadro alto que corresponde a este tempo. Por exemplo: uma barra de H4 corresponde a quatro barras de H1. Assim, quatro valores do índice do ciclo i de H1 apontarão para a mesma barra em H4.
De suas variáveis (seus nomes) não consigo entender de qual barra você está obtendo os valores. Portanto, é difícil dizer outra coisa que não seja teoria.
Se você estiver falando do ciclo indicador, para saber qual barra de tempo superior corresponde à barra indicada pelo índice do ciclo no tf inferior, você precisa obter o tempo da barra i. Então este tempo é usado para identificar a barra do quadro alto que corresponde a este tempo. Por exemplo: uma barra de H4 corresponde a quatro barras de H1. Correspondentemente, quatro valores do índice do ciclo i do período H1 apontarão para a mesma barra no período H4.
De suas variáveis (seus nomes) não consigo entender de que barra você obtém os valores. Portanto, é difícil dizer outra coisa que não seja teoria.
O indicador está definido em M1.
A condição principal para a seta para cima é a linha indicadora na M5 acima do nível 55.
Esta condição não é atendida, mesmo que a linha esteja abaixo do nível 55 na M5, a seta ainda está colocada.
como escrever a condição "se a alta de 1 barra for maior que a baixa de 3..." no robô.
O gatilho não deve ser "OnTick()".
mas toda vez que 0 barra se torna 1
como escrever a condição "se a alta de 1 barra for maior que a baixa de 3..." no robô.
O gatilho não deve ser "OnTick()".
mas toda vez que 0 barra se torna 1
Você poderia fazer o seguinte
//| test03.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CNevBar
{
private:
datetime curbar;
datetime lastbar;
public:
CNevBar();
~CNevBar();
bool new_bar(string symbol,ENUM_TIMEFRAMES period);
};
//+------------------------------------------------------------------+
void CNevBar::CNevBar()
{
}
//+------------------------------------------------------------------+
void CNevBar::~CNevBar(void)
{
}
//+------------------------------------------------------------------+
bool CNevBar:: new_bar(string symbol,ENUM_TIMEFRAMES period)
{
curbar=(datetime) SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar==0)lastbar=(datetime)SeriesInfoInteger(symbol,period,SERIES_LASTBAR_DATE);
if(lastbar!=curbar)
{
lastbar=curbar;
return(true);
}
return(false);
}
CNevBar newbar;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(newbar.new_bar(_Symbol,PERIOD_CURRENT))
{
if(High[1]>Low[3])
{
}
}
}
//+------------------------------------------------------------------+
...