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
- Publicado por:
- Vladimir Karputov
- Visualizações:
- 1532
- 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
![up3x1_premium_v2M](https://c.mql5.com/i/code/expert.png)
Duas iMA no período atual e uma no período PERIOD_D1.
![Bull vs Medved](https://c.mql5.com/i/code/expert.png)
Expert Advisor para tomar decisões de negociação numa simples combinação de velas. Projetado para trabalhar no período H4.
![BBand Width Ratio](https://c.mql5.com/i/code/indicator.png)
Implementação do indicador Bollinger Band Width para MetaTrader 5.
![MACD normalizada](https://c.mql5.com/i/code/indicator.png)
MACD normalizada.