В МТ объемы это не количество сделок (открытых ордеров), а количество тиков (сколько было "приходов" новых цен). Так что никакого объема в понимании трейдера в МТ нету :(((
Это понятно, что объемы на форексе это квази объемы, но тем не менее хочется увидеть что из себя будет представлять такая МА.
Хочу доработать(усложнить) простого эксперта, но у меня получается работать только с одной сделкой.
Идея в том, чтобы вместе с первой сделкой эксперт открывал еще одну по той же цене, но уже с Тейком. И Стопы по обоим позициям двигались бы каждый по своему алгоритму.
В самом простейшем случае.
Как вариант, можно предусмотреть при открытии первой позиции - свой магик:
extern int MagicNumber1 = 15345;//вставить во внешние параметры extern int MagicNumber2 = 54321;//вставить во внешние параметры extern int TakeProfit2 = 250; // Размер фиксированного тэйка 2 позиции ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLow2,0,"2-PriceChannel",MagicNumber1,0,Green);
После чего, после открытия первой позиции открывать вторую с заданным тейком. Но с другим магиком.
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLow2,TakeProfit2,"2-PriceChannel",MagicNumber2,0,Green);
И потом вставить(в самый конец кода) функцию трейлинг стопа. Причем в условия работы этой функции задать - только работу с позициями по магику 2.
//+----------------------------+ //| Stop Trailing | //+----------------------------+ void TrailPositions() // функция трейлинг стоп { int Orders = OrdersTotal(); for (int i=0; i<Orders; i++) { if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() == MagicNumber2 ){ if (OrderType() == OP_BUY ) { if (Bid-OrderOpenPrice() > MinProfit*Point) { if (OrderStopLoss() < Bid-(TrailingStop+TrailingStep-1)*Point) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid-TrailingStop*Point, OrderTakeProfit(), 0, Blue); } } } if (OrderType() == OP_SELL) { if (OrderOpenPrice()-Ask >MinProfit*Point) { if (OrderStopLoss() > Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss() == 0) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask+TrailingStop*Point, OrderTakeProfit(), 0, Blue); } } } } } }
Во внешние параметры советника добавить также :
extern string ___Хи-Хи___ = " ---- Трейлинг стопа ---- "; extern bool StopTrailing = true; extern int MinProfit = 160; //порог включения трейлин стопа extern int TrailingStop = 130; // величина трейлинг стопа extern int TrailingStep = 10 // шаг трейлинг стопа
А для запуска трала в самом начале функции СТАРТ предусмотреть строку:
if(StopTrailing) TrailPositions(); // выключатель трейлинг стопа
Забыл добавить.
Что для реализации вышеописанного алгоритма работы нужно задействовать функцию определения наличия открытых позиций по их магику. Например ф-ю И.Кима.
Вместо вот этого :
total=OrdersTotal(); if(total<1) // Открытых позиций нет, значит можно открывать новые сделки {
Нужно с помщью ф-и И.Кима определять, есть ли открытые позиции с магиком1 или магиком 2
//----------------------
https://www.mql5.com/ru/forum/107476/page4#68002
Функция ExistPositions().
Обращаюсь с просьбой!
Так как я программист практически никакой, то не могли бы Вы уважаемые выложить здесь куски кода для эксперта, который открывает несколько позиций по одной паре и каждую по отдельности сопровождает. То есть двигает трейлинг-стопы.
Хочу доработать(усложнить) простого эксперта, но у меня получается работать только с одной сделкой.
Даже для опытных программеров нет никакого смысла усложнять код советника, а гораздо проще проинсталлировать столько терминалов, сколько нужно иметь открытых позиций и на каждый установить по одному советнику. Это не только проще в плане программирования, но и в плане сопровождения, т.к. несколько сделок одновременно из одного советника сопровождать будет невозможно из-за занятости торгового потока - будут сыпаться ошибки. А поскольку у каждой копии терминала свой отдельный торговый поток, то убиваем сразу двух зайцев одновременно.
Даже для опытных программеров нет никакого смысла усложнять код советника, а гораздо проще проинсталлировать столько терминалов, сколько нужно иметь открытых позиций и на каждый установить по одному советнику. Это не только проще в плане программирования, но и в плане сопровождения, т.к. несколько сделок одновременно из одного советника сопровождать будет невозможно из-за занятости торгового потока - будут сыпаться ошибки. А поскольку у каждой копии терминала свой отдельный торговый поток, то убиваем сразу двух зайцев одновременно.
Я так понял два отдельных терминала будут висеть на одном и том же счете???
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Обращаюсь с просьбой!
Так как я программист практически никакой, то не могли бы Вы уважаемые выложить здесь куски кода для эксперта, который открывает несколько позиций по одной паре и каждую по отдельности сопровождает. То есть двигает трейлинг-стопы.
Хочу доработать(усложнить) простого эксперта, но у меня получается работать только с одной сделкой.
Идея в том, чтобы вместе с первой сделкой эксперт открывал еще одну по той же цене, но уже с Тейком. И Стопы по обоим позициям двигались бы каждый по своему алгоритму.
Эксперт и Пользовательский индикатор во вложении.
Зараннее благодарю...
ЗЫ.
Попутно еще один вопрос. Есть ли где нить индикатор взвешенной МА у которой весовые коэффициенты считаются с привязкой к объемам бара?