Bibliotheken: MT4Orders - Seite 25

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Bibliotheken: MT4Orders

fxsaber, 2017.06.14 11:30 AM.

// Liste ändern:
// 14.06.2017:
// Hinzufügen: Asynchrone Analoga der MQL4-Handelsfunktionen hinzugefügt: OrderSendAsync, OrderModifyAsync, OrderCloseAsync, OrderDeleteAsync.
// Rückgabe der entsprechenden Result.request_id bei Erfolg, sonst 0.

Ein gutes Beispiel für die Verwendung dieser Funktionen findet sich in der Beschreibung einer anderen Bibliothek. Der gezeigte Ansatz erlaubt es, den MQL4-Stil (einschließlich der Fähigkeit, in seiner On-Funktion zu bleiben) im asynchronen Modus vollständig zu nutzen.

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

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Bibliotheken: Symbol

fxsaber, 2018.09.11 15:58

// Schließt Positionen über Limitaufträge
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);
}

Mit dem SB ist es dasselbe.

#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);
}


Jeder Stil hat seine eigenen Vor- und Nachteile.

 

Sie können die Bibliothek über diesen Berater auschecken.

 
TesterEA
TesterEA
  • www.mql5.com
Некоторый выложенный в Кодобазу инструментарий требовал для различных тестов торговый советник в качестве полигона. Данный советник был тем самым подопытным. От идеи до полной реализации, с написанием всего кода с нуля, потребовалось два часа. Особенности Советник канальный - торгует вовнутрь канала, постоянно в рынке.Не используются...
 
// Liste ändern:
// 02.11.2018
// Fix: Der Eröffnungskurs einer MT4-Position, bevor sie ausgelöst wird, kann jetzt nicht mehr Null sein.
// Fix: Seltene Besonderheiten bei der Ausführung einiger Handelsserver werden berücksichtigt.
 
fxsaber:

Der erste Absatz ist unklar. Wie war es und wie ist es jetzt?

 
Stanislav Korotky:

Der erste Absatz ist unklar. Wie war es und wie ist es jetzt?

Es wurde ein Marktauftrag zur Eröffnung einer Position erteilt. Obwohl sie nicht ausgeführt wird, sieht die Bibliothek sie als eine MT4-Position. Zuvor war OrderOpenPrice() dieser "Position" gleich Null. Jetzt ist er gleich dem aktuellen Preis.

Führen Sie diesen Expert Advisor auf ForexTimeFXTM-Demo01 aus
#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;
  }    
}


und eröffnen Sie eine Position von Hand. Der Expert Advisor druckt aus

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


Zuvor befanden sich an den markierten Stellen Nullen.


Protokoll dieser Situation des Terminals selbst

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

Können Sie mir ein Beispiel geben, wie man diesen mt5 EA auf mt4orders zum Laufen bringt?

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

Können Sie mir ein Beispiel geben, wie man diese mt5 EA auf mt4orders arbeiten?

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

Dieser MT4 EA wurde auf den MT5-Stil portiert und jetzt wollen Sie ihn zurückportieren.

Das kann man natürlich machen. Aber leider ohne mich.

 
fxsaber:

Dieser MT4 EA wurde auf den MT5-Stil portiert und jetzt wollen Sie ihn zurückportieren.

Das kann man natürlich machen. Aber leider ohne mich.

Können Sie mir ein Beispiel für die mt4-Version geben?

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

Ähnlich, wie Sie es mit Spreader gemacht haben.

// Dies ist ein MT5-Advisor, der es Ihnen ermöglicht, die entsprechenden
// MT4-Advisor in MT5(Hedge) Multicurrency-Tester (mit echten Ticks)

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

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