
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, Младен,
Я наткнулся на код, сделанный вами на стохастике. Однако, когда я вставляю его в свою систему, ничего не происходит. Могу ли я уточнить у вас, что он делает?
http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4
С уважением,
Терранс
...
Попробуйте некоторые из них, размещенные здесь: https: //www.mql5.com/en/forum/175297/page3
Или здесь: https: //www.mql5.com/en/forum/177239/page2
Проверено и они работают
Привет, Младен,
Я наткнулся на код, сделанный вами на стохастике. Однако, когда я вставляю его в свои системы, ничего не происходит. Могу ли я уточнить у вас, что он делает?
http://www.forexmt4.com/mt_yahoo/Color%20Stochastic%20v1[ 1].04.mq4
С уважением,
ТеррансЭто странно.
Я изучил проблему с замком немного подробнее. Очевидно, это связано с настройками UAC (User Account Control), поэтому я зашел в панель управления windows7 и полностью отключил UAC. После перезагрузки я заметил, что замок исчез из файла. Я открыл его, и он оказался таким же, как и файл, который я разместил на этом форуме. Он полностью отличается от кода, который я писал последние несколько недель, хотя это тот же самый файл. Я подумал, что потерял всю свою работу по кодированию. Я снова включил UAC и перезагрузился, замок вернулся, и код, который я написал, снова стал нормальным.
Но потом я попытался скомпилировать код, и он выдал кучу ошибок. Но ошибки он берет не из этого кода, а из совершенно другого кода, когда я выключаю UAC - я знаю это, потому что он берет переменные, которые используются только в другом коде.
Я думаю, мне нужно будет открыть новый советник и вручную ввести весь этот код и сохранить его.
...
Это обычная проблема windows 7 (с ее защитой).
Самый простой способ избежать этого в windows 7 - установить metatrader на раздел, отличный от C, и у вас не будет подобных проблем.
Это странно.
Я изучил проблему с замком немного подробнее. Оказалось, что это связано с настройками UAC (User Account Control), поэтому я зашел в панель управления windows7 и полностью отключил UAC. После перезагрузки я заметил, что замок исчез из файла. Я открыл его, и он оказался таким же, как и файл, который я разместил на этом форуме. Он полностью отличается от кода, который я писал последние несколько недель, хотя это тот же самый файл. Я подумал, что потерял всю свою работу по кодированию. Я снова включил UAC и перезагрузился, замок вернулся, и код, который я написал, снова стал нормальным.
Но потом я попытался скомпилировать код, и он выдал кучу ошибок. Но ошибки он берет не из этого кода, а из совершенно другого кода, когда я выключаю UAC - я знаю это, потому что он берет переменные, которые используются только в другом коде.
Я думаю, мне нужно будет открыть новый советник и вручную ввести весь этот код и сохранить его.Наконец-то я добился нормального рабочего советника. Он работает точно так, как должен - в итоге я скопировал свой код в блокнот, отключил UAC, а затем вставил его в новый файл советника. И я понял, почему мои функции не работают - я поместил переменную int внутрь нормализованного двойника. Я не знал, что не могу этого сделать, но теперь знаю - мне понадобилась всего неделя, чтобы понять это! :/
В общем, я написал следующее:
if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);
if (VariableRisk == false) Risk = StaticRisk;
И я подумал, можно ли сократить это следующим образом?
if (VariableRisk == true)
{
Risk = GetRiskShort (LastOpenTicket, RiskShort);
else Risk = StaticRisk;
}
А также я написал следующее:
//--- Функция для расчета тейк-профита позиции при длинной позиции
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
double TPPriceLong = 0;
if (AutoCalcTakeProfit == true)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Позиция с тейк-профитом рассчитана успешно");
return((TPPriceLong);
}
if (AutoCalcTakeProfit == false)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Позиция статического тейк-профита рассчитана успешно");
return (TPPriceLong);
}
}
И мне интересно, можно ли сократить это следующим образом?
//--- Функция для вычисления позиции тейк-профита при длинной позиции
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
double TPPriceLong = 0;
RefreshRates();
if (AutoCalcTakeProfit == true)
{
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Позиция тейк-профита рассчитана успешно");
else TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Позиция статического тейк-профита рассчитана успешно");
return (TPPriceLong);
}
И последний вопрос: для обеспечения большей гибкости моего эксперта я хочу определить мои таймфреймы как внешние переменные. Мой сигнальный график должен быть, скажем, D1, а мой триггерный график - H4. Итак, во внешних переменных я могу сделать следующее:
extern int SignalChart = PERIOD_D1;
extern int TriggerChart = PERIOD_H4;
А затем сослаться на нее, сделав, например, следующее:
SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
Об этой части :
Да, это 100% правильный способ его использования (даже с учетом того, что вы используете закрытый бар (shift в этом примере установлен на 1) и что, используя закрытый бар в тестировании, вы избежите обычной ловушки использования открытого бара в мультитаймфрейминге).
Наконец-то у меня получился нормально работающий советник. Он работает точно так, как должен - я скопировал свой код в блокнот, отключил UAC, а затем вставил его в новый файл советника. И я понял, почему мои функции не работают - я поместил переменную int в нормализованный double. Я не знал, что не могу этого сделать, но теперь знаю - мне понадобилась всего неделя, чтобы понять это! :/
В общем, я написал следующее:
if (VariableRisk == true) Risk = GetRiskShort (LastOpenTicket, RiskShort);
if (VariableRisk == false) Risk = StaticRisk;
И я подумал, можно ли сократить это следующим образом?
if (VariableRisk == true)
{
Risk = GetRiskShort (LastOpenTicket, RiskShort);
else Risk = StaticRisk;
}
А также я написал следующее:
//--- Функция для расчета тейк-профита позиции при длинной позиции
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
double TPPriceLong = 0;
if (AutoCalcTakeProfit == true)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Позиция с тейк-профитом рассчитана успешно");
return((TPPriceLong);
}
if (AutoCalcTakeProfit == false)
{
RefreshRates();
TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Позиция статического тейк-профита рассчитана успешно");
return (TPPriceLong);
}
}
И мне интересно, можно ли сократить это следующим образом?
//--- Функция для вычисления позиции тейк-профита при длинной позиции
double GetTPPriceLong (double SLPriceLong, int RiskRewardRatio, int StaticTP, bool AutoCalcTakeProfit)
{
double TPPriceLong = 0;
RefreshRates();
if (AutoCalcTakeProfit == true)
{
TPPriceLong = OrderOpenPrice() + ((OrderOpenPrice() - SLPriceLong) * RiskRewardRatio);
Print("Позиция тейк-профита рассчитана успешно");
else TPPriceLong = OrderOpenPrice() + (StaticTP * 0.0001);
Print("Позиция статического тейк-профита рассчитана успешно");
return (TPPriceLong);
}
И последний вопрос: для обеспечения большей гибкости моего эксперта я хочу определить мои таймфреймы как внешние переменные. Мой сигнальный график должен быть, скажем, D1, а мой триггерный график - H4. Итак, во внешних переменных я могу сделать следующее:
extern int SignalChart = PERIOD_D1;
extern int TriggerChart = PERIOD_H4;
А затем сослаться на него, сделав, например, следующее:
SlowMACurrent = iMA(Symbol(), SignalChart, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);Здравствуйте, я получаю код ошибки 4059:
ERR_FUNC_NOT_ALLOWED_IN_TESTING[/TD].
Я поискал, но не могу найти никакой дополнительной информации о том, что это значит?
Не могли бы вы помочь добавить следующие коды к этому индикатору parabolic sar?
Спасибо Младен,
Я перечитаю ваше сообщение, чтобы понять, честно говоря, я немного запутался, читая его, но это, скорее всего, мое невежество. Я буду задавать вопросы, если они у меня появятся.
Спасибо, приятель.
Спасибо,
ПипДорогой друг,
Не могли бы вы помочь добавить следующие коды к этому PARABOLIC SAR alert parabolic_alert_mod.mq4INDICATOR?
Я не ищу советника. Если возможно, добавьте хотя бы опцию SHIFT в индикатор.
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double TrailingStop = 30;
extern double SAR_Step = 0.02;
extern double SAR_Maximum = 0.2;
extern double Shift = 1;
...
joelnelson
TakeProfit, Lots и TrailingStop не имеют никакого отношения к тому, как рассчитывается параболический sar (эти параметры, очевидно, взяты из советника, использующего sar в своей работе). Поэтому, если вы не ищете советника, то добавить эти параметры не представляется возможным.
Также сдвиг в параметрах относится к бару, который тестируется (параболический SAR не сдвигается, как обычно сдвигается скользящая средняя) Эти параметры, вероятно, предназначены для вызова встроенного sar, а встроенный sar имеет следующий вид
Сдвиг 1 в этом случае означает проверку значения первого закрытого бара параболического сара.
Дорогой друг,
МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ ДОБАВИТЬ СЛЕДУЮЩИЕ КОДЫ К ЭТОМУ ПАРАБОЛИЧЕСКОМУ SAR алерту parabolic_alert_mod.mq4INDICATOR?
Я не ищу советника. Если возможно, добавьте хотя бы опцию SHIFT в индикатор.
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double TrailingStop = 30;
extern double SAR_Step = 0.02;
extern double SAR_Maximum = 0.2;
extern double Shift=1;...
Эта ошибка может быть возвращена некоторыми функциями.
Функции, которые могут вызвать эту ошибку при тестировании, следующие :
Итак, вызов некоторых из вышеперечисленных функций вызвал эту ошибку
Здравствуйте, я получаю код ошибки 4059: