Лайк поставил. Не знал что так важно. Не могли бы Вы немного подправить советник. Он дает сигнал только когда у обеих свечей одинаковый High и Low. А нужно что бы или High или Low . Просто пропускает много таких свечей. Спасибо.
Доработка советников: общая тема📌
От Garfik, 4 августа, 2011 в Уголок Программиста
Здравствуйте Господа Програмисты ! Есть всем известный советник Forex Setka Trader 1.6.
После доработки есть проблема в его работе
Когда советник торгует и есть открытые ордера ,(стоит он на VPS сервере)
иногда сервер перезагружают, и происходит сбой .
Он не подхватывает свои открытые ордера а начинает открывать новые.
Вот эту проблемку хотелось бы исправить .
Могли бы Вы помочь . Моя почта ( amskorn@gmail.com ) Буду благодарен кто откликнется .
13 минут назад, amskorn сказал:После доработки есть проблема в его работе
Все доработки этого советника идут в разделе Лаборатория, и версия выбранная вами уже устарела на 10 поколений. Лучше одуматься пока не поздно
прошу помощь: нужно в советника - усреднителя добавить функцию запрета открытия новых серий при достижении определённой цены, можно на графике прям линией отметить
.почта для связи mybp@mail.ru или скайп investclub777
Доброго времени суток.
Есть советник, открывает сделки с расчетом риска от SL.
Как добавить в функцию расчета риска увеличение процента на единицу после убыточной сделки?
//+------------------------------------------------------------------+
//| Расчет риска в % от величины SL |
//+------------------------------------------------------------------+
double CalculateLot(double _stop) {
double loss = _stop / MarketInfo(_Symbol, MODE_TICKSIZE) * MarketInfo(_Symbol, MODE_TICKVALUE);
double lots = AccountFreeMargin() * RiskPercent / 100 / loss;
return (NormalizeDouble(MathMin(MarketInfo(_Symbol, MODE_MAXLOT), MathMax(MarketInfo(_Symbol, MODE_MINLOT), lots)), 2));
}
В 22.03.2019 в 17:52, loveЦ сказал:
Сделал на скорую руку, уж извините если не получилось. Добавил параметр "Step" -шаг для отложенных ордеров.
Проверьте и отпишитесь пожалуйста.
Добрый день! Помогите пожалуйста добавить Трал в этот советник и как можно ограничить количество открываемых ордеров? Заранее спасибо!
Всем привет есть индикатор nonlagdot, сделал по нему советник. При получени сигнала после закрытия свечи (синяя /красная точка) открывается покупка/продажа. Выход по тейкпрофиту, стоплоссу, либо по обратному сигналу.
Проблема в том что советник при открытии сделки тут же ее закрывает, может кто подскажет что исправить? Ошибка кроется в участке кода между плюсиками. Ну и насчет правильности входа я не не уверен. Советника и индикатор приложил.
//+------------------------------------------------------------------+
//| NonLagDotRobot.mq4 |
//| Copyright 2022 |
//| https://mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022"
#property link "https://mql5.com"
#property version "1.00"
#property strict
//--------------------------------------------------------------------
extern double Lot = 0.01;
extern int TakeProfit = 60;
extern int StopLoss = 60;
extern int Magic = 0;
extern int Slippage = 3;
//--------------------------------------------------------------------
extern string NonLagDot = "Параметры индикатора NonLagDot";
extern int Price = 0;
extern int Length = 20;
extern int Displace = 0;
extern int Filter = 0;
extern int Color = 1;
extern int ColorBarBack = 0;
extern double Deviation = 0;
//--------------------------------------------------------------------
double PriceBuy, PriceSell, SL, TP;
int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if (Digits == 3 || Digits == 5)
{
TakeProfit *= 10;
StopLoss *= 10;
Slippage *= 10;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
PriceBuy = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 1, 1);
PriceSell = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 2, 1);
if (CountSell() == 0 && Bid <= PriceSell)
{
ticket = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Red);
if (ticket >0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
TP = NormalizeDouble(Bid - TakeProfit*Point, Digits);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print ("Ошибка модификации ордера на продажу!");
} else Print ("Ошибка открытия ордера на продажу!");
}
if (CountBuy() == 0 && Ask >= PriceBuy)
{
ticket = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Blue);
if (ticket >0)
{
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
if (OrderSelect(ticket, SELECT_BY_TICKET))
if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Print ("Ошибка модификации ордера на покупку!");
} else Print ("Ошибка открытия ордера на покупку!");
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (Ask >= PriceBuy && CountSell() > 0)
{
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Print ("Ошибка закрытия ордера на продажу!");
}
}
}
if (Bid <= PriceSell && CountBuy() > 0)
{
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Print ("Ошибка закрытия ордера на покупку!");
}
}
}
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
for (int trade = OrdersTotal()-1; trade>=0; trade--)
{
if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count++;
}
}
return(count);
}
Изменено 18 апреля, 2022 пользователем artatwjs
5 часов назад, artatwjs сказал:Всем привет есть индикатор nonlagdot, сделал по нему советник. При получени сигнала после закрытия свечи (синяя /красная точка) открывается покупка/продажа. Выход по тейкпрофиту, стоплоссу, либо по обратному сигналу.
Проблема в том что советник при открытии сделки тут же ее закрывает, может кто подскажет что исправить? Ошибка кроется в участке кода между плюсиками. Ну и насчет правильности входа я не не уверен. Советника и индикатор приложил.
//+------------------------------------------------------------------+ //| NonLagDotRobot.mq4 | //| Copyright 2022 | //| https://mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022" #property link "https://mql5.com" #property version "1.00" #property strict //-------------------------------------------------------------------- extern double Lot = 0.01; extern int TakeProfit = 60; extern int StopLoss = 60; extern int Magic = 0; extern int Slippage = 3; //-------------------------------------------------------------------- extern string NonLagDot = "Параметры индикатора NonLagDot"; extern int Price = 0; extern int Length = 20; extern int Displace = 0; extern int Filter = 0; extern int Color = 1; extern int ColorBarBack = 0; extern double Deviation = 0; //-------------------------------------------------------------------- double PriceBuy, PriceSell, SL, TP; int ticket; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if (Digits == 3 || Digits == 5) { TakeProfit *= 10; StopLoss *= 10; Slippage *= 10; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { PriceBuy = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 1, 1); PriceSell = iCustom( NULL, 0, "79nonlagdot", Price, Length, Displace, Filter, Color, ColorBarBack, Deviation, 2, 1); if (CountSell() == 0 && Bid <= PriceSell) { ticket = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Red); if (ticket >0) { SL = NormalizeDouble(Bid + StopLoss*Point, Digits); TP = NormalizeDouble(Bid - TakeProfit*Point, Digits); if (OrderSelect(ticket, SELECT_BY_TICKET)) if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0)) Print ("Ошибка модификации ордера на продажу!"); } else Print ("Ошибка открытия ордера на продажу!"); } if (CountBuy() == 0 && Ask >= PriceBuy) { ticket = OrderSend(Symbol(), OP_BUY, Lot, Ask, Slippage, 0, 0, "NonLagDot Robot", Magic, 0, Blue); if (ticket >0) { TP = NormalizeDouble(Ask + TakeProfit*Point, Digits); SL = NormalizeDouble(Ask - StopLoss*Point, Digits); if (OrderSelect(ticket, SELECT_BY_TICKET)) if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0)) Print ("Ошибка модификации ордера на покупку!"); } else Print ("Ошибка открытия ордера на покупку!"); } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (Ask >= PriceBuy && CountSell() > 0) { for(int i = OrdersTotal() -1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() == Magic && OrderType() == OP_SELL) if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black)) Print ("Ошибка закрытия ордера на продажу!"); } } } if (Bid <= PriceSell && CountBuy() > 0) { for(int i = OrdersTotal() -1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber() == Magic && OrderType() == OP_BUY) if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black)) Print ("Ошибка закрытия ордера на покупку!"); } } } } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+------------------------------------------------------------------+ int CountSell() { int count = 0; for (int trade = OrdersTotal()-1; trade>=0; trade--) { if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) count++; } } return(count); } //+------------------------------------------------------------------+ int CountBuy() { int count = 0; for (int trade = OrdersTotal()-1; trade>=0; trade--) { if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY) count++; } } return(count); }
79nonlagdot.mq4 9 \u043a\u0411 · 0 загрузок NonLagDotRobot.mq4 10 \u043a\u0411 · 0 загрузок
Вы получаете PriceBuy и PriceSell из индикатора, при этом у Вас только одна из этих двух величин не равна нулю.
Проверяйте на ноль, все встанет на свои места.
Примерно так:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if (PriceBuy > Point() && CountSell() > 0) //blue dot time
{
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Print ("Ошибка закрытия ордера на продажу!");
}
}
}
if (PriceSell > Point() && CountBuy() > 0) //red dot time
{
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Print ("Ошибка закрытия ордера на покупку!");
}
}
}
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Условие на открытие тоже нужно поправить: Ask >= PriceBuy будет выполняться, когда на графике время красных точек, потому, что PriceBuy равен нулю
Версия с правками. Я немного свернул код, чтобы не перебирались ордера попусту и чтобы проверка красной/синей зоны делалась в одном месте.
Прогнал в тесте с настройками по умолчанию. Ожидаемо льет на флете, коего по всему форексу тьма.
Можно добавить условие на вход только по смене цвета - версия R2. Динамики не меняет.
12 часов назад, Rigal сказал:Версия с правками. Я немного свернул код, чтобы не перебирались ордера попусту и чтобы проверка красной/синей зоны делалась в одном месте.
Прогнал в тесте с настройками по умолчанию. Ожидаемо льет на флете, коего по всему форексу тьма.
Можно добавить условие на вход только по смене цвета - версия R2. Динамики не меняет.
NonLagDotRobot_R1.mq4 10 \u043a\u0411 · 2 загрузки NonLagDotRobot_R2.mq4 11 \u043a\u0411 · 2 загрузки
Добавил в советник индикатор RSI и теперь при смене сигнала (цвет точки nonlagdot) открытая сделка не закрывается, а закрывается только по стоп-лоссу. Можете исправить? Советник приложил...
P.S Можно еще добавить коэффициент умножения лота после закрытия убыточной сделки
Изменено 19 апреля, 2022 пользователем artatwjs
Доброго времени суток.
Есть советник, в котором хотелось бы добавить в функции расчёта лота с риском от свободных средств:
- при убыточной сделке увеличение риска на единицу, в дальнейшем при положительной сделке возврат риска к одному проценту.
Советник прилагается.
Добрый день! Подскажите, как доделать советник, чтобы по тренду тоже строил сетку, но только со своим мультиплицированием, а не держал единственный ордер. Куда и что вставить? Я сам переделаю. Исходник прилагаю.
Доброго времени суток.
Помогите пожалуйста в советнике подправить функцию расчёта риска:
- при убыточной сделке увеличение риска в два раза, а при положительной сделке возврат риска к одному проценту.
Советник прилагается.
Ребята, а что сделать так нельзя да?
5 минут назад, drobayura сказал:Ребята, а что сделать так нельзя да?
Заплати программисту и бэнч) Так походу никто не хочет заморачиваться
Добрый день! Хотел написать советника по индикатору (индикатор во вложении), но почему-то не получается через iCustom получить данные от индикатора. При этом и в окне данных на терминале нет данных по индикатору.
Объявил все переменные кроме строковых и цветовых, в iCustom тоже все переписал, кроме строковых и цветовых. Через Comment хотел вывести значения на экран, но не получается.
Свой написанный код тоже выкладываю. Очень надеюсь на вашу помощь.Secret Forex TIO v1.5 (1).ex4
Заранее большое спасибо за помощь.
28 минут назад, nurilnar92 сказал:Добрый день! Хотел написать советника по индикатору (индикатор во вложении), но почему-то не получается через iCustom получить данные от индикатора. При этом и в окне данных на терминале нет данных по индикатору.
Объявил все переменные кроме строковых и цветовых, в iCustom тоже все переписал, кроме строковых и цветовых. Через Comment хотел вывести значения на экран, но не получается.
Свой написанный код тоже выкладываю. Очень надеюсь на вашу помощь.Secret Forex TIO v1.5 (1).ex4
Заранее большое спасибо за помощь.
Вы забываете передавать параметры "комментария".
Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:

Но в целом, я бы рекомендовал обратиться к первоисточнику: поскольку TIO является визитной карточкой известного перепродавана, который сам не умеет кодить, я взял на себя смелость предположить, что у этого индикатора есть другое название, под которым его публиковали его настоящие авторы.
Исходно он известен, как XARDFX Forex Trading System (https://www.trendfollowingsystem.com/xardfx-forex-trading-system/)
Доступен в исходном коде, который зицпредседатель "поправил", добавив свой "копирайт".
Исходник прикреплен к сообщению, имеет смысл взять нужную вам логику прямо из него, или по крайней мере заглядывать, чтобы понимать, что именно вы хотите оттуда читать.
Эта версия не идентична вашей на первый взгляд, но наверняка можно поискать еще, поскольку исходник вашей версии зицпредседатель тоже где-то скачал. Значит, и вы можете.
К слову, практика показывает, что стратегии, предлагающие явный сигнал "покупаем" и "продаем", но при этом почему-то представленные в формате индикатора, сливают все, если их протестировать формально.
Именно поэтому они индикаторы, а не торгующие советники - перерисовка решает.
20 минут назад, Rigal сказал:Вы забываете передавать параметры "комментария".
Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:
Но в целом, я бы рекомендовал обратиться к первоисточнику: поскольку TIO является визитной карточкой известного перепродавана, который сам не умеет кодить, я взял на себя смелость предположить, что у этого индикатора есть другое название, под которым его публиковали его настоящие авторы.
Исходно он известен, как XARDFX Forex Trading System (https://www.trendfollowingsystem.com/xardfx-forex-trading-system/)
Доступен в исходном коде, который зицпредседатель "поправил", добавив свой "копирайт".
Исходник прикреплен к сообщению, имеет смысл взять нужную вам логику прямо из него, или по крайней мере заглядывать, чтобы понимать, что именно вы хотите оттуда читать.
Эта версия не идентична вашей на первый взгляд, но наверняка можно поискать еще, поскольку исходник вашей версии зицпредседатель тоже где-то скачал. Значит, и вы можете.
К слову, практика показывает, что стратегии, предлагающие явный сигнал "покупаем" и "продаем", но при этом почему-то представленные в формате индикатора, сливают все, если их протестировать формально.
Именно поэтому они индикаторы, а не торгующие советники - перерисовка решает.
Спасибо вам огромное. Сам бы долго сидел и изучал. Если честно я третий день сижу и изучаю mql4. Интересно самому что-то создать, улучшить и применять в торговле. Вот изучаю. Пока программировать очень нравится, а когда еще и получается еще лучше.
Только что, nurilnar92 сказал:Спасибо вам огромное. Сам бы долго сидел и изучал. Если честно я третий день сижу и изучаю mql4. Интересно самому что-то создать, улучшить и применять в торговле. Вот изучаю. Пока программировать очень нравится, а когда еще и получается еще лучше.
Вкратце: список параметров должен совпадать по порядку, ничего нельзя пропускать. Можно на каком-то моменте остановиться: если список "обрезан", индикатор использует значения по умолчанию для остальных параметров. Последние два параметра iCustom всегда номер буфера и индекс.
Вам имеет смысл проверять, скажем, наличие стрелки на последнем баре (индекс 1), не нужно перебирать до бесконечности.
Если стрелки на последнем баре нет - не имеет значения, какая стрелка была до этого, поезд уже ушел.
2 минуты назад, Rigal сказал:Вкратце: список параметров должен совпадать по порядку, ничего нельзя пропускать. Можно на каком-то моменте остановиться: если список "обрезан", индикатор использует значения по умолчанию для остальных параметров. Последние два параметра iCustom всегда номер буфера и индекс.
Вам имеет смысл проверять, скажем, наличие стрелки на последнем баре (индекс 1), не нужно перебирать до бесконечности.
Если стрелки на последнем баре нет - не имеет значения, какая стрелка была до этого, поезд уже ушел.
Правильно ли я понял:
1. Пишем все параметры, в том числе и текстовые и цветовые?
2. Можно остановиться, т.е. половину только написать и потом перейти на номер буфера и индекс?
3. А если много параметров, то не будет проблемы, что они в iCustom не поместяться? В этом случае как быть? Я начал все переписывать туда по порядку и программа ругается "wrong parameters count". Думаю из-за того, что не помещается уже.
4. По поводу бесконечности у меня логика такая. Я не знаю какой буфер отвечает на сигнал Buy и Cell. Поэтому и до момента нахождения нужного буфера буду перебирать. Далее конечно цикл уберу.
Если имеется возможность, то прошу ответить на вопросы. Это здорово оптимизирует мне время.
Если будет интересно, то в конце файл выложу.
10 минут назад, nurilnar92 сказал:1. Пишем все параметры, в том числе и текстовые и цветовые?
Да, пропускать ничего нельзя
10 минут назад, nurilnar92 сказал:2. Можно остановиться, т.е. половину только написать и потом перейти на номер буфера и индекс?
Верно. Если вас устраивает набор по умолчанию для последних 10 параметров, их можно опустить
10 минут назад, nurilnar92 сказал:3. А если много параметров, то не будет проблемы, что они в iCustom не поместяться? В этом случае как быть? Я начал все переписывать туда по порядку и программа ругается "wrong parameters count". Думаю из-за того, что не помещается уже.
Да, у iCustom есть лимит и из него легко вылезти. С этой проблемой не справиться никак. Но если у вас есть исходник индикатора, вы можете выкинуть незначимые параметры, вроде первых двух текстовых. Просто уберите служебное слово input.
Или просто поставить в начало списка то, что вы собираетесь передавать, а все остальное опустить.
10 минут назад, nurilnar92 сказал:4. По поводу бесконечности у меня логика такая. Я не знаю какой буфер отвечает на сигнал Buy и Cell. Поэтому и до момента нахождения нужного буфера буду перебирать. Далее конечно цикл уберу.
Буферы перебирать не нужно совсем, в этом нет смысла. Нельзя программно определить, в каком буфере значение, которое вы ищете.
Либо загляните в исходник (найдите тот, который соответствует вашей версии), либо зайдите в свойствах индикатора на вкладку цветов и стилей, там будет много подсказок:

Пощелкайте цветами, гляньте на реакцию на графике - ваши целевые буферы быстро найдутся.
А перебираете вы не буфер, а индекс в буфере, отступ от последней свечи. Буферы у вас смотрят в 6 для Up и 13 для Down
Изменено 22 мая, 2022 пользователем Rigal
1 час назад, Rigal сказал:К слову, практика показывает, что стратегии, предлагающие явный сигнал "покупаем" и "продаем", но при этом почему-то представленные в формате индикатора, сливают все, если их протестировать формально.
Именно поэтому они индикаторы, а не торгующие советники - перерисовка решает.
В качестве иллюстрации вот этого утверждения: в аттаче индикатор, который мало того, что показывает покупку, продажу и точки закрытия, так еще и считает профит от торговли по этому индикатору на истории. Грааль, да и только.
Но если вы накидаете советник и протестируете, у вас получится сильно другой результат.
В частности, потому, что крестики закрытия перепрыгивают на более благоприятный бар дальше на истории, и остаются на месте, если цена не двинулась в более благоприятную для закрытия сторону.
А в торговле вам нужно принять решение, закрываться или нет, на текущем баре - вы не можете заглянуть в будущее и подождать цены получше.
1 час назад, Rigal сказал:Да, пропускать ничего нельзя
Верно. Если вас устраивает набор по умолчанию для последних 10 параметров, их можно опустить
Да, у iCustom есть лимит и из него легко вылезти. С этой проблемой не справиться никак. Но если у вас есть исходник индикатора, вы можете выкинуть незначимые параметры, вроде первых двух текстовых. Просто уберите служебное слово input.
Или просто поставить в начало списка то, что вы собираетесь передавать, а все остальное опустить.
Буферы перебирать не нужно совсем, в этом нет смысла. Нельзя программно определить, в каком буфере значение, которое вы ищете.
Либо загляните в исходник (найдите тот, который соответствует вашей версии), либо зайдите в свойствах индикатора на вкладку цветов и стилей, там будет много подсказок:
Пощелкайте цветами, гляньте на реакцию на графике - ваши целевые буферы быстро найдутся.
А перебираете вы не буфер, а индекс в буфере, отступ от последней свечи. Буферы у вас смотрят в 6 для Up и 13 для Down
Вроде все написал, но все равно не хочет подтягивать.
1. Может ли это быть связано, что рынки закрыты? Т.е. когда рынок откроется информация будет поступать.
2. Правильно ли я понял, что если мне не нужно входные параметры в индикаторе менять, то не обязательно в iCustom их писать? Везде input убераю у параметров, а в iCustom будет up=iCustom(Symbol(),PERIOD_CURRENT,"Secret",,6,1);
3. Вы писали, что "Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:", но до STR00 у меня еще есть строка Indicator и в начале его нужно писать?
14 минут назад, nurilnar92 сказал:1. Может ли это быть связано, что рынки закрыты? Т.е. когда рынок откроется информация будет поступать.
Если вы накидываете на график - конечно, у вас нет тиков.
Если в тестере стратегий - не может, должно работать сразу. Но при этом индикатор рисоваться не будет.
15 минут назад, nurilnar92 сказал:2. Правильно ли я понял, что если мне не нужно входные параметры в индикаторе менять, то не обязательно в iCustom их писать? Везде input убераю у параметров, а в iCustom будет up=iCustom(Symbol(),PERIOD_CURRENT,"Secret",,6,1);
Лишняя запятая перед номером буфера, а в остальном да, так можно
16 минут назад, nurilnar92 сказал:3. Вы писали, что "Например, вторым параметром в вашем вызове iCustom передается UpdateMode, в то время, как в индикаторе ожидается строка STR00:", но до STR00 у меня еще есть строка Indicator и в начале его нужно писать?
Да, каждой строчке в окне параметров должен соответствовать параметр в вызове, в том же порядке. Я ошибочно принял "Secret" за как раз этот параметр - вы, очевидно, так вызываете индикатор, который у вас, вероятно, переименован?
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем