Роботы, программы только ФОНДОВЫЙ и FORTS примеры кода ( тема не для форекса ) только MQL5 MetaTrader 5 - страница 2

 
Я уже давно торгую роботом на ФОРТС инструментом Si , да незначительные отличия при написании кода есть, НО что бы глобально что то там отличалось вряд ли. В основном в области торговых операциях но если делать запрос через MQL request то особой разницы то и не будет!!!!!
 
prostotrader #:

Читайте в этом разделе тему:

"ФОРТС. В помощь начинающим"

да, спс, абсолютно верно. Сам юзаю эту функцию - работает исправно.

Ей доукомплектовал  своего робота - она считает общую цену (среднюю) ОТКРЫТИЯ совокупной позиции (неттинг) и далее уже от нее считаю уровни и безубытка и трала - работает исправно. Вывожу значения и в принты и в комменты на экран - считает абсолютно верно и пофигу на все клиринги... 

Сам пытался ранее считать и через OnТраде и через OnTradeTransaction - лажа получалась. Здесь ключевое 

//---  
  ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) );


 

ФОРТС: В помощь начинающим
ФОРТС: В помощь начинающим
  • 2015.12.08
  • www.mql5.com
Установка отложенного ордера командой OrderSend().
 
prostotrader #:

Читайте в этом разделе тему:

"ФОРТС. В помощь начинающим"

//int digits=int(SymbolInfoInteger(aSymbol, SYMBOL_DIGITS ));
          return(NormalizeDouble(price_in/volume_in, Digits()));

Тут вот еще какая мысль,    если робот умеет торговать на разных инструментах , стоя на одном графике.

тогда   при старте зачитать все торгуемые инструменты и посадить их структуру  зачитав по ним данные.

один раз при старте.

struct stParamsSymbol
  {
   string            sSymbol;
   int               Select;
   int               SymbolDigits;
  };

//..
stParamsSymbol       StSymbos[];
//...


//
// как то вот так в модуле OnInit или еще лучше в объекте.
// StSymbos[]; --- соберем  все торгуемые символы
//
 {
//... где то на старте при пуске
   StSymbos[i].SymbolDigits = (int)SymbolInfoInteger(StSymbol[i].sSymbol,SYMBOL_DIGITS);
  }



//и дальше только так, т е не обращаться к функции в циклах каждый раз,  а читать уже из памяти, что скорее всего будет быстрее.
return(NormalizeDouble(price_in/volume_in,  StSymbol[i].SymnolDigits   ));


Даже если робот торгует только на одном инструменте - то наверно тоже лучше зачитать в память - вместо обращения к функции.

 
JRandomTrader #:

1. Потеряна проверка ORDER_MAGIC, а у нас неттинг и на символе торгуют несколько роботов.

2. Каждый раз выполнять эту кучу кода с циклом вместо того, чтобы взять st.Price

3. А что насчёт работы в тестовом режиме на реальном графике - с имитацией сделок?

Все давно проверено и отлажено, зачем фантазии?

ORDER_MAGIC вообще не нужен.

1. Если позиция есть, то у неё есть идентификатор.

2. Вы что миллион сделок за день делаете в одной позиции?

Пока есть позиция, то сделок в ней ничтожно мало.

3. Шевелите мозгами.

================

1. Как Вы узнаете цену позиции, если объем уменьшился/добавился?

2. Как Вы восстановите данные, если что-то зависло/вылетело?

Я написал эту функцию еще в 2015 г. и до сих пор все отлично работает.

 
Roman Shiredchenko #:

. Здесь ключевое 


 

ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) );

Очень верно заметили...

 
prostotrader #:

Все давно проверено и отлажено, зачем фантазии?

1. Как Вы узнаете цену позиции, если объем уменьшился/добавился?

2. Как Вы восстановите данные, если что-то зависло/вылетело?

Я написал эту функцию еще в 2015 г. и до сих пор все отлично работает.

Цена виртуальной позиции каждого робота на символе пересчитывается по OnTrade() или по таймеру, если нужный OnTrade() пропущен, или при старте по истории и сохраняется в файле состояния.

Там же сохраняются данные о виртуальном стопе, статистика и т.п.

При рестарте состояние загружается.

Где иначе брать инфу о текущем состоянии виртуального стопа, если он зависит не только от цены?

:) Кстати, тоже с 2015 г. работает.

 
prostotrader #:

ORDER_MAGIC вообще не нужен.

1. Если позиция есть, то у неё есть идентификатор.

2. Вы что миллион сделок за день делаете в одной позиции?

Пока есть позиция, то сделок в ней ничтожно мало.

На одном символе могут торговать десятки роботов одновременно. При неттинге позиция общая.

Поэтому каждый робот ведёт свою виртуальную позицию, сохраняя возможность параллельно торговать руками.

 
JRandomTrader #:

На одном символе могут торговать десятки роботов одновременно. При неттинге позиция общая.

Поэтому каждый робот ведёт свою виртуальную позицию, сохраняя возможность параллельно торговать руками.

Вы случайно рынок не попутали?

Как не изголяйтесь с виртуальными позициями, позиция на ФОРТС одна,  вывод - у Вас УБЫТОК!

 
prostotrader #:

Вы случайно рынок не попутали?

Как не изголяйтесь с виртуальными позициями, позиция на ФОРТС одна,  вывод - у Вас УБЫТОК!

Это не попытка виртуального хеджинга.

Роботы абсолютно независимы в торговле, хоть и могут входить в состав одного эксперта. У каждого свои параметры, а иногда и алгоритмы. Есть такое слово - диверсификация.

Да, воттакенный убыток:

...deleted...

 
JRandomTrader #:

Это не попытка виртуального хеджинга.

Роботы абсолютно независимы в торговле, хоть и могут входить в состав одного эксперта. У каждого свои параметры, а иногда и алгоритмы. Есть такое слово - диверсификация.

Да, воттакенный убыток:


Вы покажите за 2 года, а не за 2 месяца