[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 160
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
Se durante o teste visual do EA 1.mq4 (anexo) eu colocar em um gráfico o indicador 3-cci-h3 (anexo), então, como parece, com exatamente os mesmos parâmetros dos sinais cci calculados do indicador e os cci reais (texto do objeto no canto superior direito) não coincidem.
POR QUÊ?
Por que é que os alertas não funcionam neste indicador?
Código de Conselheiro Especializado:
Código indicador:
//+------------------------------------------------------------------+
//| i-3CCI-h.mq4 |
//| johnfantom & kimIV |
//| http://www.kimiv.ru |
//| |
//| 02.01.2006 CCI com 3 TF em uma garrafa |
//+------------------------------------------------------------------+
#propriedade copyright "johnfantom & KimIV"
#link da propriedade "http://www.kimiv.ru"
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 1
#indicador de propriedade_color1 DodgerBlue
#indicador de propriedade_máximo 1.4
#indicador de propriedade_nível1 0
#indicador de propriedade_mínimo -1,2
//------- Parâmetros indicadores externos -------------------------------
CCI_Periodo_0 = 14; // período CCI para o período de tempo atual
nível interno externo_0 = 100; // Nível CCI para o TF atual
TF_1 = 60; // Número de minutos no primeiro período de tempo
CCI_Periodo_1 = 14; // Período CCI para a primeira TF
nível interno externo_1 = 100; // Nível CCI para o primeiro TF
TF_2 = 240; // Número de minutos da segunda TF
CCI_Periodo_2 = 14; // Período CCI para a segunda TF
nível de int externo_2 = 100; // nível de CCI para o segundo TF
int externo NúmeroOfBars = 1000; // Número de barras (0-All)
ExtBars ExtBars = 3;
int per;
//------- Buffers indicadores ------------------------------------------
duplo buf0[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
init() {
IndicatorDigits(1);
SetIndexBuffer(0, buf0);
SetIndexLabel(0, "i-3CCI-h");
SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
SetIndexEmptyValue(0, 0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de indicador personalizada |
//+------------------------------------------------------------------+
void deinit() {
Comentário(");
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
início nulo() {
duplo cci0,cci1,cci2;
int nb1, nb2; contar;
int LoopBegin, sh;
se (NumberOfBars==0) LoopBegin=Bars-1;
else LoopBegin=NumberOfBars-1;
LoopBegin=MathMin(Bars-1, LoopBegin);
count=IndicatorCounted();
para (sh=count; sh>=0; sh--) {
nb1=iBarShift(NULL, TF_1, Time[sh+1], False);
nb2=iBarShift(NULL, TF_2, Time[sh+1], False);
cci0=iCCI(NULL, 0, CCI_Period_0, PRICE_CLOSE, sh+1);
cci1=iCCI(NULL, TF_1, CCI_Period_1, PRICE_CLOSE, nb1);
cci2=iCCI(NULL, TF_2, CCI_Period_2, PRICE_CLOSE, nb2);
/* duplo cci[3];
cci[0]=cci0;
cci[1]=cci1;
cci[2]=cci2;
string s1="cci-0 ***"+DoubleToStr(cci[0],3);
string s2="cci-1 ***"+DoubleToStr(cci[1],3);
string s3="cci-2 ***"+DoubleToStr(cci[2],3);
string str[3];
str[0]=s1;
str[1]=s2;
str[2]=s3;
color col=Lime;
para(int y=0;y<3;y++)
{ObjectCreate("textSignal "+y,OBJ_LABEL,0,0,0,0,0)
ObjectSet("textSignal "+y,OBJPROP_CORNER,1);
ObjectSet("textSignal "+y,OBJPROP_XDISTANCE,35-25);
ObjectSet("textSignal "+y,OBJPROP_YDISTANCE,y*(20)+20+8));
if(cci[y]>=0)col=Lime;else col=Red;
if(cci[y]>Level_0) col=Aqua;
if(cci[y]<-Level_0) col=DarkViolet;
ObjectSetText("textSignal "+y,str[y],15, "Tahoma",col);
}
*/
if (cci0>Level_0 && cci1>Level_1 && cci2>Level_2) {buf0[sh]=1;
se (por != Tempo[0]) {per = Tempo[0];
if(sh<=ExtBars && ExtBars!=-1)
Alerta(Símbolo(),Período()," ",
TimeYear(Time[sh]),",
TimeDay(Time[sh]),",
TimeMonth(Time[sh]),",
TimeHour(Time[sh])",":",
TimeMinute(Time[sh]),",
"Compra");}}}
if (cci0<-Level_0 && cci1<-Level_1 && cci2<-Level_2) {buf0[sh]=-1;
se (por != Tempo[0]) {per = Tempo[0];
if(sh<=ExtBars && ExtBars!=-1)
Alerta(Símbolo(),Período()," ",
TimeYear(Time[sh]),",
TimeDay(Time[sh]),",
TimeMonth(Time[sh]),",
TimeHour(Time[sh])",":",
TimeMinute(Time[sh])," ",
"Venda");}}}
}
}
//+------------------------------------------------------------------+
Experimente por conta própria. Não consigo fazer com que funcione. Não está funcionando de forma alguma.
As linhas devem ser alinhadas. Mas, na prática, é um pouco diferente.
Você pode me dizer, por favor, o que poderia estar errado?
Eu fiz uma função recursiva que escreve um valor para o buffer.
Quando chamado pelo indiciador funciona bem, quando tentei colocá-lo na EA, a resposta é 0
Qual pode ser o problema?
Você pode me dizer, por favor, o que poderia estar errado?
Eu fiz uma função recursiva que escreve um valor para o buffer.
Quando chamado pelo indiciador funciona bem, quando tentei colocá-lo na EA, a resposta é 0
Qual pode ser o problema?
talvez o tamanho do buffer não esteja definido!?
Descobri onde ocorre o engate.
Acontece que IndicatorCounted dá 0 no indicador e -1 no Expert Advisor (esta função tem verificação de exatidão - ser >=0, portanto não é considerada no Expert Advisor)
Qual é a razão e como corrigir o erro?
MT4 build 225, eurusd M1.
Descobri onde ocorre o engate.
Acontece que IndicatorCounted dá 0 no indicador e -1 no Expert Advisor (esta função tem verificação de exatidão - ser >=0, portanto não é considerada no Expert Advisor)
Qual é a razão e como corrigir o erro?
MT4 build 225, eurusd M1.
https://docs.mql4.com/ru/customind
if (k>k1+7 && s<(High[1]-(High[1]-Low[1])/2) && bay==true)
{
int t=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,NULL,NULL,"My order #",16384,0,Green);
bay=false;
Print (GetLastError());
}
}
if (s>(High[0]-(High[0]-Low[0])/2) && bay==false)
{
OrderSelect(t,SELECT_BY_TICKET,MODE_TRADES);
Print (GetLastError());
OrderClose(t,0.1,Ask,5,Red);
}
if (k>k1+7 && s<(High[1]-(High[1]-Low[1])/2) && bay==true)
{
int t=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,NULL,NULL,"My order #",16384,0,Green);
bay=false;
Print (GetLastError());
}
}
if (s>(High[0]-(High[0]-Low[0])/2) && bay==false)
{
OrderSelect(t,SELECT_BY_TICKET,MODE_TRADES);
Print (GetLastError());
OrderClose(t,0.1,Ask,5,Red);
}
A abertura e o fechamento acontecem em diferentes carrapatos. E o consultor especializado não se lembra mais do que uma vez foi atribuído à variável t. Ou deve ser global ou estático.
Uma variável global é definida fora das funções. Ou pode ser declarado como int estático
A abertura e o fechamento acontecem em diferentes carrapatos. E o consultor especializado não se lembra mais do que uma vez foi atribuído à variável t. Ou deve ser global ou estático.
Uma variável global é definida fora das funções. Ou pode ser declarado como int estático
muito obrigado, eu esqueci ))
No Indicador que defini (para depois compará-los com o Tempo[i]):
Em seguida, no laço
Como resultado, StrToTime(StartRange) e StrToTime(EndRange) produzem Zeros .
- Por que e como consertá-lo?