Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Написан макрос(прикреплен внизу комментария) на Excel 2003 для сортировки лучших проходов по максимальной просадке(в $) на 10 торговых инструментов (пар).
Инструкция: После окончания оптимизации сохранить результаты оптимизации как отчет(по умолчанию файл OptimizationReport.htm). Открыть отчет(OptimizationReport.htm) с помощью Excel 2003. В Excel'е запустить Microsoft Visual Basic(Alt+F11 или Сервис -> макрос-> редактор VB). В Basic'е - File -> Import File... -> BestSort.bas. Закрыть Basic. И запустить макрос "Расчет" в Excel'е (Alt+F8 или Сервис -> Макрос -> Макросы... ...Выполнить).Написан макрос(прикреплен внизу комментария) на Excel 2003 для сортировки лучших проходов по максимальной просадке(в $) на 10 торговых инструментов (пар).
Инструкция: После окончания оптимизации сохранить результаты оптимизации как отчет(по умолчанию файл OptimizationReport.htm). Открыть отчет(OptimizationReport.htm) с помощью Excel 2003. В Excel'е запустить Microsoft Visual Basic(Alt+F11 или Сервис -> макрос-> редактор VB). В Basic'е - File -> Import File... -> BestSort.bas. Закрыть Basic. И запустить макрос "Расчет" в Excel'е (Alt+F8 или Сервис -> Макрос -> Макросы... ...Выполнить).Советник хороший, спасибо! Только у меня на окне графика какие-то черные прямоугольники. Что должно быть вместо них?
Работает ли советник, если поставить свои стоп-ордера, на случай сильного движения?
Советник хороший, спасибо! Только у меня на окне графика какие-то черные прямоугольники. Что должно быть вместо них?
Работает ли советник, если поставить свои стоп-ордера, на случай сильного движения?
Старый код:
ObjectSetInteger(ChartID(), "fon1", OBJPROP_BGCOLOR, Black);
...
ObjectSetInteger(ChartID(), "fon2", OBJPROP_BGCOLOR, Black);
...
Новый код:
ObjectSetInteger(ChartID(), "fon1", OBJPROP_BGCOLOR, Gray);
...
ObjectSetInteger(ChartID(), "fon2", OBJPROP_BGCOLOR, Gray);
...
2. Советник работает только с открытыми ордерами, выставляя для них общий тейпрофит. Все не свои ордера и ордера с другим MagicNumber он закрывает, как только они выходят в прибыль(на следующем баре(свече)), при этом покрывая своп и комиссию, а MagicNumber назначается от входного параметра Interval. В комментарии ордеров: Martin (X), где Х - это MagicNumber = Interval (+ стоп уровень).
Поставил на золото случайно и вот что получилось... как бы перевернуть зеркально, что поменять в коде...есть ли такая возможность...
Понял, это таблица. Как-то она заслоняет экран, если окно маленькое. Можно ли убрать хотя-бы нижнюю часть (мне эта информация не нужна). Мне кажется, что достаточно только отображать колич. открытых ордеров buy и sell и суммарный лот по ним, чтобы не подсчитывать это вручную.
if (Balance != AccountBalance() || OrdTot != OrdersTotal()) {
DateTime = TimeCurrent(); ordprof1 = 0;
ordprof2 = 0; ordprof3 = 0;
Deposit1 = 0; Withdraw1 = 0;
Deposit2 = 0; Withdraw2 = 0;
Deposit3 = 0; Withdraw3 = 0;
for (cnt = 0; cnt<OrdersHistoryTotal(); cnt++) {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
if (OrderCloseTime() < TimeCurrent() - 2629800) continue;
if (StringFind(OrderComment(),"Deposit") >= 0) Deposit3 += OrderProfit() + OrderCommission();
if (StringFind(OrderComment(),"Withdraw") >= 0) Withdraw3 += OrderProfit() + OrderCommission();
ordprof3 += OrderProfit() + OrderCommission() + OrderSwap();
if (OrderCloseTime() < TimeCurrent() - 604800) continue;
if (StringFind(OrderComment(),"Deposit") >= 0) Deposit2 += OrderProfit() + OrderCommission();
if (StringFind(OrderComment(),"Withdraw") >= 0) Withdraw2 += OrderProfit() + OrderCommission();
ordprof2 += OrderProfit() + OrderCommission() + OrderSwap();
if (OrderCloseTime() < TimeCurrent() - 86400) continue;
if (StringFind(OrderComment(),"Deposit") >= 0) Deposit1 += OrderProfit() + OrderCommission();
if (StringFind(OrderComment(),"Withdraw") >= 0) Withdraw1 += OrderProfit() + OrderCommission();
ordprof1 += OrderProfit() + OrderCommission() + OrderSwap();
}
ordprof1 = ordprof1 - Deposit1 - Withdraw1;
ordprof2 = ordprof2 - Deposit2 - Withdraw2;
ordprof3 = ordprof3 - Deposit3 - Withdraw3;
Balance = AccountBalance(); OrdTot = OrdersTotal();
}
ObjectDelete(ChartID(), "buyline");
ObjectDelete(ChartID(), "sellline");
ObjectDelete(ChartID(), "fon1");
ObjectDelete(ChartID(), "fon2");
ObjectCreate(ChartID(), "buyline", OBJ_HLINE, 0, 0, b);
ObjectSetInteger(ChartID(), "buyline", OBJPROP_COLOR, Blue);
ObjectSetInteger(ChartID(), "buyline", OBJPROP_STYLE, STYLE_DASH);
ObjectCreate(ChartID(), "sellline", OBJ_HLINE, 0, 0, s);
ObjectSetInteger(ChartID(), "sellline", OBJPROP_COLOR, Red);
ObjectSetInteger(ChartID(), "sellline", OBJPROP_STYLE, STYLE_DASH);
ObjectCreate(ChartID(), "fon1", OBJ_RECTANGLE_LABEL, 0, 0, 0);
ObjectSetInteger(ChartID(), "fon1", OBJPROP_XDISTANCE, 100);
ObjectSetInteger(ChartID(), "fon1", OBJPROP_YDISTANCE, 12);
ObjectSetInteger(ChartID(), "fon1", OBJPROP_XSIZE, 700);
ObjectSetInteger(ChartID(), "fon1", OBJPROP_YSIZE, 30);
ObjectSetInteger(ChartID(), "fon1", OBJPROP_BGCOLOR, Black);
ObjectSetInteger(ChartID(), "fon1", OBJPROP_BACK, false);
ObjectCreate(ChartID(), "fon2", OBJ_RECTANGLE_LABEL, 0, 0, 0);
ObjectSetInteger(ChartID(), "fon2", OBJPROP_XDISTANCE, 100);
ObjectSetInteger(ChartID(), "fon2", OBJPROP_YDISTANCE, 45);
ObjectSetInteger(ChartID(), "fon2", OBJPROP_XSIZE, 300);
ObjectSetInteger(ChartID(), "fon2", OBJPROP_YSIZE, 70);
ObjectSetInteger(ChartID(), "fon2", OBJPROP_BGCOLOR, Black);
ObjectSetInteger(ChartID(), "fon2", OBJPROP_BACK, false);
ChartSetInteger(ChartID(), CHART_FOREGROUND, 0, false);
double Usd_per_Rub = MarketInfo("USDRUB",MODE_BID);
if (Comment_for_cent == true) {
Comment(" Баланс: ", DoubleToString(NormalizeDouble(AccountBalance() * Usd_per_Rub / 100, 2), 2),
"р., Средства: ", DoubleToString(NormalizeDouble(AccountEquity() * Usd_per_Rub / 100, 2), 2), "р., Прибыль: ",
DoubleToString(NormalizeDouble(AccountProfit() * Usd_per_Rub / 100, 2), 2), "р., Свободно: ",
DoubleToString(NormalizeDouble(AccountFreeMargin() * Usd_per_Rub / 100, 2), 2), "р., Lot: ", l, ", ", bl, ", ", sl, ", Всего ордеров: ",
OrdersTotal(), ", Ордеров по символу: ", CountTrades(), "\n Дата обновления: ",
TimeToStr(TimeCurrent()), "\n\n История счета\n ",
" ------------------------------------------------------------------------------------------------",
"\n Сегодня: ", DoubleToString(NormalizeDouble(ordprof1 * Usd_per_Rub / 100, 2), 2),
"р., Пополнение: ", DoubleToString(NormalizeDouble(Deposit3 * Usd_per_Rub / 100, 2), 2), "р. (за месяц)\n Неделя: ",
DoubleToString(NormalizeDouble(ordprof2 * Usd_per_Rub / 100, 2), 2), "р., Снятие: ", DoubleToString(NormalizeDouble(Withdraw3 * Usd_per_Rub / 100, 2), 2),
"р. (за месяц)\n Месяц: ", DoubleToString(NormalizeDouble(ordprof3 * Usd_per_Rub / 100, 2), 2), "р., Дата обновления: ",
TimeToStr(DateTime));
}
if (Comment_for_cent == false) {
Comment(" Баланс: ", DoubleToString(NormalizeDouble(AccountBalance() * Usd_per_Rub, 2), 2),
"р., Средства: ", DoubleToString(NormalizeDouble(AccountEquity() * Usd_per_Rub, 2), 2), "р., Прибыль: ",
DoubleToString(NormalizeDouble(AccountProfit() * Usd_per_Rub, 2), 2), "р., Свободно: ",
DoubleToString(NormalizeDouble(AccountFreeMargin() * Usd_per_Rub, 2), 2), "р., Lot: ", l, ", ", bl, ", ", sl, ", Всего ордеров: ",
OrdersTotal(), ", Ордеров по символу: ", CountTrades(), "\n Дата обновления: ",
TimeToStr(TimeCurrent()), "\n\n История счета\n ",
" ------------------------------------------------------------------------------------------------",
"\n Сегодня: ", DoubleToString(NormalizeDouble(ordprof1 * Usd_per_Rub, 2), 2),
"р., Пополнение: ", DoubleToString(NormalizeDouble(Deposit3 * Usd_per_Rub, 2), 2), "р. (за месяц)\n Неделя: ",
DoubleToString(NormalizeDouble(ordprof2 * Usd_per_Rub, 2), 2), "р., Снятие: ", DoubleToString(NormalizeDouble(Withdraw3 * Usd_per_Rub, 2), 2),
"р. (за месяц)\n Месяц: ", DoubleToString(NormalizeDouble(ordprof3 * Usd_per_Rub, 2), 2), "р., Дата обновления: ",
TimeToStr(DateTime));
}
...
Написан макрос(прикреплен внизу комментария) на Excel 2003 для сортировки лучших проходов по максимальной просадке(в $) на 10 торговых инструментов (пар).
Инструкция: После окончания оптимизации сохранить результаты оптимизации как отчет(по умолчанию файл OptimizationReport.htm). Открыть отчет(OptimizationReport.htm) с помощью Excel 2003. В Excel'е запустить Microsoft Visual Basic(Alt+F11 или Сервис -> макрос-> редактор VB). В Basic'е - File -> Import File... -> BestSort.bas. Закрыть Basic. И запустить макрос "Расчет" в Excel'е (Alt+F8 или Сервис -> Макрос -> Макросы... ...Выполнить).P.S. Для повторной сортировки нужно закрыть отчет без сохранения и открыть заново отчет в Excel.