Советник не всегда открывает ордера, и не всегда их модифицирует. OrderSend error 134 и OrderModify error 4108.
//| Версия : 28.11.2006 | //| Описание : Модификация одного предварительно выбранного ордера. |
ну и бабла побольше надо, во избежание 134.
ну и бабла побольше надо, во избежание 134.
134 походу возникает из-за неработающего манименеджмента. Просто размер стоплосса это разница между ценой и индикатором. Насчет модификации:
if (ticket>0)
{Modify();}
Тут разве выбирается ордер? Просто в других моих советниках написано именно так. Я попробовал и в этом, но возникает такая-же ошибка.
134 походу возникает из-за неработающего манименеджмента. Просто размер стоплосса это разница между ценой и индикатором. Насчет модификации:
if (ticket>0)
{Modify();}
Тут разве выбирается ордер? Просто в других моих советниках написано именно так. Я попробовал и в этом, но возникает такая-же ошибка.
134 возникает из-за нехватки средств на открытие, причём тут стоплосс?
А ордер в данном коде не выбирается, но надо бы.
134 возникает из-за нехватки средств на открытие, причём тут стоплосс?
А ордер не выбирается, но надо бы.
Я имею ввиду что лот зависит от размера стоп-лосса, стоп-лосс определяется разницей положения цены и индикатора. Т.е. когда возникает ошибка 134, это значит что советник пытается влупить гигантский лот. Размер стопа определяется здесь.
if (Rb<=MaxRast) { SL = NormalizeDouble(BS1-(Otstup*Point), Digits); Stop = ((Ask - SL)/Point)*Point; } if (Rb>MaxRast) { SL = NormalizeDouble(TMA1-(Otstup*Point), Digits); Stop = ((Ask - SL)/Point)*Point; } if (Rs<=MaxRast) { SL = NormalizeDouble(BS2+(Otstup*Point), Digits); Stop = ((SL - Bid)/Point)*Point; } if (Rs>MaxRast) { SL = NormalizeDouble(TMA2+(Otstup*Point), Digits); Stop = ((SL - Bid)/Point)*Point; }
Я имею ввиду что лот зависит от размера стоп-лосса, стоп-лосс определяется разницей положения цены и индикатора. Т.е. когда возникает ошибка 134, это значит что советник пытается влупить гигантский лот. Размер стопа определяется здесь.
то есть при гигантском стоплоссе - чудовищный лот )))
советую пересмотреть стратегию ММ, а лучше бросить форекс, разорение одно ;)
З.Ы.: в коде лот делится на стоплосс, значит расчётный стоплосс очень мелкий получается и в результате лот максимальный. запринтуйте все результаты расчётов, не ленитесь, тогда увидите где ошибочка.
то есть при гигантском стоплоссе - чудовищный лот )))
советую пересмотреть стратегию ММ, а лучше бросить форекс, разорение одно ;)
З.Ы.: в коде лот делится на стоплосс, значит расчётный стоплосс очень мелкий получается и в результате лот максимальный. запринтуйте все результаты расчётов, не ленитесь, тогда увидите где ошибочка.
Спасибо, попробую! =) Я сам как-то не догадался принтовать результаты, всегда без этого обходился.
По поводу выбора ордера вы были правы, исправил, осталась только одна ошибка.
Насчет "бросить форекс". Уже два года здесь, назад пути нет - без прибыли не уйду! =)
то есть при гигантском стоплоссе - чудовищный лот )))
советую пересмотреть стратегию ММ, а лучше бросить форекс, разорение одно ;)
З.Ы.: в коде лот делится на стоплосс, значит расчётный стоплосс очень мелкий получается и в результате лот максимальный. запринтуйте все результаты расчётов, не ленитесь, тогда увидите где ошибочка.
Я понял в чём ошибка. Я не могу правильно расчитать разницу цен в пунктах. А как же это сделать?
// Рассчитываем расстояние между индикаторами. if (TMA1>BS1){Rb = ((TMA1 - BS1)/Point)*Point;} // и
if (TMA1>BS1){Rb = ((TMA1 - BS1)/Point);}
Не являются правильными вариантами, хотя в другом советнике первый работает безотказно.
Я понял в чём ошибка. Я не могу правильно расчитать разницу цен в пунктах. А как же это сделать?
Не являются правильными вариантами, хотя в другом советнике первый работает безотказно.
приведите пример значений индикаторов
приведите пример значений индикаторов
Да, забыл. Вы сможете помочь, если не сложно? Или материала на эту тему подкиньте, я был бы вам очень признателен. А то я не могу найти инфу в интернете. Индикаторы показывают цены, на которых находятся, например: 1.3055
если значения обоих индикаторов близки к цене, тогда разницу в пунктах вычислить можно так:
if (TMA1>BS1) Rb = MathAbs((TMA1 - BS1)/Point); //(1.3356-1.3297)/0.0001=59)

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Не могу понять, в каком месте я допустил ошибку. Условия, связанные с индикаторами, написаны правильно, и все функции тоже. Проблема описана в шапке, стоит добавить что и манименеджмент работает неправильно.
За помощь буду искринне благодарен.
Собственно, код самого эксперта: