[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 774
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
НЕ че не пойму у меня есть такая строка в открытии рыночного ордера, копирую ее также в отложник и добовляю переmеную и не че не происходит таже ошибка 4107 пишит в журнал пишит а отлож ордера выставляет, если не тежело глянте пожалуста что я пропустил
НЕ че не пойму у меня есть такая строка в открытии рыночного ордера, копирую ее также в отложник и добовляю переmеную и не че не происходит таже ошибка 4107 пишит в журнал пишит а отлож ордера выставляет, если не тежело глянте пожалуста что я пропустил
У Вас чертовски неудобочитаемая организация кода. Да и имена переменных имеют такие сокращения, что тоже усложняют читаемость.
Код нужно организовывать блочно. Имена переменным присваивать такие, чтоб при одном взгляде становилось понятно о чём идёт речь. Имена констант (возьмите себе за привычку) пишите заглавными буквами. Инициализацию констант значениями нужно выносить в блок инициализации. Так например, у Вас совершенно неоправдано использована строка
string sy = Symbol();
в старте советника. Ну скажите, зачем на каждом тике нужно вызывать функцию Symbol(), если на протяжение всего торга имя торгового инструмента не меняется? Достаточно 1 раз проинициализировать значением переменную sy в блоке инициализации и всё. Далее, вот это блок кода
В корне не верен! Чтоб узнать стоп-лосс последнего ордера, его (ордер) сначала нужно выбрать при помощи OrderSelect() - пример смотрите в нижеприведённом счётчике ордеров. Это значит, что если Вам нужны уровни стопа последних ордеров, то делать это нужно через цикл. Следующее. Конструкция
не оправдана. Функция OrdersTotal() вернёт общее число ордеров, уже открытых в терминале. В это число войдут и те ордера, который открыты по другим торговым инструментам и в частности те ордера, которые открыты не советником, а Вами лично вручную по тому же инструменту, на который брошен советник.
Если Вы не собираетесь торговать руками и при этом торг будет идти только на том торговом инструменте, на который брошен советник, то эта конструкция сработает. Но как только Вы захотите параллельно торговать руками и при этом чтоб советник не вмешивался в Ваши ручные торги, или захотите чтоб торги шли так же и на другоих торговых инструментах, эта конструкция вас круто подведёт. Поэтому напишите лучше отдельные счётчики ордеров для каждого типа торговых ордеров. Вот Вам пример такого счётчика.
Перепишите код с учётом вышеизложенных рекомендаций!!!
Сорри не доглядел, что строки типа
вызывают подпрограмму.
Но всё равно её лучше организовывать иначе.
>> double StopLossLastPos(string sy="", int op=-1, int mn=-1) {
Не нужно передавать в подпрограмму символьное имя торгового инструмента. Ваша подпрограмма находится в советнике, а не в подключаемой библиотеке. Поскольку переменная sy у Вас объявлена на глобальном уровне советника, то эта переменная находится в области видимости таких подпрограмм. Далее, Вы передаёте в подпрограмму второй параметр, но при вызове самой подпрограммы Вы инициализируетет этот параметр значением ( int op=-1) - делать этого не нужно. То же самое касается и следующего параметра.
Строка
>> if (op<0 || OrderType()==op) {
опять-таки неудобочитаема. Посмотрите как оно у меня в счётчике организовано!
И вот ещё что. Блок кода
у Вас вызывается на каждом тике. Но не на каждом тике он нужен. Вам нужно знать стоп/профит ордера лишь в некоторых случаях. Вот в этих случаях Вам и нужно задействовать вызов своей подпрограммы.
Доброе время суток, прикрутите алерт пожалуйста к индюку (зелёная пересекает красную сверху вниз - селл, обратно - бай)
Ну снова кто-то выкладывает на форуме краденые коды. :))))))))
Сомневаюсь, что кто-то захочет забесплатно копаться в этой мешанине пронумерованных переменных :)
Доброе время суток, прикрутите алерт пожалуйста к индюку (зелёная пересекает красную сверху вниз - селл, обратно - бай)
При повторении вынужден буду ходадайствовать о бане.
Выкладывание декомпилированных индикаторов - нарушение правил форума.
Сорри не доглядел, что строки типа
вызывают подпрограмму.
Но всё равно её лучше организовывать иначе.
>> double StopLossLastPos(string sy="", int op=-1, int mn=-1) {
Не нужно передавать в подпрограмму символьное имя торгового инструмента. Ваша подпрограмма находится в советнике, а не в подключаемой библиотеке. Поскольку переменная sy у Вас объявлена на глобальном уровне советника, то эта переменная находится в области видимости таких подпрограмм. Далее, Вы передаёте в подпрограмму второй параметр, но при вызове самой подпрограммы Вы инициализируетет этот параметр значением ( int op=-1) - делать этого не нужно. То же самое касается и следующего параметра.
Строка
>> if (op<0 || OrderType()==op) {
опять-таки неудобочитаема. Посмотрите как оно у меня в счётчике организовано!
Тобиш я так понял вызов функции можно записать просто
PrAskLim = StopLossLastPos(OP_SELL) ; а в самой функции
double StopLossLastPos(int op=-1,) вот так да?
да я уже говорил что функции я взял с этого сайта, их робота проверена потому менять в них переменые на болие читаймые я как то не решаюсь, ибо возможно не хватаяет еще опыта в том что можно а что нельзя, это черевато тем что могу не то поменять в рабочей функции и все сново ищем иголку в куче кода,
но я максимально исправил то что добовлял уже сам,
но это не решило проблемы с журналом в который все также пишится 4107, и тсюда вопрос как мне нармолизовать цену и стопы ибо сама функция для установки отложеных ор деров была рабочей и я в ней не чего кардинально не менял.
и второй вопрос как к этой цене можно прибавить спред PrAskLim = StopLossLastPos(OP_SELL) ; (Spread =MarketInfo(sy, MODE_SPREAD); )
вылажую подправленый вариант советника
нужно код выкладывать?
Нужно не выкладывать краденное.
Нужно не красть.
А вот правилами этого ресурса и не возбраняется...
https://www.mql5.com/ru/code/8089
;)