Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 300
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
Mas nada mudou.
Tanto o erro quanto o aviso permanecem.
Dê-me o código INTEGRAL, não apenas um pedaço dele. Você quer que todos adivinhem? Então pergunte aqui - aqui todos sabem tudo sobre tudo de uma vez.
Eu lhe dou o código INTEGRAL.
Eu lhe dou o código INTEGRAL.
É simplesmente enorme...
Todo o código
"
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#versão da propriedade "Cross20170703 1.00"
//================================================ ========================
extern int Period_FastMA=4;
extern int Period_SlowMA=8;
externo int MaxTickNum=30;
extern int MaxAttempt=10;
externo int k_slippage=1;
extern double k_SL=10.0;//*Point()
extern double k_TP=30.0;//*Point()
extern double TrailDist=30.0;//*Point()
externo duplo k_lots=0,3;
extern bool ExFin=false;
//************************************************ ***** ****************************************
res,
contar,
eu,
PróximoMarque=0,
Tempo,
fintime,
BegMlSecTime,
EndMlSecTime,
deltatime,
Tentar,
deslizamento = 5,
TickNum=0,
posição,
bilhete,
MaxInterval1000,
CrossNum=0,
comis=4,
att,
tentar,
errar;
Duplo //*********************************************** *************************************
total,
grande quantidade,
espalhar,
fastma,
lentoMA,
delta,
último delta,
PrevDelta,
Comis=0,00004,
preço aberto,
fechar preço,
SL,
TP,
lucro,
LUCRO;
bool //************************************************ ***************************************************
FirstCross=falso,
PróximoCross=false,
CurType,
sucesso=verdadeiro
habilitar=verdadeiro,
BegUp,
BegDn,
ComprarAberto=falso,
VendaAberta=false;
fragmento//*********************************************** ***** ********************************************* *
gravando,
str,
registro,
BegTimeCurrent,
EndTimeCurrent,
CurTime,
StrCur,
implorar,
StringEnd;
//************************************************ ************************************************** ***************
//================================================ ================================================ == =============================
//================================================ ================================================ == ==============================
//================================================ ================================================ == ==============================
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>>
//------------------------------------------------ -------------------------------------------------- --------------------------
//================================================ ================================================ == ===========================
int OnDeinit(const int res)
{
Alert("implor OnDeinit()");
err=StringToInteger((string)err);
retorno(res);
Alert("end OnDeinit()");
}
//OnDeinit();-----------
//------------------------------------------------ -------------------------------------------------- -----------------------
//================================================ ================================================ == ===========================
void ExpertStop()
{
Alert("ExpertStop");
if((ExFin==true)&&(TickNum==MaxTickNum))
{
ExpertRemove();
OnDeinit(res);
}
} //fim do ExpertStop
//------------------------------------------------ -------------------------------------------------- ------------------------
//================================================ ================================================ == =======================
int DescriçãoErro()
{
Alert("pedir ErrorDescription");
mudar (erro)
{ case 0: err="Sem erros"; pausa;
case 1: err="Sem erro, mas resultado desconhecido"; pausa;
caso 2: err="Erro geral"; pausa;
caso 3: err="Parâmetros inválidos"; pausa;
caso 4: err="Servidor de negociação ocupado"; pausa;
caso 5: err="Versão antiga do terminal do cliente"; pausa;
case 6: err="Sem conexão com o servidor de negociação"; pausa;
caso 7: err="Direitos insuficientes"; pausa;
case 8: err="Pedidos muito frequentes"; pausa;
case 9: err="Operação ilegal interrompendo o servidor"; pausa;
caso 64: err="Conta bloqueada"; pausa;
case 65: err="Número de conta incorreto"; pausa;
case 128: err="Tempo limite do negócio expirou"; pausa;
caso 129: err="Preço incorreto"; pausa;
case 130: err="Paradas erradas"; pausa;
caso 131: err="Volume incorreto"; pausa;
caso 132: err="Mercado Fechado"; pausa;
case 133: err="Negociação proibida"; pausa;
case 134: err="Não há dinheiro suficiente para completar a operação"; pausa;
case 135: err="Preço alterado"; pausa;
case 136: err="Sem preços"; pausa;
case 137: err="Corretor ocupado"; pausa;
case 138: err="Novos preços"; pausa;
case 139: err="O pedido está bloqueado e já está sendo processado"; pausa;
case 140: err="Somente compra permitida"; pausa;
case 141: err="Muitos pedidos"; pausa;
case 145: err="A modificação não é permitida porque a ordem está muito próxima do mercado"; pausa;
case 146: err="Subsistema de negociação ocupado"; pausa;
case 147: err="O uso da data de vencimento do pedido é proibido pela corretora"; pausa;
case 148: err="O número de ordens abertas e pendentes atingiu o limite estabelecido pela corretora.";break;
//
case 4000: err="Sem erro"; pausa;
case 4001: err="Ponteiro de função inválido"; pausa;
case 4002: err="Índice do array está fora do intervalo"; pausa;
case 4003: err="Sem memória para pilha de funções"; pausa;
case 4004: err="Erro de pilha após chamada recursiva"; pausa;
case 4005: err="Não há memória na pilha para passar parâmetros"; pausa;
case 4006: err="Sem memória para o parâmetro string"; pausa;
case 4007: err="Sem memória para string temporária"; pausa;
case 4008: err="String não inicializada"; pausa;
case 4009: err="String não inicializada no array"; pausa;
case 4010: err="Sem memória para array de string"; pausa;
case 4011: err="String muito longa"; pausa;
case 4012: err="Resto zero"; pausa;
case 4013: err="Divisão por zero"; pausa;
case 4014: err="Comando desconhecido"; pausa;
case 4015: err="Transição incorreta"; pausa;
case 4016: err="Matriz não inicializada"; pausa;
case 4017: err="Chamadas DLL não permitidas"; pausa;
case 4018: err="Não foi possível carregar a biblioteca"; pausa;
case 4019: err="Não foi possível chamar a função"; pausa;
case 4020: err="Chamadas para funções de bibliotecas externas não são permitidas"; pausa;
case 4021: err="Memória insuficiente para string retornada da função"; pausa;
case 4022: err="Sistema ocupado"; pausa;
case 4050: err="Número inválido de parâmetros de função"; pausa;
case 4051: err="Valor de parâmetro de função inválido"; pausa;
case 4052: err="String function internal error"; pausa;
case 4053: err="Erro de matriz"; pausa;
case 4054: err="Uso incorreto do array timeseries"; pausa;
case 4055: err=" Erro do indicador personalizado "; pausa;
case 4056: err="Arrays são incompatíveis"; pausa;
case 4057: err="Erro ao processar variáveis globais"; pausa;
case 4058: err="Variável global não encontrada"; pausa;
case 4059: err="Função não permitida em modo de teste"; pausa;
case 4060: err="Função não permitida"; pausa;
case 4061: err="Erro ao enviar email"; pausa;
case 4062: err="String parâmetro esperado"; pausa;
case 4063: err="Um parâmetro inteiro é esperado"; pausa;
case 4064: err="duplo esperado"; pausa;
case 4065: err="Um array é esperado como parâmetro"; pausa;
case 4066: err="Dados históricos solicitados em estado de atualização"; pausa;
case 4067: err="Erro ao executar uma operação de negociação"; pausa;
case 4099: err="Fim do arquivo"; pausa;
case 4100: err="Erro ao trabalhar com arquivo"; pausa;
case 4101: err="Nome de arquivo inválido"; pausa;
case 4102: err="Muitos arquivos abertos"; pausa;
case 4103: err="Não foi possível abrir o arquivo"; pausa;
case 4104: err="Modo de acesso a arquivo incompatível"; pausa;
case 4105: err="Nenhum pedido selecionado"; pausa;
case 4106: err="Caractere desconhecido"; pausa;
case 4107: err="Parâmetro de preço incorreto para função de negociação"; pausa;
case 4108: err="Número de bilhete inválido"; pausa;
case 4109: err="A negociação não é permitida. Você deve habilitar a opção Permitir que o EA negocie nas propriedades do EA."; pausa;
case 4110: err="Posições longas não são permitidas. Você precisa verificar as propriedades do EA."; pausa;
case 4111: err="Posições curtas não são permitidas. Você precisa verificar as propriedades do EA."; pausa;
case 4200: err="Objeto já existe"; pausa;
case 4201: err="Uma propriedade de objeto desconhecida foi solicitada"; pausa;
case 4202: err="Objeto não existe"; pausa;
case 4203: err="Tipo de objeto desconhecido"; pausa;
case 4204: err="Nenhum nome de objeto"; pausa;
case 4205: err="Erro de coordenadas do objeto"; pausa;
case 4206: err="A subjanela especificada não foi encontrada"; pausa;
default: err="Erro ao trabalhar com objeto";
}
Alert("fim da descrição do erro");
retorno(erro);
}//End ErrorDescription()
//------------------------------------------------ -------------------------------------------------- ------------------------
//================================================ ================================================ == =======================
int GetNext(NextTick)
//>>>>>>>>>>>>>>>>>>>>>>
{
Alert("implor GetNext(NextTick)");
Alerta(NextTick);
while(RefreshRates()==false)Count++;
Alert("Count=",Count,"NextTick=",NextTick);
Alerta(" ");
Alert(RefreshRates(),Count,NextTick);
return(NextTick);
Alerta(NextTick);
//-------------------
Alert("end GetNext(NextTick)");
}
//fim GetNext(NextTick)
//================================================ ================================================ == =======================
//------------------------------------------------ -------------------------------------------------- ------------------------
void OnTick()
{
//************************************
Alert("implorar OnTick");
//************************************
FastMA=NormalizeDouble(iMA(NULL,0,Period_FastMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_FastMA=4
SlowMA=NormalizeDouble(iMA(NULL,0,Period_SlowMA,0,MODE_SMA,PRICE_CLOSE,1),Digits());//Period_SlowMA=8
GetNext(NextTick);
Alert("NextTick=",NextTick);
Delta=NormalizeDouble(FastMA-SlowMA,Dígitos()); Alert("implorar OnTick");
Alert(Delta,Dígitos());
Alert("FastMA=",DoubleToStr(FastMA ,Digits()),"SlowMA=",DoubleToStr(SlowMA,Digits()), "Delta=",DoubleToStr(Delta,Digits()));
Alert("fim OnTick");
//------------------------------------------------ -------------------------------------------------- --------------------------
}// fim (fim OnTick)
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<
//------------------------------------------------ -------------------------------------------------- ----------------------------
//================================================ ================================================ == ===========================
void Iniciar()
{
Alerta(" ");
Alert("implor Init()");
Alerta(" ");
StringBeg=StringConcatenate("TimeToStr(TIME_DATE,TIME_SECONDS)=",TimeToStr(TIME_DATE,TIME_SECONDS));
alert(stringbeg);
record=StringConcatenate("MaxTickNum=",MaxTickNum);
alerta(registro);
record=StringConcatenate("k_SL=",DoubleToStr(k_SL,Digits()));
alerta(registro);
record=StringConcatenate("k_TP=",DoubleToStr(k_TP,Digits()));
alerta(registro);
record=StringConcatenate("k_lots=",DoubleToStr(k_lots,Digits()));
alerta(registro);
Alert("end Init()");
}//fim de inicialização()
//------------------------------------------------ -------------------------------------------------- ------------------------
//================================================ ================================================ == ====================
int GetTick(NextTick)
{
Alert("implor GetTick");
while (RefreshRates()==false)
PróximoMarque++;
Alert("NextTick=",NextTick);
OrderSelect(NextTick,SELECT_BY_TICKET);
Lucro=PedidoProfit();
Alert(DoubleToStr(Lucro, Dígitos));
GetNext(NextTick);
Alert("fim GetTick");
}
//------------------------------------------------ -------------------------------------------------- -------------------------------------------------- ----
//================================================ ================================================ == =========================
int PróximoTipo()
//>>>>>>>>>>>>>>>>>>>>>
{
Alert("implorar NextType");
if(OrderSelect(NextTick,SELECT_BY_TICKET)==true)
{
OpenPrice=OrderOpenPrice();
ClosePrice=OrderClosePrice();
}
if(ClosePrice>OpenPrice)CurType=OP_BUY;
else CurType=OP_SELL;
return(curType);
Alert("end CurType()");
//>>>>>>>>>>>>>>>>>>>>>>>>
}//"end CurType()";
//------------------------------------------------ -------------------------------------------------- ----------------------------
//================================================ ================================================ == ===========================
bool FastMACrossUp()
{
if(!(Delta==LastDelta))Alert("Delta=",DoubleToStr(Delta,5),"LastDelta=",DoubleToStr(LastDelta,5));
Alert("LastDelta=",DoubleToStr(LastDelta,5));
Alert("!(Delta==LastDelta)=",!(Delta==LastDelta));
if(((Delta!=LastDelta) && (Delta>=0) && (LastDelta<=0)))Alert("(Delta!=LastDelta)&&(Delta>=0)&&(LastDelta<=0)= " ,
(Delta!=ÚltimoDelta) && (Delta>=0) && (ÚltimoDelta<=0));
Alert("(Delta>=0)=",(Delta>=0),"(ÚltimoDelta<=0)=",(ÚltimoDelta<=0));
if(Delta!=LastDelta)Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));
Alert("(Delta>=0)=",(Delta>=0)," (LastDelta<=0)=",(LastDelta<=0)," TickNum=",TickNum);
Alert("(Delta>=0)=",(Delta>=0));
Alert("ÚltimoDelta<=",(ÚltimoDelta<=0));
Alert("!(Delta==LastDelta)&&((Delta>=0)&&(LastDelta<=0))=",!(Delta==LastDelta)&&((Delta>=0)&&(LastDelta<=0 )));
Alert(((Delta!=LastDelta)&&((Delta>=0)&&(LastDelta<=0))));
Alert(" (Delta!=LastDelta)= ",(Delta!=LastDelta)," (Delta>=0)= ",(Delta>=0)," (LastDelta<=0)= ",(LastDelta<= 0));
return((Delta!=LastDelta)&&(Delta>=0)&&(LastDelta<=0));
} //fim do FastMACrossUp()
//------------------------------------------------ -------------------------------------------------- --------------------
//================================================ ================================================ == ===================
bool FastMACrossDn()
{
if(!(Delta==LastDelta)&&(Delta<=0)&&(LastDelta>=0))Alert("Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5)) ;
Alert("LastDelta=",DoubleToStr(LastDelta,5));
Alert("!(Delta==LastDelta)=",!(Delta==LastDelta));
Alert("(Delta<=0)=",(Delta<=0));
Alert("ÚltimoDelta>=0",(ÚltimoDelta>=0));
if((Delta!=ÚltimoDelta) && (Delta<=0) && (ÚltimoDelta>=0))
Alert("(Delta<=0)=",(Delta<=0),"(ÚltimoDelta>=0)=",(ÚltimoDelta>=0));
Alert(" (Delta!=LastDelta)&&((Delta<=0)&&(LastDelta>=0))= ",(Delta!=LastDelta) && (Delta<=0) && (LastDelta>=0));
if(Delta!=LastDelta)Alert(" Delta=",DoubleToStr(Delta,5)," LastDelta=",DoubleToStr(LastDelta,5));
Alert("(Delta<=0)=",(Delta<=0)," (LastDelta>=0)=",(LastDelta>=0)," TickNum=",TickNum);
Alert(" (Delta!=LastDelta)&&(( Delta<=0)&&(LastDelta>=0))= ",(Delta!=LastDelta)&&((Delta<=0)&&(LastDelta>=0)) );
return((Delta!=LastDelta)&&(Delta<=0)&&(LastDelta>=0));
}//fim FastMACrossDn()
//------------------------------------------------ -------------------------------------------------- ---------------------------------------
//================================================ ================================================ == ==================================
bool FastMAIsAcima()
{
Alert("implor FastMAIsAbove()");
Alert(" (Delta>=0)=",(Delta>=0)," (ÚltimoDelta>=0)=",(ÚltimoDelta>=0));
if(((Delta>=0)&&(ÚltimoDelta>=0)))
Alert(" FastMA= ",DoubleToStr(FastMA,5)," SlowMA= ",DoubleToStr(SlowMA,5));
Alert(" Delta= ",DoubleToStr(Delta,5)," LastDelta= ",DoubleToStr(LastDelta,5));
Alert("end FastMAIsAbove()");
Alert("(Delta==LastDelta)&&(Delta>=0)&&(LastDelta>=0)=",(Delta==LastDelta)&&(Delta>=0)&&(LastDelta>=0));
Alert("end FastMAIsAbove()");
return((Delta==LastDelta)&&(Delta>=0)&&(LastDelta>=0));
}//fim FastMAIsAbove()
//================================================ ================================================ == =================
//------------------------------------------------ -------------------------------------------------- ------------------
bool FastMAIsBelow()
{
return((Delta==LastDelta)&&(Delta<=0)&&(LastDelta<=0));
}//fim FastMAIsBelow()*/
"
//------------------------------------------------ -------------------------------------------------- ------------------
//************************************************ ******************************************
"
O Init não pode ser iniciado de forma alguma, ele é automaticamente iniciado uma vez quando o indicador/especialista é iniciado, o mesmo que o DeInit.
Alternativamente, você pode fazer uma variável booleana estática e usá-la em conjunto comIsConnected(). E quando a conexão é restaurada na chegada de um novo tick, ela deve ser lançada primeiro, alguma função de inicialização própria. MasIsConnected() não deve ser usado em OnCalculate(), mas em OnTimer() e minha própria função de inicialização deve ser usada logo no início de OnCalculate().
Obrigado, vou pensar nisso, só pensei que já existem soluções típicas......
Todos os códigos
Obrigado, vou pensar nisso, apenas pensei que já existiam soluções típicas disponíveis......
Eu já escrevi uma refutação às palavras desta pessoa. OnItit() é uma função comum. Execute-o quando for necessário.
Todos os códigos
Eu já lhe disse - anexe o código usando o botão SRC. Desculpe, você está completamente desaprendido?
Diga-me, quem gostaria de olhar para este pedaço de lixo?
Eu já escrevi a refutação das palavras deste homem. OnItit() é uma função usual. Você pode executá-lo quando precisar.
Bem, sim, eu estava me perguntando por que não chamá-lo quando você se conectar. Acontece que você pode :-)
Todos os códigos
Cuidado com os tipos variáveis.
Jogue fora todos os alertas desnecessários