Arseniy Barudkin: Здравствуйте господа форумчане! Помогите пожалуйста с написанием функции.
С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем... Недовольные пишут в личку!!!
//+-------------------------------------------------------+//| функция перебрала открытые ордера на графике |//| и выделила: 1) с самым маленьким лотом и --- профитом |//| 2) с самым большим лотом и +++ профитом. скрипт |//| Предполагается, что такие есть. И удалила PROBA.mq4|//+-------------------------------------------------------+// Назначение функций OrdersTotal, OrderSelect, OrderClose// и прочих узнаем поставив на них курсор и нажав F1#property strictvoidOnStart()
{
int Проскальзывание=20;
int Тикет1 =0, Тикет2=0;
double Лот1=100000, Лот2=0;
bool Результат; // Чтоб избежать лишних предупреждений
// Выделение
for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--)
{
if(!OrderSelect(Тикет,SELECT_BY_POS)) continue; // Что-то помешало - идем к следующемуif(OrderSymbol() != _Symbol) continue; // Чужой график// Если с меньшим лотом и --- профитом то запомним тикет и лотif(OrderLots()<Лот1 && OrderProfit()<0)
{
Тикет1=OrderTicket();
Лот1=OrderLots();
}
// Если с большим лотом и +++ профитом то запомним тикет и лотif(OrderLots()>Лот2 && OrderProfit()>0)
{
Тикет2=OrderTicket();
Лот2=OrderLots();
}
}
// Удаление
if(Тикет1)
{
while(!RefreshRates());
if(OrderSelect(Тикет1,SELECT_BY_TICKET)) // Чтоб получить цену закрытия
Результат=OrderClose(Тикет1, Лот1,OrderClosePrice(),Проскальзывание);
}
if(Тикет2)
{
while(!RefreshRates());
if(OrderSelect(Тикет2,SELECT_BY_TICKET))
Результат=OrderClose(Тикет2, Лот2,OrderClosePrice(),Проскальзывание);
}
}
А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом
А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?
missha32: Подскажите как можно ускорить работу советника в тестере чтоб тестился быстрее , советник использует только один индикатор
Прежде всего, сократить интервал времени тестирования. Лучше всего: 1) три последних месяца. 2) три месяца, чтоб в середине был брексит. Обязательно отказаться от тестирования по всем тикам. Ведь в MT4 в истории отсутствуют тики, и они моделируются легкими подергиваниями цены вверх-вниз. Тестируете на двух таймфреймах - М15 и М1 - и смотрите, где лучше. А лучше на демо - включаете в понедельник с утра и в пятницу вечером смотрите результат с помощью известного скрипта. Если надо тестировать 100 советников, открываем 10 терминалов и в каждом 10 графиков с советниками.
Обязательно надо иметь много компьютеров. На реальный счет достаточно 4 доллара с плечом 500. Посмотрите на любой график - при правильном входе запросто за день можно удвоить депозит. А это за месяц в миллион раз. В интернете есть такие бесплатные советники? Кто-то продаст такого? Поэтому деньги надо вкладывать в компьютеры. Ищем точки входа. Пишем программы, считаем в Excel по формулам и макросам, пишем скрипты и советники для расчетов. Потом уже, когда выяснится, как искать точки входа, потом уже роботы, стопы, трал, депозит, пополнение, снятие, ...
С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем... Недовольные пишут в личку!!!
А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом
А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?
for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--) - это код перебора рыночных ордеров по тикету в обратном порядке(от последнего открытого к первому) - я правильно понимаю?
вот только "Тикет" кирилицей не пройдёт, нужно латиницей "Ticket"
Yaroslav Nykula: for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--) - это код перебора рыночных ордеров по тикету в обратном порядке(от последнего открытого к первому) - я правильно понимаю?
вот только "Тикет" кирилицей не пройдёт, нужно латиницей "Ticket"
Не проверял, но должен пройти не только кирилицей, но и китаиницей.
Здравсвтвуйте. Вопрос такой: можно ли загнать значения тиков (соответствующие цены) за определенный торговый период (т.е за одну свечу) в одномерный массив? Причем сделать это так, что бы массив формировался на протяжении формирования свечи. Реально ли это в MQL4? Буду благодарен за ответ.
С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем... Недовольные пишут в личку!!!
А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом
А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?
Спасибо огромное! Годная функция! И к слову кирилицей тоже читает, по крайней мере компилирует.Далее по условиям советника ордеров больше двух и вызывается функция если не хватит маржи на открытие очередного ордера. Но я не правильно выразил свою мысль, оказывается мне нужно немного другое! Самый большой лот с самым большим профитом из открытых позиций, и самый маленький лот с отрицательным профитом так же из открытых позиций.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем... Недовольные пишут в личку!!!
А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом
А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?
Здравствуйте!
Можно помочь меня? Советник отрьйвает сделки на каждьй тик. Как нада написать код для отрьйтие примерно 5 сделок или только сколько я хочу?
extern int tp=50;
extern int sl=200;
extern double lot=0.01;
void OnTick()
{
OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsasho",1,0,Red);
}
Что нада изменит, добавит в код?
Можно ответить ***
Спасибо!
Здравствуйте!
Можно помочь меня? Советник отрьйвает сделки на каждьй тик. Как нада написать код для отрьйтие примерно 5 сделок или только сколько я хочу?
extern int tp=50;
extern int sl=200;
extern double lot=0.01;
void OnTick()
{
OrderSend("USDJPY",OP_SELL,lot,Bid,0,Ask+sl*Point,Ask-tp*Point,"Batsasho",1,0,Red);
}
Что нада изменит, добавит в код?
Можно ответить ***
Спасибо!
Прежде всего, сократить интервал времени тестирования. Лучше всего: 1) три последних месяца. 2) три месяца, чтоб в середине был брексит. Обязательно отказаться от тестирования по всем тикам. Ведь в MT4 в истории отсутствуют тики, и они моделируются легкими подергиваниями цены вверх-вниз. Тестируете на двух таймфреймах - М15 и М1 - и смотрите, где лучше. А лучше на демо - включаете в понедельник с утра и в пятницу вечером смотрите результат с помощью известного скрипта. Если надо тестировать 100 советников, открываем 10 терминалов и в каждом 10 графиков с советниками.
Обязательно надо иметь много компьютеров. На реальный счет достаточно 4 доллара с плечом 500. Посмотрите на любой график - при правильном входе запросто за день можно удвоить депозит. А это за месяц в миллион раз. В интернете есть такие бесплатные советники? Кто-то продаст такого? Поэтому деньги надо вкладывать в компьютеры. Ищем точки входа. Пишем программы, считаем в Excel по формулам и макросам, пишем скрипты и советники для расчетов. Потом уже, когда выяснится, как искать точки входа, потом уже роботы, стопы, трал, депозит, пополнение, снятие, ...
С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем... Недовольные пишут в личку!!!
А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом
А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?
вот только "Тикет" кирилицей не пройдёт, нужно латиницей "Ticket"
for(int Тикет=OrdersTotal()-1; Тикет>=0; Тикет--) - это код перебора рыночных ордеров по тикету в обратном порядке(от последнего открытого к первому) - я правильно понимаю?
вот только "Тикет" кирилицей не пройдёт, нужно латиницей "Ticket"
С днем Победы!!! Прошло 4 дня - ответ отсутствует. Попробуем... Недовольные пишут в личку!!!
А потом возник вопрос: если ордеров всего два. С большим лотом с отрицательным профитом, с меньшим лотом с положительным профитом
А если ордер всего один. А если все ордера с одинаковым лотом и все с отрицательным профитом - закрывать по одному?
Спасибо огромное! Годная функция! И к слову кирилицей тоже читает, по крайней мере компилирует.Далее по условиям советника ордеров больше двух и вызывается функция если не хватит маржи на открытие очередного ордера. Но я не правильно выразил свою мысль, оказывается мне нужно немного другое! Самый большой лот с самым большим профитом из открытых позиций, и самый маленький лот с отрицательным профитом так же из открытых позиций.