Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
Waddah Attar Win - expert para MetaTrader 5
- Publicado por:
- Vladimir Karputov
- Visualizações:
- 1455
- Avaliação:
- Publicado:
- 2017.02.13 13:52
- Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Autor da ideia — Ahmad Waddah Attar, autor do código mq5 — barabashkakvn.
Expert Advisor que trabalha com ordens pendentes Buy Limit (BuyLimit) e Sell Limit (SellLimit). Além disso, quando o preço chega muito perto da ordem pendente:
m_trade.BuyLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastBuyLimitPrice-ExtStep));
if((LastSellLimitPrice-m_symbol.Bid())<=5*m_symbol.Point()) // FirstLot muito perto
m_trade.SellLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastSellLimitPrice+ExtStep));
colocamos mais uma ordem pendente.
Para obter o preço mais recente da ordem pendente colocada, utilizamos OnTradeTransaction():
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- obter o tipo de operação como valor de enumeração
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
Print(EnumToString(type));
//--- se a operação for o resultado da adição de negociação no histórico
if(type==TRADE_TRANSACTION_ORDER_ADD)
{
long order_type =0;
double order_price =0.0;
double order_volume =0.0;
string order_symbol ="";
long order_magic =0;
if(OrderSelect(trans.order)) // selecionar ordens pendentes
{
order_type=OrderGetInteger(ORDER_TYPE);
order_price=OrderGetDouble(ORDER_PRICE_OPEN);
order_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
order_symbol=OrderGetString(ORDER_SYMBOL);
order_magic=OrderGetInteger(ORDER_MAGIC);
}
else
return;
if(order_symbol==m_symbol.Name() && order_magic==m_magic)
{
if(order_type==ORDER_TYPE_BUY_LIMIT)
{
LastBuyLimitPrice=order_price;
LastBuyLimitLot=order_volume;
}
if(order_type==ORDER_TYPE_SELL_LIMIT)
{
LastSellLimitPrice=order_price;
LastSellLimitlLot=order_volume;
}
}
}
}
Teste em EURUSD, M15, de 2015.06.07 a 2016.12.31 — modo de geração de ticks "Cada tick", depósito inicial 10 000:
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/17339
Duas iMA no período atual e uma no período PERIOD_D1.
Bull vs MedvedExpert Advisor para tomar decisões de negociação numa simples combinação de velas. Projetado para trabalhar no período H4.
Implementação do indicador Bollinger Band Width para MetaTrader 5.
MACD normalizadaMACD normalizada.