Tenha em mente que você pode precisar armazenar continuamente a propagação também ... dependendo do tipo de EA que você está escrevendo. caso contrário, inútil
Ordem certa para colocar OrderSend(),OrderModify()
Dia atrás eu li tópico no fórum sobre função OrderSend() e OrderModify()
e este tópico me dá uma pista de porque alguns trabalhos da EA e outros não, e eu me pergunto como verificar se a função OrderSend() e OrderModify() está devidamente escrita. Algum exemplo?
Não é correto escrever Ask[1], mas como posso obter o Ask-Price do último tick?
Obrigado!
Você tem que salvar os ticks em tempo real, e depois acessá-los de seu EA ou indicador. Eu poderia tentar codificar um exemplo para você se você ainda estiver interessado.
obtendo valores de tendência mágica em uma variável.
oi!!
estou trabalhando em uma EA e estou me perguntando como posso obter valores indicadores de tendência mágica em uma variável. obviamente não há função nativa para a tendência mágica, como o iMA faz para as médias móveis e assim....
até agora parece que tenho que codificá-la do zero. mas não encontro nenhuma informação sobre a matemática!
estou trabalhando em uma EA e estou me perguntando como posso obter valores indicadores de tendência mágica em uma variável. obviamente não há função nativa para a tendência mágica, como o iMA faz para as médias móveis e assim....
até agora parece que tenho que codificá-la do zero. mas não encontro nenhuma informação sobre a matemática!
alguém poderia ajudar?
muito obrigado!!!!
Procure informações sobre como usar a função ICustom na MQL4 . Com esta função, você pode chamar indicadores externos em seu EA
Tenha em mente que você pode precisar armazenar continuamente a propagação também ... dependendo do tipo de EA que você está escrevendo. caso contrário, inútil
é ALTA [0] -- barra de corrente que apenas INICIA
para baixo , eu não sei , talvez baixo[1]
Ordem certa para colocar OrderSend(),OrderModify()
Dia atrás eu li tópico no fórum sobre função OrderSend() e OrderModify()
e este tópico me dá uma pista de porque alguns trabalhos da EA e outros não, e eu me pergunto como verificar se a função OrderSend() e OrderModify() está devidamente escrita. Algum exemplo?
olá a todos...
Por favor, me diga como codificar para obter a lista de todos os pares no MT4?
obrigado ...
Charles
Hi,
Não é correto escrever Ask[1], mas como posso obter o Ask-Price do último tick?
Obrigado!Você tem que salvar os ticks em tempo real, e depois acessá-los de seu EA ou indicador. Eu poderia tentar codificar um exemplo para você se você ainda estiver interessado.
olá a todos...
Por favor me diga como codificar para obter a lista de todos os pares no MT4?
obrigado
CharlesLeve seu tempo homem, eu acredito que é mais fácil de fazer em Mql5, então é só esperar que as coisas se resolvam.
obtendo valores de tendência mágica em uma variável.
oi!!
estou trabalhando em uma EA e estou me perguntando como posso obter valores indicadores de tendência mágica em uma variável. obviamente não há função nativa para a tendência mágica, como o iMA faz para as médias móveis e assim....
até agora parece que tenho que codificá-la do zero. mas não encontro nenhuma informação sobre a matemática!
alguém poderia ajudar?
muito obrigado!!!
oi!!
estou trabalhando em uma EA e estou me perguntando como posso obter valores indicadores de tendência mágica em uma variável. obviamente não há função nativa para a tendência mágica, como o iMA faz para as médias móveis e assim....
até agora parece que tenho que codificá-la do zero. mas não encontro nenhuma informação sobre a matemática!
alguém poderia ajudar?
muito obrigado!!!!Procure informações sobre como usar a função ICustom na MQL4 . Com esta função, você pode chamar indicadores externos em seu EA
-guyver
Robô - Automat EA cerca de 2 MA em média móvel rápido e lento
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
número interno externo MagicNumber = 0;
sinal externo boolMail = Falso;
bool externo EachTickMode = Verdadeiro;
double Lots externo = 0,2;
Exterior int Slippage = 3;
bool externo UseStopLoss = Verdadeiro;
stopLoss int externo = 15;
extern bool UseTakeProfit = Verdadeiro;
extern int TakeProfit = 30;
extern bool UseTrailingStop = Verdadeiro; extern bool UseTakeProfit = Verdadeiro;
Exterior int TrailingStop = 20;
int BarCount;
int Current;
bool TickCheck = Falso;
//+------------------------------------------------------------------+
//| função de iniciação de especialista |
//+------------------------------------------------------------------+
int init() {
BarCount = Barras;
se (CadaTickMode) Corrente = 0; caso contrário Corrente = 1;
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit() {
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start() {
int Ordem = SIGNAL_NONE;
int Total, Bilhete;
nível duplo StopLossLevel, TakeProfitLevel;
if (CadaTickMode && Bars != BarCount) TickCheck = False;
Total = EncomendasTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Início variável |
//+------------------------------------------------------------------+
duplo Var1 = iMA("EURUSD", PERÍODO_M5, 14, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
duplo Var2 = iMA("EURUSD", PERÍODO_M5, 7, 0, MODE_SMA, PREÇO_MEDIAN, Corrente + 1);
duplo Compra1_1 = iMA("EURUSD", PERÍODO_M5, 14, 0, MODE_SMA, PREÇO_MEDIAN, Corrente + 1);
duplo Buy1_2 = iMA("EURUSD", PERÍODO_M5, 7, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
duplo Sell1_1 = iMA("EURUSD", PERÍODO_M5, 7, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
duplo Sell1_2 = iMA("EURUSD", PERÍODO_M5, 14, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
duplo CloseBuy1_1 = iMA("EURUSD", PERÍODO_M5, 14, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
duplo CloseBuy1_2 = iMA("EURUSD", PERÍODO_M5, 7, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
duplo CloseSell1_1 = iMA("EURUSD", PERÍODO_M5, 7, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
duplo CloseSell1_2 = iMA("GBPUSD", PERÍODO_M5, 14, 0, MODE_SMA, PREÇO_MEDIAN, Atual + 1);
//+------------------------------------------------------------------+
//| Fim variável |
//+------------------------------------------------------------------+
//Cheque posição
bool IsTrade = Falso;
para (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = Verdadeiro;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Início do Sinal (Compra de Saída) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 > CloseBuy1_2 && False) Ordem = SINAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Fim do sinal (Compra de Saída) |
//+------------------------------------------------------------------+
if (Order === SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
se (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuar;
}
// Parada de trilha
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Ponto * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
{} else {
//Close
//+------------------------------------------------------------------+
//| Início do Sinal (Sair de Venda) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2False) Ordem = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Fim do sinal (Sair de Venda) |
//+------------------------------------------------------------------+
if (Order === SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
se (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuar;
}
// Parada de trilha
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Ponto * TrailingStop)) {
if((OrderStopLoss() > (Pergunte + Ponto * TrailingStop)) ||| (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
se (!EachTickMode) BarCount = Bars;
continuar;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Início do sinal (Entrada) |
//+------------------------------------------------------------------+
se (Buy1_1 < Buy1_2 && False) Order = SIGNAL_BUY;
se (Vender1_1 < Vender1_2 && Falso) Ordem = SINAL_SELL;
//+------------------------------------------------------------------+
//| Fim do sinal |
//+------------------------------------------------------------------+
//Compra
if (Order === SIGNAL_BUY && ((EachTickMode && !TickCheck) ||| (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Cheque margem livre
if (AccountFreeMargin() < (1000 * Lotes)) {
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());
devolução(0);
}
se (UseStopLoss) StopLossLevel = Perguntar - StopLoss * Ponto; caso contrário, StopLossLevel = 0,0;
if (UseTakeProfitLevel) TakeProfitLevel = Ask + TakeProfitLevel * Ponto; caso contrário TakeProfitLevel = 0,0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Imprimir("Pedido de compra aberto : ", Preço Aberto());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Imprimir("Erro na abertura do pedido de compra : ", GetLastError());
}
}
se (EachTickMode) TickCheck = Verdadeiro;
se (!EachTickMode) BarCount = Bars;
return(0);
}
}
//vender
if (Order === SIGNAL_SELL && ((EachTickMode && !TickCheck) ||| (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Cheque margem livre
if (AccountFreeMargin() < (1000 * Lotes)) {
Imprimir("Nós não temos dinheiro. Margem Livre = ", AccountFreeMargin());
devolução(0);
}
se (UseStopLoss) StopLossLevel = Bid + StopLoss * Ponto; caso contrário, StopLossLevel = 0,0;
if (UseTakeProfitLevel) TakeProfitLevel = Bid - TakeProfit * Ponto; caso contrário TakeProfitLevel = 0,0;
Ticket = OrderSend(Symbol(), OP_SELLL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Imprimir("ordem de venda aberta : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Imprimir("Erro na abertura do pedido de VENDA : ", GetLastError());
}
}
se (EachTickMode) TickCheck = Verdadeiro;
se (!EachTickMode) BarCount = Bars;
return(0);
}
}
se (!EachTickMode) BarCount = Bars;
retorno(0);
}
//+------------------------------------------------------------------+
// onde há erro, beacuse eu não sei, me ajude. obrigado
que erro você comete?