Как начать работу с MQL5 - страница 14

 
Ahmad861:

Я не понимаю, что вы имеете в виду?

Styler - Разработка программ
Styler - Developing programs - MetaEditor Help
Styler - Developing programs - MetaEditor Help
  • www.metatrader5.com
The styler quickly brings a source code design in line with the recommended standard. This makes the code look professional and easy to read. A well-designed code is much easier to analyze in the future both for its author and for other users. To launch Styler, click Styler in the Tools menu or press Ctrl+,. General Spaces and blank lines...
 

Спасибо за предложение по стайлеру, но это не решило мою проблему с ChartOpen() и его возвращаемым значением. Поскольку я использую несколько символов и несколько таймфреймов, я использую ChartOpen(sym,TF[j]) в качестве параметра chartid в ObjectCreate(), и это заканчивается открытием бесконечных графиков, вот с какой проблемой я столкнулся и хотел бы знать, как получить chartid без выполнения функции.

Спасибо

 
Ahmad861 :

Спасибо за предложение по стиллеру, но это не решило мою проблему с ChartOpen() и его возвращаемым значением. Поскольку я использую несколько символов и несколько таймфреймов, я использую ChartOpen(sym,TF[j]) в качестве параметра chartid в ObjectCreate(), и это заканчивается открытием бесконечных графиков, вот с какой проблемой я столкнулся и хотел бы знать, как получить chartid без выполнения функции.

Спасибо

Не используйте ChartOpen ()

Я не могу ответить вам точно, потому что не знаю - "Что именно вы хотите сделать"?

 
Vladimir Karputov:

Не используйте ChartOpen ()

Я не могу ответить вам точно, потому что не знаю - "Что именно вы хотите сделать"?

Я не знаю, как еще можно получить chartid.

Я использую свой советник как сканер, когда логика моего советника выполняется на определенном символе и таймфрейме, он открывает новый график с помощью ChartOpen() и Alert() и рисует линии тренда в соответствии с моим анализом, но использование ChartOpen() в качестве параметра Chartid в ObjectCreate открывает много графиков, пока mt5 не рухнет, я пытался использовать ChartID(), но это возвращает только chartid графика, к которому я прикрепил советник

 
Ahmad861 :

Я не знаю, как еще можно получить Чартид.

Я использую свой советник как сканер, когда логика моего советника выполняется на определенном символе и таймфрейме, он открывает новый график с помощью ChartOpen() и Alert() и рисует линии тренда в соответствии с моим анализом, но использование ChartOpen() в качестве параметра Chartid в ObjectCreate открывает много графиков, пока mt5 не рухнет, я пытался использовать ChartID(), но это возвращает только chartid графика, к которому я прикрепил советник

Почему вы открываете график? Советник может легко работать с несколькими символами / таймфреймами и открывать позиции на разных символах / таймфреймах.

 
Vladimir Karputov:

Зачем вы открываете график? Советник может легко работать с несколькими символами / таймфреймами и открывать позиции на разных символах / таймфреймах.

Думаю, мой советник можно назвать полуавтоматизированным, я использую ChartOpen(), чтобы вручную проанализировать сделку перед открытием, потому что не все торговые сигналы являются выигрышными, просто такова моя стратегия

 

Как мне закодировать свечной паттерн "вращающаяся вершина"?

Файлы:
 
Ahmad861:

Как мне закодировать свечной паттерн "вращающаяся вершина"?

Есть статья об этом виде паттерна (и о некоторых других) с примерами кодирования: Анализ свечных паттернов
Analyzing Candlestick Patterns
Analyzing Candlestick Patterns
  • www.mql5.com
Construction of Japanese candlestick chart and analysis of candlestick patterns constitute an amazing area of technical analysis. The advantage of candlesticks is that they represent data in such a manner that you can track the dynamics inside the data. In this article we analyze candlestick types, classification of candlestick patterns and present an indicator that can determine candlestick patterns.
 
Ahmad861 :

Как мне закодировать свечной паттерн "вращающаяся вершина"?

Вам необходимо работать с CopyRates. Если вы уточните свою задачу, я смогу дать вам более точный совет и предоставить код.

Documentation on MQL5: Timeseries and Indicators Access / CopyRates
Documentation on MQL5: Timeseries and Indicators Access / CopyRates
  • www.mql5.com
CopyRates - Timeseries and Indicators Access - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 

Удаление всех отложенных ордеров определенного типа

Код: 'Pending Delete.mq5'

//+------------------------------------------------------------------+
//|                                               Pending Delete.mq5 |
//|                              Copyright © 2020, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Vladimir Karputov"
#property version   "1.000"
//---
#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
//---
CTrade         m_trade;                      // object of CTrade class
COrderInfo     m_order;                      // object of COrderInfo class
//---
#property script_show_inputs
//---
//+------------------------------------------------------------------+
//| Enum Pending                                                     |
//+------------------------------------------------------------------+
enum ENUM_PENDING
  {
   buy_limit=2,   // Buy Limit
   sell_limit=3,  // Sell limit
   buy_stop=4,    // Buy Stop
   sell_stop=5,   // Sell Stop
  };
//--- input parameters
input ENUM_PENDING   InpPending  = buy_limit; // Delete all:
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   DeleteOrders((ENUM_ORDER_TYPE)InpPending);
  }
//+------------------------------------------------------------------+
//| Delete Orders                                                    |
//+------------------------------------------------------------------+
void DeleteOrders(const ENUM_ORDER_TYPE order_type)
  {
   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.OrderType()==order_type)
           {
            m_trade.OrderDelete(m_order.Ticket());
            continue;
           }
  }
//+------------------------------------------------------------------+
Файлы: