Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
скажите, есть ли тестовая система в программировании советника, чтобы показать вам шаг за шагом, что происходит, когда этот советник работает
нет, для тестирования нет пошагового ftn ; используйте Print для отображения значений для проверки и различных частей ваших программ
Мне нравится ваш код для оптимизации лотов; я подправил его, чтобы увеличить объем лота при увеличении убытков
Мне нравится ваш код для оптимизации лотов; я подправил его, чтобы увеличить объем лота при увеличении убытков
покажите мне, пожалуйста.
или пришлите мне вашего эксперта
покажите мне, пожалуйста
или пришлите мне вашего советника
он выдает ошибку
Функция "CalculateCurrentOrders" не является ссылочной и будет удалена из exp-файлаон выдает мне ошибку
Функция "CalculateCurrentOrders" не используется и будет удалена из exp-файлапросто игнорируйте эту ошибку; все, что она говорит, это то, что у вас есть функция CalculateCurrentOrders, которую вы не используете, поэтому либо удалите ее, либо левеа, это не причинит никакого вреда; система говорит, что удалит эту функцию из вашего скомпилированного файла ex4
покажите мне, пожалуйста
или пришлите мне ваш советник
в функции LotOptimization измените свой код на примерно такой
lot=lot*MulltiplyingFactor*losses
где MulitplyFactor = 2 или 3 или 4 и т.д., аналогично вашему DecreaseFactor, который должен уменьшать ваши размеры лота по мере роста убытков.
Однако, увеличение размера лота по мере роста убытков опасно для вашего советника, поэтому используйте его с осторожностью.
в функции LotOptimization измените свой код на примерно такой
lot=lot*MulltiplyingFactor*losses
где MulitplyFactor = 2 или 3 или 4 и т.д., аналогично вашему DecreaseFactor, который должен уменьшать ваши размеры лота по мере роста убытков.
Однако, увеличение размера лота по мере роста убытков опасно для вашего советника, поэтому используйте его с осторожностью.
Вы имеете в виду что-то вроде этого
//+------------------------------------------------------------------+//| Рассчитайте оптимальный размер лота |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots*Multiplying*losses;
int orders=HistoryTotal(); // общее количество ордеров на истории
int losses=0; // количество ордеров с убытками без перерыва
//---- выбор размера лота
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- рассчитать количество убыточных ордеров без перерыва
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка в истории!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- возвращает размер лота
if(lot<0.1) lot=0.1;
return(lot);
}
вы имеете в виду что-то вроде этого
//+------------------------------------------------------------------+
//| Вычислить оптимальный размер лота |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots*Multiplying*losses;
int orders=HistoryTotal(); // общее количество ордеров на истории
int losses=0; // количество ордеров с убытками без перерыва
//---- выбор размера лота
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- рассчитать количество убыточных ордеров без перерыва
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Ошибка в истории!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(Lots*Multiplying*losses;,1);}
//---- возвращает размер лота
if(lot<0.1) lot=0.1;
return(lot);
}
нет, поставьте его после if(losses>1)
нет, поставьте его после if(losses>1).
это дает мне ошибку
'Multiplying' - переменная не определена C:\Program Files\Interbank FX Trader 4\experts\jbtest4.mq4 (57, 44)
где я его определяю
он выдает мне ошибку
'Multiplying' - переменная не определена C:\Program Files\Interbank FX Trader 4\experts\jbtest4.mq4 (57, 44)
где я его определяю
Хорошо, у меня int multiplying=2;