mql5言語の特徴、微妙なニュアンスとテクニック - ページ 68

 
マルチシンボルOnTickの高速実装

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MetaTrader 5のストラテジーテスターでテスト結果の分析と最適化を行う。

fxsaber さん 2018.01.28 12:25

インジケーター

#property indicator_chart_window
#property indicator_plots 0

input long Chart = 0; // идентификатор графика-получателя события
input int Index = 0;

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  if (prev_calculated)
    EventChartCustom(Chart, 0, Index, 0, NULL);
  
  return(rates_total);
}


エキスパートアドバイザー

input int AmountSymbols = 1;

const string Symbols[] = {"EURUSD", "GBPUSD", "AUDUSD", "USDJPY", "USDCAD"};

void OnInit()
{
  for (int i = 0; i < AmountSymbols; i++)
    if (Symbols[i] != _Symbol)
      iCustom(Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i); // MQL5\Indicators\Spy.ex5
}

void OnTick()
{
  OnTick(_Symbol); 
}

void OnChartEvent( const int id, const long &lparam, const double&, const string& )
{
  if (id == CHARTEVENT_CUSTOM)
    OnTick(Symbols[(int)lparam]);
}

// Мультисимвольный OnTick
void OnTick( const string &Symb )
{
}
 
fxsaber
マルチシンボルOnTickの高速実装
タイマーの代わりに使用できますか?参照
 
ウラジスラフ・アンドルシェンコ
タイマーの代わりに使用できますか?どれどれ

はい、OnInitは配列からシンボルを購読しています。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

Init()およびDeInit()実行シーケンス

スラバ さん 2017.04.14 10:21

サービスには、OnTick(string symbol)が用意されます。しかし、特定のシンボルのティックは、購読する必要があります。
 

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MetaTrader 5のストラテジーテスターでテスト結果の分析と最適化を行う。

fxsaber さん 2018.01.29 15:24

最適化の速度は、パスの順番に依存します。1文字のパスが最初にあり、次に多符号のパスがある場合、最適化パスの順序が逆の場合よりも実行時間が短くなります。
MQL5コードの最適化でパフォーマンスを上げた後は、この方法でクラウドでの保存を試してみてください。


ZS おそらくクラウドのお金の9割は、普通のコードライティングで節約できるはずです。しかし、それは著者たちが最後に考えていることだ。

 
fxsaber
マルチシンボルOnTickの高速実装

カッコイイ!!!
待望のサービスがなくても、これは本当に効果があります。

ありがとうございました。

しかし、MQL4でいくらやってもうまくいかなかった。iCustomインジケータは、最後のiCustomリクエストから約10ミリ秒の間、ユーザーメッセージをシミュレートし、その後は「沈黙」を保ちます。

ファイル:
 
ニコライ・セムコ

をMQL4で使うと、どう頑張ってもうまくいかなかった。iCustomインジケータは、最後のiCustomリクエストから約10ミリ秒の間、ユーザーメッセージをシミュレートし、その後は「沈黙」を保ちます。

MT4では、インジケーターの「ハンドル」の寿命は、ターミナル自体で制御されます。したがって、この解決策は適切ではありません。


この方法は7年以上前に記述されています。

Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
注文が手動で送信される場合、OrderCheck は常に最初に呼び出されます。渡されない場合、取引注文は 送信されません。
 
OnTradeTransactionを 使用すると、アカウント上で実行されているExpert Advisorの取引「クローン」の存在を監視する非トレーディングExpert Advisor(サービス)を記述することができます。このような事態は、時に不注意から起こるものです。
 
MT5では、注文を削除する場合にも、その特殊性を考慮する必要があります。SBでの例。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

エキスパート・アドバイザー:VR---ZVER v.2

fxsaber さん 2018.02.06 11:29

void DeleteAllOrders()
  {
   for(int i=OrdersTotal()-1;i>=0;i--)
      if(m_order.SelectByIndex(i) && (m_order.State() == ORDER_STATE_PLACED))
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
            m_trade.OrderDelete(m_order.Ticket());
  }
また、当然ながらOrderDelete後のサイクルは再実行することが望ましい。
 
fxsaber
マルチシンボルOnTickの高速実装
ダニが飛ぶことがある
理由: