Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 349

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
É possível passar parâmetros dinâmicos de entrada para o indicador através do iCustom? Quando tento fazer isto, uma nova janela indicadora se abre, para cada novo parâmetro de entrada dinâmica.
Nesta linha eu quero começar a ajudar aqueles que realmente querem entender e aprender programação na nova MQL4 e querem mudar facilmente para a MQL5 - as linguagens são muito semelhantes.
Este será um bom lugar para discutir tarefas, algoritmos para resolvê-las, e quaisquer outras questões, de qualquer forma, relacionadas à programação de MT.
Espero que outros membros experientes do nosso fórum se juntem a nós e que o tópico seja interessante para todos.
Neste ramo, eu gostaria de começar a ajudar aqueles que realmente querem entender e aprender programação na nova MQL4 e querem mudar facilmente para a MQL5 - as linguagens são muito semelhantes.
Este será um bom lugar para discutir problemas, algoritmos e quaisquer outras questões relativas à programação MT.
Espero que outros membros experientes do nosso fórum se juntem a nós para resolver as questões e que o tópico seja de interesse para todos.
Neste ramo, eu gostaria de começar a ajudar aqueles que realmente querem entender e aprender programação na nova MQL4 e querem mudar facilmente para a MQL5 - as linguagens são muito semelhantes.
Este será um bom lugar para discutir problemas, algoritmos e quaisquer outras questões relativas à programação MT.
Espero que outros membros experientes do nosso fórum se juntem a nós e que este tópico seja interessante para todos.
Neste ramo, eu gostaria de começar a ajudar aqueles que realmente querem entender e aprender programação na nova MQL4 e querem mudar facilmente para a MQL5 - as linguagens são muito semelhantes.
Este será um bom lugar para discutir problemas, algoritmos e quaisquer outras questões relativas à programação MT.
Espero que outros membros experientes do nosso fórum se juntem a nós e que este tópico seja interessante para todos.
Neste ramo, eu gostaria de começar a ajudar aqueles que realmente querem entender e aprender programação na nova MQL4 e querem mudar facilmente para a MQL5 - as linguagens são muito semelhantes.
Este será um bom lugar para discutir tarefas, algoritmos de sua solução e quaisquer outras questões, de uma forma ou de outra, relacionadas à programação de MT.
Espero que outros membros experientes do nosso fórum se juntem a nós e que este tópico seja interessante para todos.
Artyom
Quero começar este capítulo para ajudar aqueles que realmente querem entender e aprender programação na nova MQL4 e querem mudar facilmente para a MQL5 - as linguagens são muito semelhantes.
Este é um lugar para discutir tarefas, algoritmos para resolvê-las e quaisquer outras questões relacionadas à programação de MT de uma forma ou de outra.
Espero que outros membros experientes do nosso fórum se juntem a nós na resolução dos problemas e que o tópico seja de interesse para todos.
Ajude-me, acrescentei a função trailing stop à minha EA, testei-a e ela me dá dois erros. - Não tenho a menor idéia de como consertá-los. Entretanto, as negociações são fechadas de acordo com a antiga estratégia, depois que o preço tocou o limite superior do canal e o limite inferior, respectivamente. Acho que algo tem que ser mudado aqui também. - Chamada de volta para os caras do exército do dnr.
#Direitos autorais "Copyright 2017, MetaQuotes Software Corp.
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa
//---------------------------------------------------------
Lotes duplos externos = 0,01;
Exterior int TakeProfit = 600;
StopLoss int externo = 25;
magia int externa = 0001;
Escorregão externo int = 3;
externo int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.
duplo SAR_Step externo = 0,02;
duplo SAR_Max externo = 0,2;
período ATR_Periodo externo int = 14;
duplo externo ATR_K = 2,0;
período HMA_Periodo externo interno = 16;
método externo interno HMA_Método = 3;
HMA_Shift externo interno = 0;
data/hora LBT;
//---------------------------------------------------------
TMA fio externo = "parâmetros indicadores TMA";
String externo TimeFrame = "time frame atual";
Externo int Médio Comprimento = 56;
preço interno externo = "PREÇO_CLOSE";
duplo ATRMultiplicador externo = 2,0;
período ATRP externo interno = 100;
bool externo Interpolar = verdadeiro;
//---------------------------------------------------------
duplo PriceHigh, PriceLow, SL, TP;
int ticket;
//+------------------------------------------------------------------+
//| Função de iniciação de especialista |
//+------------------------------------------------------------------+
int OnInit()
{
se (Dígitos == 3 || Dígitos == 5)
{
TakeProfit *= 10;
StopLoss *= 10;
Slippage *= 10;
}
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
bilhete = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
se (bilhete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid - TakeProfit*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
se (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro de modificação do pedido!)
}
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
bilhete = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
se (bilhete > 0)
{
TP = NormalizeDuplo(Ask + TakeProfit*Point, Dígitos);
SL = NormalizeDouble(Ask - StopLoss*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar o pedido de compra!)
} else Print("Erro ao abrir o pedido de compra");
}
//+------------------------------------------------------------------+
//| Função de iniciação de especialistas |
//+------------------------------------------------------------------+
int init()
{
//--------
//--------
retorno (0);
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
bilhete = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
se (bilhete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid - TakeProfit*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
se (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar a ordem de venda!)
} else Print("Erro ao abrir a ordem de venda!)
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
bilhete = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
se (bilhete > 0)
{
TP = NormalizeDuplo(Ask + TakeProfit*Point, Dígitos);
SL = NormalizeDouble(Ask - StopLoss*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar o pedido de compra!)
} else Print("Erro ao abrir o pedido de compra");
}
se (Pergunte <= PriceLow && CountSell() > 0)
{
para (int i = OrderTotal() -1; i>0; i--)
{
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
se (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Imprimir("Vender ordem fechar erro!)
}
}
}
if (Licitação >= PriceHigh && CountBuy() > 0)
{
para (int i = OrderTotal() -1; i>0; i--)
{
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Imprimir("OrderClose Buy error!)
}
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
para (int trade = OrdensTotal()-1; trade>=0; tradee--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELLL)
contar++;
}
}
devolução(contagem);
}//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
para (int trade = OrdensTotal()-1; trade>=0; tradee--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
contar++;
}
}
devolução(contagem);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//+-------
//+-------
retorno (0)
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int Start()
{
//-----
erro de bool = falso;
se (LBT!=Time[0]) {
se (OrderTotal()!=0) {
para (int i=0; i<OrdersTotal(); i++) {
se (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {
duplo SL = OrderStopLoss();
se OrderType()==0) {
interruptor (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
pausa;
caso 1: SL = Alto[1] - iATR(NULL,0,ATR,Período,1)*ATR_K;
pausa;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0)
pausa;
}
se (SL<OrderStopLoss())
SL = OrderStopLoss();
}
se (OrderType()==1) {
interruptor (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
pausa;
caso 1: SL = Baixa[1] + iATR(NULL,0,ATR,Período,1)*ATR_K;
pausa;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0)
pausa;
}
se (SL>OrderStopLoss())
SL = OrderStopLoss();
}
se (SL!=OrderStopLoss()) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))
erro = verdadeiro;
}
}
}
}
se (!erro)
LBT = Tempo[0];
}
retorno (0);
}
//+------------------------------------------------------------------+
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Aprenda a inserir código!!!
Decidimos ajudar. Mas tenho perguntas para o autor - você tem estas duas funções de inicialização - o que elas fazem?
Há duasfunções OnTick().... e uma terceira função no Start() - todas elas são executadas com a chegada do tick. E em que ordem o terminal os iniciará?
Erro: falta um parêntese de fechamento no final da função OnTick()
Agora o compilador detectou 8 erros. Eu apaguei .
Há 7 erros agora.
Eu substituí if(OrderType()==0) por um parêntese depois de se: if(OrderType()==0) - 8 erros ocorreram
iATR(NULL,0,ATR,Período,1) - precisamos do iATR(NULL,0,ATR_Periodo,1) - ocorreram 2 erros
erro de bool = falso; precisamos de erro de bool = falso; - erros tornaram-se 3
Onde podemos obter o indicador VininI_HMAsound&? Que parâmetros existem? = o erro ainda seria 1
E por que você faria uma pergunta em três lugares?
Ajude a baixar e instalar EAs e sinais grátis no mt4 não como neemogu encontrar download de vídeo apenas como instalar, mas sem download. Diga-me onde procurar
Ajude a baixar e instalar EAs e sinais grátis no mt4 não como neemogu encontrar download de vídeo apenas como instalar, mas sem download. Por favor, informe onde procurar.
Primeiro formou-se, depois veio.
O que acha disso?
Hi. Você pode me dizer porque não vêima=iMA(Symbol(),1,60,0,1,0,k). O comentário mostra uma cotação muito mais alta do que a própria linha. É a razão pela qual os valores mínimos e máximos não são calculados corretamente.
Hi. Você pode me dizer por que não vêima=iMA(NULL,60,24,0,1,0,k). O comentário mostra uma cotação muito mais alta do que a própria linha. Esta é a razão pela qual os valores mínimos e máximos não são calculados corretamente.
O iMA é numeração como em séries temporais, 0 é o número mais relevante. E você provavelmente tem isso ao contrário.
É uma aposta não intencional. Isso não muda nada. A questão é que ele se mostra incorretamente com k!