Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
Waddah Attar Win - Asesor Experto para MetaTrader 5
- Publicado por:
- Vladimir Karputov
- Visualizaciones:
- 719
- Ranking:
- Publicado:
- 2017.04.27 16:32
- ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Autor de la idea — Ahmad Waddah Attar, autor del código mq5 — barabashkakvn.
El asesor funciona con órdenes pendientes Buy Limit (BuyLimit) y Sell Limit (SellLimit). Además, cuando el precio se acerca mucho a una orden pendiente:
m_trade.BuyLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastBuyLimitPrice-ExtStep));
if((LastSellLimitPrice-m_symbol.Bid())<=5*m_symbol.Point()) // FirstLot está muy cerca
m_trade.SellLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastSellLimitPrice+ExtStep));
colocamos otra orden pendiente.
Para obtener el último precio de la orden pendiente colocada, usamos OnTradeTransaction():
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- obtener el tipo de transacción como valor de enumeración
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
Print(EnumToString(type));
//--- si la transacción es el resultado de la adición de la operación a la historia
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)) // elegir órdenes pendientes
{
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;
}
}
}
}
Simulación con EURUSD,M15 desde 2015.06.07 a 2016.12.31 — modo de generación de ticks "Todos los ticks", depósito inicial 10000:
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/17339
Implementación del indicador Bollinger Band Width para MetaTrader 5.
MACD nromalizadaMACD nromalizada
Dos iMA en el periodo actual y otra en PERIOD_D1.
Bull vs MedvedEl asesor toma decisiones comerciales usando sencillas combinaciones de velas. Diseñado para funcionar en el periodo H4.