Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
улыбнуло. Спасибо за юмор.
он имел ввиду эти ветки
https://www.mql5.com/ru/forum/6343
https://www.mql5.com/ru/forum/160587
С чего бы это ?
МТ4 и МТ5 - это абсолютно одинаковый язык, и говорить, что "МТ4 проще" - это все равно, что говорить, что "Язык СССР проще, чем язык РФ".
Выше верно отметили всю разнницу - для МТ4 все еще предлагаются более привлекательные условия, чем для МТ5. С точки зрения программирования - разницы никакой.
Взял робота написанного на MQL5, скомпилировал в редакторе MQL4: 100 error(s), 13 warning(s).
И ошибки не только в работе с ордерами, вот например:
'iMA' - wrong parameters count
'IndicatorRelease' - function not defined
'CopyBuffer' - function not defined
Взял робота написанного на MQL5, скомпилировал в редакторе MQL4: 100 error(s), 13 warning(s).
И ошибки не только в работе с ордерами, вот например:
'iMA' - wrong parameters count
'IndicatorRelease' - function not defined
'CopyBuffer' - function not defined
Взял робота написанного на MQL5, скомпилировал в редакторе MQL4: 100 error(s), 13 warning(s).
И ошибки не только в работе с ордерами, вот например:
'iMA' - wrong parameters count
'IndicatorRelease' - function not defined
'CopyBuffer' - function not defined
Прям с рабочего кода скопировал.
#ifdef __MQL5__
if(BarsCalculated(m_handle_macd) < iBarLook+1) return;
if( CopyBuffer( m_handle_macd, 0, 0, iBarLook+1, m_buff_MACD_main ) == iBarLook+1 &&
CopyBuffer( m_handle_macd, 1, 0, iBarLook+1, m_buff_MACD_signal ) == iBarLook+1 )
{
MacdCurrent = m_buff_MACD_main[0];
MacdPrevious = m_buff_MACD_main[iBarLook];
SignalCurrent = m_buff_MACD_signal[0];
SignalPrevious = m_buff_MACD_signal[iBarLook];
ArrayFree(m_buff_MACD_main);
ArrayFree(m_buff_MACD_signal);
}
#else
MacdCurrent = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_MAIN, 0);
MacdPrevious = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_MAIN, iBarLook);
SignalCurrent = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_SIGNAL, 0);
SignalPrevious = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_SIGNAL, iBarLook);
#endif
А зачем вы ключ от соседской квартиры тыкаете в свою замочную скважину?
Если "МТ4 и МТ5 - это абсолютно одинаковый язык", то и ошибок быть не должно.
Прям с рабочего кода скопировал.
#ifdef __MQL5__
if(BarsCalculated(m_handle_macd) < iBarLook+1) return;
if( CopyBuffer( m_handle_macd, 0, 0, iBarLook+1, m_buff_MACD_main ) == iBarLook+1 &&
CopyBuffer( m_handle_macd, 1, 0, iBarLook+1, m_buff_MACD_signal ) == iBarLook+1 )
{
MacdCurrent = m_buff_MACD_main[0];
MacdPrevious = m_buff_MACD_main[iBarLook];
SignalCurrent = m_buff_MACD_signal[0];
SignalPrevious = m_buff_MACD_signal[iBarLook];
ArrayFree(m_buff_MACD_main);
ArrayFree(m_buff_MACD_signal);
}
#else
MacdCurrent = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_MAIN, 0);
MacdPrevious = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_MAIN, iBarLook);
SignalCurrent = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_SIGNAL, 0);
SignalPrevious = iMACD(Symbol(), 0, MACDfastEMA, MACDslowEMA, MACDsigLine, MACD_Price, MODE_SIGNAL, iBarLook);
#endif
Этот код как раз опровергает утверждение что "МТ4 и МТ5 - это абсолютно одинаковый язык"
Если "МТ4 и МТ5 - это абсолютно одинаковый язык", то и ошибок быть не должно.
человеку наврали, что 4 и 5 это одинаковые языки. он проверил, что это не так. а потом его еще и обосрали. )))
Этот код как раз опровергает утверждение что "МТ4 и МТ5 - это абсолютно одинаковый язык"
В некоторых мелких нюансах, но если сразу учитывать разницу, то вполне хватает
#include <Trade_MQL5.mqh>
#else
#include <Trade_MQL4.mqh>
#endif
CTrade trade;
с одноименными функциями и вполне дальше можно писать один код не заморачиваясь на некоторые отличия.
Например в Trade_MQL5.mqh
class CTrade
{
public:
CTrade(){};
~CTrade(){};
// Информация по ордеру
int Orders_Total() { return( PositionsTotal() ); }
string Order_Symbol() { return( PositionGetString(POSITION_SYMBOL) ); }
int Order_Ticket() { return( (int)PositionGetInteger(POSITION_TICKET) ); }
int Order_Type() { return( (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) ); }
double Order_OpenPrice() { return( (double)PositionGetDouble(POSITION_PRICE_OPEN) ); }
double Order_Lots() { return( (double)PositionGetDouble(POSITION_VOLUME) ); }
double Order_StopLoss() { return( (double)PositionGetDouble(POSITION_SL) ); }
double Order_TakeProfit() { return( (double)PositionGetDouble(POSITION_TP) ); }
double Order_Profit() { return( (double)PositionGetDouble(POSITION_PROFIT) ); }
double Order_Swap() { return( (double)PositionGetDouble(POSITION_SWAP) );}
double Order_Commission() { return( (double)PositionGetDouble(POSITION_COMMISSION) ); }
int Order_MagicNumber() { return( (int)PositionGetInteger(POSITION_MAGIC) ); }
bool Order_Select(const int cnt){ return( PositionSelect( PositionGetSymbol(cnt) ) ); }
};
и в Trade_MQL4.mqh
class CTrade
{
public:
CTrade(){};
~CTrade(){}
// Информация по ордеру
int Orders_Total() { return( OrdersTotal() ); }
string Order_Symbol() { return( OrderSymbol() ); }
int Order_Ticket() { return( OrderTicket() ); }
int Order_Type() { return( OrderType() ); }
double Order_OpenPrice() { return( OrderOpenPrice() ); }
double Order_Lots() { return( OrderLots() ); }
double Order_StopLoss() { return( OrderStopLoss() ); }
double Order_TakeProfit() { return( OrderTakeProfit() ); }
double Order_Profit() { return( OrderProfit() ); }
double Order_Swap() { return( OrderSwap() );}
double Order_Commission() { return( OrderCommission() ); }
int Order_MagicNumber() { return( OrderMagicNumber() ); }
bool Order_Select(const int cnt){ return( OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ); }
};
и по коду в дальнейшем использую trade.функция(); все проблем ни каких.
Подключаю данный Class в начале скрипта и спокойно пишу.
Например:
{
if( !trade.Order_Select(cnt) ) continue;
if( trade.Order_Type()!=ORDER_TYPE_BUY && trade.Order_Type()!=ORDER_TYPE_SELL ) continue;
if( trade.Order_MagicNumber()!= 111 ) continue;
switch( trade.Order_Type() )
{
case ORDER_TYPE_BUY:
break;
case ORDER_TYPE_SELL:
break;
}
}
P.S. Код конечно моего класса подрезан, но сам принцип думаю понятен.
человеку наврали, что 4 и 5 это одинаковые языки. он проверил, что это не так. а потом его еще и обосрали. )))
Нет, просто "человек" пришел сюда продвигать глупости.
Ему очень хочется.