Bibliotecas: MT4Orders - página 25

 

Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading

Bibliotecas: Symbol

fxsaber, 2018.09.11 15:58

// Cierra posiciones mediante órdenes limitadas
bool CloseAll()
{
  bool Res = true;
  
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS))
      Res &= (OrderType() > OP_SELL) ? OrderDelete(OrderTicket())
                                     : OrderSend(OrderSymbol(), OrderType() ? OP_BUYLIMIT : OP_SELLLIMIT , OrderLots(), OrderClosePrice(), 100, 0, 0) && false;
    
  return(Res);
}

Lo mismo con el SB

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>

bool CloseAll()
{
  static CTrade Trade;
  static CPositionInfo Position;
  
  bool Res = true;
  
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    Res &= Trade.OrderDelete(OrderGetTicket(i));
    
  for (int i = PositionsTotal() - 1; i >= 0; i--)
    if (Position.SelectByIndex(i))    
      Res &= (Position.PositionType() ?  Trade.BuyLimit(Position.Volume(), Position.PriceCurrent(), Position.Symbol())
                                      : Trade.SellLimit(Position.Volume(), Position.PriceCurrent(), Position.Symbol())) && false;
    
  return(Res);
}


Cada estilo tiene sus pros y sus contras.

 

Puede consultar la biblioteca de este asesor.

 
TesterEA
TesterEA
  • www.mql5.com
Некоторый выложенный в Кодобазу инструментарий требовал для различных тестов торговый советник в качестве полигона. Данный советник был тем самым подопытным. От идеи до полной реализации, с написанием всего кода с нуля, потребовалось два часа. Особенности Советник канальный - торгует вовнутрь канала, постоянно в рынке.Не используются...
 
// Lista de cambios:
// 02.11.2018
// Corrección: El precio de apertura de una posición MT4 antes de ser activada ahora no puede ser cero.
// Corrección: Se tienen en cuenta las peculiaridades raras de ejecución de algunos servidores comerciales.
 
fxsaber:

El primer párrafo no está claro. ¿Cómo era y cómo es ahora?

 
Stanislav Korotky:

El primer párrafo no está claro. ¿Cómo era y cómo es ahora?

Se colocó una orden de mercado abriendo una posición. En el momento en que no se ejecuta, la librería la ve como una posición MT4. Anteriormente, OrderOpenPrice() de esta "posición" era igual a cero. Ahora es igual al precio actual.

Ejecute este Asesor Experto en ForexTimeFXTM-Demo01
#include <MT4Orders.mqh>
#include <Debug.mqh> // https://c.mql5.com/3/173/Debug.mqh

const bool Init = EventSetMillisecondTimer(1);

void OnTimer()
{
  static ulong PrevTimeMsc = 0;
  
  if (OrderSelect(0, SELECT_BY_POS))
  {
    const ulong TimeMsc = OrderOpenTimeMsc();
    
    if (PrevTimeMsc != TimeMsc)
    {
      Print(TimeToString(TimeMsc / 1000, TIME_SECONDS) + "." + IntegerToString(TimeMsc % 1000, 3, '0'));
      _P(OrderOpenPrice());
      _P(OrderClosePrice());
      
      OrderPrint();
    }
    
    PrevTimeMsc = TimeMsc;
  }    
}


Y abra una posición a mano. El Asesor Experto imprimirá

2018.11.02 16:04:51.280 16:04:58.039
2018.11.02 16:04:51.280 void OnTimer(), Line = 17: OrderOpenPrice() = 1.14187
2018.11.02 16:04:51.280 void OnTimer(), Line = 18: OrderClosePrice() = 1.14187
2018.11.02 16:04:51.280 #2212865052 2018.11.02 16:04:58 sell 1.00 EURUSD 1.14187 0.00000 0.00000 1.14187 0.00 0.00 0.00 0
2018.11.02 16:04:51.440 16:04:58.151
2018.11.02 16:04:51.440 void OnTimer(), Line = 17: OrderOpenPrice() = 1.14187
2018.11.02 16:04:51.440 void OnTimer(), Line = 18: OrderClosePrice() = 1.1419
2018.11.02 16:04:51.440 #2212865052 2018.11.02 16:04:58 sell 1.00 EURUSD 1.14187 0.00000 0.00000 1.14190 -1.75 0.00 -2.63 0


Antes había ceros en los lugares resaltados.


Registro de esta situación del propio Terminal

2018.11.02 16:04:51.200 Trades  '35269132': market sell 1.00 EURUSD
2018.11.02 16:04:51.260 Trades  '35269132': accepted market sell 1.00 EURUSD
2018.11.02 16:04:51.270 Trades  '35269132': market sell 1.00 EURUSD placed for execution
2018.11.02 16:04:51.380 Trades  '35269132': order #2212865052 sell 1.00 / 1.00 EURUSD at market done in 181.043 ms
2018.11.02 16:04:51.380 Trades  '35269132': deal #2210313578 sell 1.00 EURUSD at 1.14187 done (based on order #2212865052)
 

@fxsaber

Me puedes dar un ejemplo de como hacer que este EA de mt5 funcione en mt4orders?

https://www.mql5.com/es/code/17464

5_8 MACross
5_8 MACross
  • www.mql5.com
Kijun Sen Robot Использует индикаторы: Ichimoku, MA, SAR. Оптимизирован для валютных пар: GBPUSD и EURUSD c периодом M30. Полное описание см. в коде. TDI-2_Cloud_HTF Индикатор TDI-2 с возможностью изменения таймфрейма индикатора во входных параметрах.
 
ilvic:

¿Me puede dar un ejemplo de cómo hacer este trabajo EA mt5 en mt4orders?

https://www.mql5.com/es/code/17464

Este MT4 EA ha sido portado a MT5-estilo y ahora desea portar de nuevo.

Se puede hacer, por supuesto. Pero sin mí, por desgracia.

 
fxsaber:

Este EA de MT4 ha sido portado a MT5 y ahora quieres portarlo de vuelta.

Se puede hacer, por supuesto. Pero sin mí, por desgracia.

¿Me puede dar un ejemplo de la versión mt4?

https://www.mql5.com/es/code/7712

Similar a lo que hizo con Spreader.

// Se trata de un asesor MT5 que permite ejecutar el correspondiente
// MT4-advisor en MT5(Hedge) probador multidivisa (con ticks reales)

// https://www.mql5.com/es/code/16006
#include <MT4Orders.mqh>
#include <MQL4_to_MQL5.mqh>

//#include "Spreader_v1.mq4" // https://www.mql5.com/es/code/9484
#include "Spreader_v2.mq4" // https://www.mql5.com/es/code/9495

void OnTick()
{
  start();
}
5_8 MACross
5_8 MACross
  • www.mql5.com
Bad Orders Советник BadOrders. Простенький советник. Breadandbutter2 Советник breadandbutter2. Опирается на индикаторы ADX и MA. 1h-4h-1d Советник 1h-4h-1d. Опирается на...
 
ilvic:

¿Puedes darme un ejemplo de una variante de mt4?

https://www.mql5.com/es/code/7712

Similar a lo que has hecho con Spreader

Desafortunadamente, MQL4_To_MQL5.mqh no fue creado para la conversión y los indicadores. Pero están presentes en el código

   //Indicadores de la caculación
   double fast1=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,1);
   double fast2=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,2);
   double slow1=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,1);
   double slow2=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,2);

No voy a añadir. Tal vez alguien estará de acuerdo. Hubo artículos sobre este tema.