Bibliotecas: MT4Orders - página 25

 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MT4Orders

fxsaber, 2017.06.14 11:30 AM.

// Lista de modificações:
// 14.06.2017:
// Adição: adicionados análogos assíncronos das funções de negociação MQL4: OrderSendAsync, OrderModifyAsync, OrderCloseAsync, OrderDeleteAsync.
// Retornar o Result.request_id correspondente se for bem-sucedido; caso contrário, 0.

Um bom exemplo de uso dessas funções está na descrição de outra biblioteca. A abordagem mostrada permite utilizar totalmente o estilo MQL4 (incluindo a capacidade de permanecer em sua função On) no modo assíncrono.

TradeTransactions
TradeTransactions
  • www.mql5.com
Асинхронные торговые приказы обладают огромным преимуществом - высокая скорость при массовой отправке. Однако, распространению таких приказов мешает некоторое неудобство - данные о результате приказа возможно увидеть только в OnTradeTransaction. Такое обстоятельство заставляет обывателя строить событийную модель своей ТС, если хочется...
 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: Symbol

fxsaber, 2018.09.11 15:58

// Fecha posições por meio de ordens 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);
}

A mesma coisa com o 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 tem seus próprios prós e contras.

 

Você pode consultar a biblioteca deste consultor.

 
TesterEA
TesterEA
  • www.mql5.com
Некоторый выложенный в Кодобазу инструментарий требовал для различных тестов торговый советник в качестве полигона. Данный советник был тем самым подопытным. От идеи до полной реализации, с написанием всего кода с нуля, потребовалось два часа. Особенности Советник канальный - торгует вовнутрь канала, постоянно в рынке.Не используются...
 
// Lista de modificações:
// 02.11.2018
// Correção: o preço de abertura de uma posição MT4 antes de ser acionada agora não pode ser zero.
// Correção: as raras peculiaridades de execução de alguns servidores de comércio são levadas em consideração.
 
fxsaber:

O primeiro parágrafo não está claro. Como era e como está agora?

 
Stanislav Korotky:

O primeiro parágrafo não está claro. Como era e como está agora?

Foi colocada uma ordem de mercado para abrir uma posição. Embora ela não seja executada, a biblioteca a vê como uma posição MT4. Anteriormente, OrderOpenPrice() dessa "posição" era igual a zero. Agora, ele é igual ao preço atual.

Execute esse Expert Advisor no 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;
  }    
}


E abra uma posição manualmente. O Expert Advisor 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


Anteriormente, havia zeros nos locais destacados.


Registro dessa situação do próprio 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

Você pode me dar um exemplo de como fazer esse EA do mt5 funcionar no mt4orders?

https://www.mql5.com/pt/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:

Você pode me dar um exemplo de como fazer esse EA para o MT5 funcionar no MT4orders?

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

Esse EA para MT4 foi adaptado para o estilo MT5 e agora você deseja adaptá-lo novamente.

Isso pode ser feito, é claro. Mas, infelizmente, sem mim.

 
fxsaber:

Esse EA MT4 foi portado para o estilo MT5 e agora você deseja portá-lo de volta.

Isso pode ser feito, é claro. Mas, infelizmente, sem mim.

Você pode me dar um exemplo da versão do MT4?

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

Semelhante ao que você fez com o Spreader.

// Esse é um consultor MT5 que permite que você execute o
// MT4-advisor no testador de múltiplas moedas MT5(Hedge) (com ticks reais)

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

//#include "Spreader_v1.mq4" // https://www.mql5.com/pt/code/9484
#include "Spreader_v2.mq4" // https://www.mql5.com/pt/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. Опирается на...