Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А вот ещё вопрос Игорю.
Создали ли отдельную пользовательскую (или другую) функцию для переворота позиции бай-на-селл и наоборот, без обычных ОрдерКлоз - ОрдерСенд?
Я не Игорь, но для переворота есть стандартная функция OrderCloseBy.
Здраствуйте! Прошу помощи в решении проблемы. Попробую описать:
Есть функция, подсчитывающая ордера:
int OrdersAll(int mag)
{
int kolvo=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber() == mag )
kolvo++;
}
}
return(kolvo);
}
Далее в процессе работы, если нет ни одного ордера по текущ. инструменту, при выполнении условия должен выставиться 1 ордер к примеру на покупку, написано так:
if (OrdersAll(MAGICNO)==0)
{
if(условие)
{
op=Ask;if(SL>0){sl=Ask-SL*Point*mn;}if(TP>0){tp=Ask+TP*Point*mn;}
err=OrderSend(Symbol(),OP_BUY,LotsOptimized(),NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),
NormalizeDouble(tp,Digits),"",MAGICNO,0,Blue);
if(err<0)
{
Print("OrderSend()- Ошибка OP_BUY. Ордер не принят. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);
}
}
}
Вместо этого при открытии в терминале к примеру нескольких инструментов и запуске советника в каждом из них, код выше может открыть один ордер - это правильно, но в тоже время он может открыть 20-30 ордеров пока моржа не закончится, если условие продержиться несколько тиков. При работе одним инструментом такого замечено не было пока, но я совсем не уверен, что это не произойдет и на одном инструменте. Как мне исправить мой код, чтобы жестко было открытие не более одного ордера.
Игорь, добрый вечер,
Никак не могу справиться с вызовом Вашей функции:
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
double p=0;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(p);
}
Подскажите, в вызове TotOrdProf=GetProfitOpenBuyPosInCurrency(EURUSD, ____, 1);
1. Предположим EURUSD, должно быть в кавычках "EURUSD" или допускается без;
2. Какой должен быть второй параметр вызова (где прочерк), чтобы считалась суммарная прибыль бай и сел (пробовал умолчательную -1; не правильно)
3. Третий параметр является магическим номером эксперта? - до него пока не дошёл, просто вопрос правильно ли я понимаю параметр.
Спасибо.
TotOrdProf=GetProfitOpenBuyPosInCurrency("EURUSD",-1, -1);
- только по EURUSD
- все открытые позиции (-1)
- позиции с любым магиком (-1)
Добрый день.
Как известно, ф-ция Sleep() не работает в тестере терминала, поэтому для задержки выполнения приходится использовать циклы из математич.ф-ций:
где zFILE - задержка выполнения эксперта.
Вопрос такой: есть-ли более изящное решение(ф-ция задержки ), так-как задержка необходима от нескольких секунд до 10-20мин (обработка данных внешней программой) ?
Или хотя-бы как поточнее измерить время выполнения ф-ций (т.к. быстродействие процессоров у всех разное ) и подобрать наиболее тормозную ?
Вопрос такой: есть-ли более изящное решение(ф-ция задержки ), так-как задержка необходима от нескольких секунд до 10-20мин (обработка данных внешней программой) ?
А коллбэки и синхронизаторы пользовать не пробовали?
функции Кима
интересно есть функция позволяющая вытаскивать название последнего наброшенного шаблона
и фиксировать изменения его составляющих
KimIV может Вы сможете и напишите индикатор
Индикатор должен искать флатовый канал в течении указаного периода времени и не шире чем указано в настройках
Этот индикатор канал должен искать как в течение суток так и с переходом на следующие сутки как в вашей Функции isTradeTimeInt().
Этот индикатор может за сутки нарисовать 5 каналов а может только один
В настройках задается
extern double максимальная высота канала в пунктах
extern int Bar_Time как будем подщитывать временой интервал в барах(1) или в часах и минутах(2)
extern string минимальный временой интервал канала в часах в часах и минутах
extern int минимальный временой интервал канала в барах в барах
extern int Максимальное количество нарисованых каналов которые остаются нарисоваными
Похожый индикатор прикрепляю https://www.mql5.com/ru/code но он рисует канал за строго заданый промежуток времени а не сам ищет такой канал. Он должен искать сам такой канал, который не превышает по высоте максимальную высоту канала и длится не менее чем минимальный временой интервал канала.
Если выбираем Bar_Time по времени канал(1) подщитывается от текущево времени минус время заданое в настройках то есть 2 часа 15 мин или другое заданое время Если теперь 1 час 15 мин то ищет максимум и минимум от 23 часов 00 минут и если максимум минус минимум непревышает максимальная высота канала рисует две линии максимум и минимум протяженостью с 23 :00 до 02 :15. Также рисуется Фибо уровни выше и ниже канала.
Если выбираем Bar_Time по количеству баров канал подщитывается от текущево бара минус заданое количество баров в настройках то есть от нулевого бара до бара нулевой бар минус число заданное в настройках. Если заданное число 50 то будем искать теперь максимум и минимум за 50 последних баров начиная с нулевого бара и если максимум минус минимум непревышает максимальная высота канала рисует две линии максимум и минимум протяженостью 50 баров Также рисуется Фибо уровни выше и ниже канала
Все уровни и данные каанала сохраняются в буферах
Вопрос Игорю
Если можно конкретный фрагмент кода эксперта работающего на двух отдельных счетах (Buy Sell ) опрашивающего состояние каждого Account (для расчета размера лота) и имеющего возможность перекачивания депо со счета на счет,а также и имитатор вывода части депо по определенным условиям (допустим месячный или квартальный профит - от него n%)
Уточняю вопрос
1 эксперт работает на Buy (опрашивает состояние счета 2) .. 6200
2 эксперт работает на Sell (опрашивает состояние счета 1) .. 8400
Если нет открытых поз
1100 со счета 2 на счет 1
Счет 1 - 7300
счет 2 - 7300
итого суммарный депозит SD=14600 Максимальный риск - 10% Максимальный лот 0.14
Далее
на 01.04.09 SD=10000
на 01.07.09 SD=14600
Profit=4600
10% = 460
460 выводим на третий счет
Спасибо
Уважаемый, Игорь! Выручайте!
Подключил a-SimpleTrailing.mqh.
Добавил что было указано, но вылезают 3 ошибки:
'clModifyBuy' - variable not defined
'clModifySell' - variable not defined
'ti' - variable already defined
Что делать?(
Вот что вместилось: