Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 664
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да, входные параметры не могут быть модифицированы. Если честно, не понимаю, зачем менять это значение в соответствии с 3/5 значными котировками? Вы ведь задаете это значение во входных параметрах. Нельзя просто написать 100 (если 3/5 значные) и не мучиться?
По факту оптимизацию делаю на 5 знаках - больше истории, а торгую на 4, используются разные настройки, в том числе и пункты. Не хочется путаться в настройках - поэтому такое решение.
По факту оптимизацию делаю на 5 знаках - больше истории, а торгую на 4, используются разные настройки, в том числе и пункты. Не хочется путаться в настройках - поэтому такое решение.
Так должно работать
int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}
Так должно работать
int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}
Лавлю ещё такую ошибку - как её править?
'MODE_MAIN' - enumerator identifier already defined initmql4__1.mqh 223 24
ENUM_STO_PRICE StoFieldMigrate(int field)
{
switch(field)
{
case 0: return(STO_LOWHIGH);
case 1: return(STO_CLOSECLOSE);
default: return(STO_LOWHIGH);
}
}
//+------------------------------------------------------------------+
enum ALLIGATOR_MODE { MODE_GATORJAW=1, MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE { MODE_MAIN, MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE { MODE_BASE, MODE_UPPER, MODE_LOWER };
enum ICHIMOKU_MODE { MODE_TENKANSEN=1, MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN, MODE_SIGNAL };
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
{
double buf[];
switch(index)
{
case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
return(buf[0]); break;
case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
return(buf[0]); break;
case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
return(buf[0]); break;
case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
return(buf[0]); break;
case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
return(buf[0]); break;
default: break;
}
return(EMPTY_VALUE);
}
//+------------------------------------------------------------------+
Такая ситуацию, получаю ошибку - помогите понять, почему возникает ошибка - в MQL5 нельзя менять значение вводимой пользователем переменной?
Нельзя!
Если решили использовать MQL4_to_MQL5.mqh, то настоятельно рекомендую этого не делать. Т.к. он писался для примеров, что в описании библиотеки. Т.е. он ни капли не универсальный. В частности, там очень ограниченная версия MarketInfo (чтобы только примеры работали). Но хорошие решения там есть. Поэтому сам этот mqh лучше не использовать, а взять оттуда полезные вещи только.
Лавлю ещё такую ошибку - как её править?
'MODE_MAIN' - enumerator identifier already defined initmql4__1.mqh 223 24
ENUM_STO_PRICE StoFieldMigrate(int field)
{
switch(field)
{
case 0: return(STO_LOWHIGH);
case 1: return(STO_CLOSECLOSE);
default: return(STO_LOWHIGH);
}
}
//+------------------------------------------------------------------+
enum ALLIGATOR_MODE { MODE_GATORJAW=1, MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE { MODE_MAIN, MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE { MODE_BASE, MODE_UPPER, MODE_LOWER };
enum ICHIMOKU_MODE { MODE_TENKANSEN=1, MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN, MODE_SIGNAL };
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
{
double buf[];
switch(index)
{
case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
return(buf[0]); break;
case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
return(buf[0]); break;
case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
return(buf[0]); break;
case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
return(buf[0]); break;
case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
return(buf[0]); break;
default: break;
}
return(EMPTY_VALUE);
}
//+------------------------------------------------------------------+
Переименовывать. Поля ВСЕХ перечислений должны отличаться. А у Вас есть одноименные поля в enum ADX_MODE и enum MAIN_SIGNAL_MODE.
Я закомментировал пока... думаю это не критично...
Однако, скомпилировал советник с использованием двух библиотек - торговых функций и перевода иных функций с 4 на 5.
Пока тошнит от тестера в пятерке - не могу найти где тут индикаторы можно накинуть при визуализации и как лог отфильтровать...
Увидеть открытые ордера пока не удалось, эх.
Как это интерпретировать:
2016.11.04 20:42:25.224 2016.02.11 14:04:30 При установке отложенного непредвиденная ошибка - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder отправлен запрос на установку ордера. Тип: BuyStop лот=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 failed buy stop 1.00 RTS-12.16 at 68180 sl: 67260 tp: 68200 [Invalid expiration]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 При установке отложенного непредвиденная ошибка - 4756
Как это интерпретировать:
2016.11.04 20:42:25.224 2016.02.11 14:04:30 При установке отложенного непредвиденная ошибка - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder отправлен запрос на установку ордера. Тип: BuyStop лот=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 failed buy stop 1.00 RTS-12.16 at 68180 sl: 67260 tp: 68200 [Invalid expiration]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 При установке отложенного непредвиденная ошибка - 4756
Пока тошнит от тестера в пятерке - не могу найти где тут индикаторы можно накинуть при визуализации и как лог отфильтровать...
Увидеть открытые ордера пока не удалось, эх.