Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 252
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
> err=StringToInteger((string)err)
isto deve ser registrado nos anais ;-)
originalmente em erro, você obviamente recebeu int da GetLastError(). Converter código de erro em descrição legível ErrorDescription(err); desde que #include <stdlib.mqh> esteja habilitado.
mas a maneira como está escrito é um aborrecimento.
PS/ E não aprenda programação MQL. MQL 4 e 5 são idiomas-alvo para uma determinada plataforma.
Você pode me dizer se pode escrever desta forma. não quer abrir transações. talvez o formato dos números calculados esteja errado? ou outros defeitos no código?
duplo TakeLong(duplo shp)
{
int CurrentDayRange=0, fiveDayATR=0, take=0;
duplo TP_ATR=0;
//////Informações pivot
duplo P, S1, R1, S2, R2, S3, R3;
duplo LastHigh, LastLow, x;
int counted_bars = IndicatorCounted();
int limit, i;
shp=iHigh(Symbol(),PERÍODO_D1,0);
//---- Cálculo do indicador Pivot
if(counted_bars == 0)
{
x = Período();
if(x > 240)
retorno(-1);
}
if(counted_bars < 0)
retorno(-1);
limite = (Barras - contadas_barras) - 1;
//----
for(i = limite; i >= 0; i--)
{
if(High[i+1] > LastHigh)
LastHigh = High[i+1];
//----
if(Low[i+1] < LastLow)
LastLow=Low[i+1];
if(TimeDay(Time[i]) != TimeDay(Time[i+1])
{
P = (LastHigh + LastLow + Close[i+1]) / 3;
R1 = (2*P) - LastLow;
S1 = (2*P) - LastHigh;
R2 = P + (LastHigh - LastLow);
S2 = P - (LastHigh - LastLow);
R3 = (2*P) + (LastHigh - (2*LastLow));
S3 = (2*P) - ((2* LastHigh) - LastLow);
LastLow = Aberto[i];
LastHigh = Aberto[i];
}
}
//// Cálculo doATR
para (i=1;i<6;i++)
{ if(iHigh(NULL, PERÍODO_D1, i)-iLow(NULL, PERÍODO_D1, i)>0) FiveDayATR += (iHigh(NULL, PERÍODO_D1, i)-iLow(NULL, PERÍODO_D1, i));}
FiveDayATR = NormalizeDouble(FiveDayATR/5,Digits());
CurrentDayRange = (iHigh(NULL, PERÍODO_D1, i)-iLow(NULL, PERÍODO_D1, i)))
if(FiveDayATR-CurrentDayRange>0) TP_ATR=Ask+FiveDayATR-CurrentDayRange; caso contrário TP_ATR=0;
if (Bid>R1 && TP_ATR==0) take=shp;
senão se (Bid<R1 && R1<TP_ATR) take=R1;
senão take=TP_ATR;
retorno(take);
}
O código sugerido parece ser um indicador. Os negócios são abertos por um consultor especializado ou por um roteiro. A chamada de função OrderSend não é permitida no indicador. O indicador pode alarmar - inserir a chamada ou som da função Alerta no local apropriado
O código proposto é semelhante ao indicador. Os negócios são abertos por um consultor especializado ou por um roteiro. A chamada de função OrderSend é proibida no indicador. O indicador pode sinalizar - inserir a chamada ou o som da função Alerta no local apropriado
Este é o código de definição TP, que envia o resultado para OrderSend. sem este algoritmo complexo, os negócios são enviados, mas não há como enviá-los. Chamo a função TP = TakeLong(SHP);
Há muitas maneiras de depuração - o processo de encontrar um erro quando é estabelecido que existe um. O primeiro é F5 - iniciar a depuração no MetsEditor. 2) usar Alertas para rastrear a execução. 3 e 4) saída de informações de depuração para etiquetas de texto e função Comentar. Escolha a maneira conveniente e depure esta função simples - então você se tornará um programador. Um programa com milhares de linhas é considerado complexo.
Você pode me dizer se pode escrever dessa forma. não quer abrir transações. talvez o formato dos números calculados esteja errado? ou algum outro defeito no código?
MathAbs( Close1[i] - Open1[i] ) / Ponto + 1
MathAbs( Close2[i] - Open2[i] ) / Ponto + 1
Em código completo parece assim
duplo Fechar1 = iClose(Símbolo(), 0, i);
duplo Abrir1 = iOpen(Símbolo(), 0, i);
duplo Fechar2 = iClose(Símbolo(), 0, i+1);
duplo Abrir2 = iOpen(Símbolo(), 0, i+1);
MathAbs( Close1[i] - Open1[i] ) / Ponto + 1
MathAbs( Close2[i] - Open2[i] ) / Ponto + 1
if (Close1 < Open1 && Close2 > Open2){
BUY();
}
if (Close1 > Open1 && Close2 < Open2){
SELL();
}
É correto? Como faço para que funcione?
Você já experimentou na conta demo M1? O que você recebe?
Você já experimentou em uma conta demo M1? Como está funcionando?
Você pode me dizer por que a rede de arrasto é acionada em cada tic-tac?