Что-то привлекло мое внимание.
Ниже приведены блоки кода «Маximum spread», которые вы недавно выпустили и использовали в более старых версиях.
новый код;
bool CheckSpread() { double spread = 0; if(_MaxSpread > 0 && (spread = m_symbol.Ask()-m_symbol.Bid()) > _MaxSpread) { Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY ... but spread (",IntegerToString(int(spread/m_symbol.Point())),") > 'Maximum spread'"); return false; } return true; }
старый код;
bool CheckSpread() { double spread = 0; if((spread = m_symbol.Ask()-m_symbol.Bid()) > _MaxSpread) { //if(InpPrintLog) Print("Spread Ask-Bid (",DoubleToString(spread,m_symbol.Digits()),")", " > Maximum spread (",DoubleToString(_MaxSpread,m_symbol.Digits()),")"); return false; } return true; }
Спасибо.
Вот новый код:
double spread=m_symbol.Ask()-m_symbol.Bid(); if(m_pending_max_spread>0.0 && spread>m_pending_max_spread) { m_waiting_pending_order=false; if(InpPrintLog) Print(__FILE__," ",__FUNCTION__, ", ERROR: ","Spread Ask-Bid (",DoubleToString(spread,m_symbol.Digits()),")", " > Maximum spread (",DoubleToString(m_pending_max_spread,m_symbol.Digits()),")"); return; }
что именно здесь Вас смущает?
Я просто пытаюсь чему-то научиться.
Я пытаюсь понять «логическое мышление и подход», которые вызывают больше кодирования между двумя блоками кода с одинаковыми функциями и результатами.
Этот блок кода несовместим с текущим блоком кода «Маximum spread» советника, над которым я работаю.
Советник, над которым я работаю, по-разному обрабатывает спреды, связанные с отложенными ордерами.
Вот почему я могу использовать два блока кода, которые я привел в своем первом посте, и поэтому мне любопытны различия в нюансах между ними.
Я просто пытаюсь чему-то научиться.
Я пытаюсь понять «логическое мышление и подход», которые вызывают больше кодирования между двумя блоками кода с одинаковыми функциями и результатами.
Этот блок кода несовместим с текущим блоком кода «Маximum spread» советника, над которым я работаю.
Советник, над которым я работаю, по-разному обрабатывает спреды, связанные с отложенными ордерами.
Вот почему я могу использовать два блока кода, которые я привел в своем первом посте, и поэтому мне любопытны различия в нюансах между ними.
Вы показали два блока - ни один из них не есть моим. Вы или показывайте истинный код или указывайте какие изменения Вы внесли. И самое главное - я использую стилизатор
Остальные стили неприемлимы.
Вы показали два блока - ни один из них не есть моим. Вы или показывайте истинный код или указывайте какие изменения Вы внесли. И самое главное - я использую стилизатор
Остальные стили неприемлимы.
Я провожу несколько тестов с вашим «EMA Cross Contest Hedged EA» и пытаюсь улучшить себя.
Функция "Маximum spread" в этом советнике недоступна.
Вот почему я попытался адаптировать функцию «Маximum spread», которую вы используете в своем советнике «Alligator EA iSAR Trailing 2».
Поэтому в кодовых блоках есть обязательные отличия.
Разберём код по косточкам:
1. double spread=m_symbol.Ask()-m_symbol.Bid(); 2. if(m_pending_max_spread>0.0 && spread>m_pending_max_spread) 3. { 4. m_waiting_pending_order=false; 5. if(InpPrintLog) 6. Print(__FILE__," ",__FUNCTION__, 7. ", ERROR: ","Spread Ask-Bid (",DoubleToString(spread,m_symbol.Digits()),")", 8. " > Maximum spread (",DoubleToString(m_pending_max_spread,m_symbol.Digits()),")"); 9. return; 10. }
Строка 1: получаем в переменную 'spread' разницу между текущими ценами 'Ask' и 'Bid'
Строка 2: 'm_pending_max_spread' - эта переменная типа 'double', содержит заданный спред (рассчитывается в OnInit как InpMaxSpread * m_symbol.Point() )
если 'm_pending_max_spread' больше нуля (помним, что '0' - это OFF) и если 'm_pending_max_spread' больше 'spread'
Строка 4: опускаем флаг 'm_waiting_pending_order'
Строки 5-8: распечатываем информационное сообщение об ошибке
Строка 9: выходим.
Разберём код по косточкам:
Строка 1: получаем в переменную 'spread' разницу между текущими ценами 'Ask' и 'Bid'
Строка 2: 'm_pending_max_spread' - эта переменная типа 'double', содержит заданный спред (рассчитывается в OnInit как InpMaxSpread * m_symbol.Point() )
если 'm_pending_max_spread' больше нуля (помним, что '0' - это OFF) и если 'm_pending_max_spread' больше 'spread'
Строка 4: опускаем флаг 'm_waiting_pending_order'
Строки 5-8: распечатываем информационное сообщение об ошибке
Строка 9: выходим.
На вкус и цвет все фломастеры разные. Вы пришли из языка нечеткой логики. А я не наоборот, не люблю составные выражения.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
MA Levels:
iMA (Moving Average, MA) и восемь уровней (четыре вверх и четыре вниз)
Автор: Vladimir Karputov