Como codificar? - página 237

 

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

 
sunshineh:
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.

 
DooMGuarD:
olá a todos...

Por favor me diga como codificar para obter a lista de todos os pares no MT4?

obrigado

Charles

Leve 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!!!

 
atch3000:
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?

Razão: