ライブラリ: MT4Orders - ページ 25

 

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: MT4Orders

fxsaber, 2017.06.14 11:30 AM.

// 変更リスト:
// 14.06.2017:
// 追加: MQL4取引関数の非同期アナログを追加:OrderSendAsync、OrderModifyAsync、OrderCloseAsync、OrderDeleteAsync。.
// 成功すれば対応するResult.request_idを返し、そうでなければ0を返す。

これらの関数を使用する良い例が、別のライブラリの説明に あります。示されたアプローチでは、非同期モードでMQL4スタイル(そのOn関数にとどまる機能を含む)を完全に利用することができます。

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

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: シンボル

fxsaber, 2018.09.11 15:58

// 指値注文によるポジションの決済
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);
}

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


それぞれのスタイルに長所と短所があります。

 

このアドバイザーで ライブラリーをチェックできる。

 
TesterEA
TesterEA
  • www.mql5.com
Некоторый выложенный в Кодобазу инструментарий требовал для различных тестов торговый советник в качестве полигона. Данный советник был тем самым подопытным. От идеи до полной реализации, с написанием всего кода с нуля, потребовалось два часа. Особенности Советник канальный - торгует вовнутрь канала, постоянно в рынке.Не используются...
 
// 変更リスト:
// 02.11.2018
// 修正:トリガーされる前のMT4ポジションの開始価格をゼロにすることはできなくなりました。
// 修正: いくつかのトレードサーバーの稀な実行の特殊性が考慮されました。
 
fxsaber:

最初の段落がはっきりしない。昔はどうだったのか、今はどうなのか。

 
Stanislav Korotky:

最初の段落がはっきりしない。以前はどうで、現在はどうなのか。

ポジションを建てる 成行注文が発注された。約定はされませんが、ライブラリはこれを MT4 のポジションと見なします。以前は、この「ポジション」の OrderOpenPrice() はゼロに等しかったです。現在は現在の価格に等しくなっています。

この Expert Advisor を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;
  }    
}


で実行し、手でポジションをオープンします。Expert Advisor は次のように出力します。

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


以前はハイライトされた場所にゼロがありました。


ターミナル自体のこの状況のログ

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

このmt5 EAをmt4ordersで動作させる方法の例を教えてもらえますか?

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

このmt5 EAをmt4ordersで動作させる方法の例を教えてもらえますか?

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

この MT4 EA は MT5 スタイルに移植されました。

もちろん可能です。しかし、残念なことに私なしではできません。

 
fxsaber:

このMT4 EAがMT5スタイルに移植され、今また移植したい。

もちろん可能です。しかし、残念ながら私抜きで。

MT4バージョンの例を教えていただけますか?

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

あなたがスプレッダーでやったことと似ています。

// これはMT5アドバイザーで、対応する
// MT5(Hedge)のMT4-advisor多通貨テスター(リアルティック使用)

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

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