Скачать MetaTrader 5

В чем проблема?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Nickolay72
113
Nickolay72  

Доброго всем времени суток.Я во всем этом чайник,притом еще заварочный.Проблема вот в чем.Написал советник(почти написал),посреди работы проверяю,и .....не работает....Где косяк????

 

 

Те,кто зашел поиздеваться,поприкалываться,построить из себя мастера поучающего лошару,...все пошли НА Х...Прошу помощи,а не высказываний умничающих ушлепков.Я в программировании ноль.Вы в моей професии нули.Нужна помощь,а не гнобьё.

Файлы:
Zmey.mq4 5 kb
Eugeniy Lugovoy
1991
Eugeniy Lugovoy  

Если честно, лучше будет если каждый станет заниматься своим любимым делом.

Вы написали не советник, а индикатор, пытающийся открывать ордера. Вам лучше сюда: https://www.mql5.com/ru/forum/6343

Касательно только OnInit:

int OnInit()

  {
   if (Digits==3||Digits==5)
   {
    slippage*=10;
   }
   {
    Comment=TimeFrame*Mexp;
   }
   return(INIT_SUCCEEDED);
  }

1. Переменная slippage у Вас входной параметр, не стоит его изменять программно. Задайте глобальную переменную с другим именем и используйте ее

2. Comment - зарезервированное ключевое слово языка MQL, его не рекомендуется использовать для именования переменных.

3. Comment у Вас всегда будет 0, поскольку TimFrame объявлен, но не инициализирован никаким значением по умолчанию.

4. Входной параметр Mexp имеет тип double, при перемножении с TimeFrame вы получите double, а Comment объявлен как int => усечение данных 

Создайте проект из шаблона эксперта, в нем не может быть строк типа:

#property indicator_chart_window
#property indicator_buffers 5 
#property     indicator_color1  Green
#property     indicator_color2  Red 
Eugeniy Lugovoy
1991
Eugeniy Lugovoy  

Издеваться здесь вряд ли кто будет, но и помогать мало кто станет при такой постановке вопроса типа "я написал... ничего не работает... где ошибка?"

Здесь люди делятся опытом и обсуждают конкретные проблемы. В Ваш код никто вникать не будет при такой постановке. В любом случае, на том или ином этапе, Вас отправят читать стандартную документацию. И фактически, это и есть помощь.

Oksana Berenko
2629
Oksana Berenko  

Ошибка в строке 44:

строка 44: double PriceHigh,PriceLow,MacdCurrent,SignalCurrent,PRICE_OPEN,PRICE_CLOSE;

Уберите две последних переменных.  Их не надо объявлять перед использованием. Надо:

строка 44: double PriceHigh,PriceLow,MacdCurrent,SignalCurrent;

Тогда у вас значения с индикаторов без ошибок будут браться.

Строчка 100 и 105, в функции OrderSend - комментарий или текст или NULL.  "Comment" нельзя туда посылать - это зарезервированная функция. Можно:

строка 100: ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"",magic,0,Blue);
строка 105: ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"",magic,0,Red);

OnDeinit не возвращает ничего. Надо:

void OnDeinit(const int reason)
  {   

  }

В корне не верно в строке 45 и 58:

строка 45: int    ticket,Comment,TimeFrame;
строка 58: Comment=TimeFrame*Mexp;

Вместо Comment используйте другое название переменной, так как это зарезервированная функция.

Зачем вы объявляете то, что не используете? Тем более, это не используется в советниках. Уберите строки:

строка 11: #property indicator_chart_window
строка 12: #property indicator_buffers 5

строка 24-25:
#property     indicator_color1  Green
#property     indicator_color2  Red

строка 34-37:
//---- indicator buffers
double gadblMid[];
double gadblUpper[];
double gadblLower[];

Перечислила ошибки, что на поверхности. Может, есть еще.

P.S. "Я в программировании ноль.Вы в моей професии нули." - если мне нужен хлеб - я его покупаю, если хочу вылечиться - оплачиваю услуги доктора. Можете обратиться сюда: https://www.mql5.com/ru/job

Фриланс-сервис на MQL5.com
Фриланс-сервис на MQL5.com
  • www.mql5.com
Заказы на разработку программ для трейдинга
Eugeniy Lugovoy
1991
Eugeniy Lugovoy  
Oksana Berenko:

Ошибка в строке 44:

Уберите две последних переменных.  Их не надо объявлять перед использованием. Надо:

Тогда у вас значения с индикаторов без ошибок будут браться.

Строчка 100 и 105, в функции OrderSend - комментарий или текст или NULL.  "Comment" нельзя туда посылать - это зарезервированная функция. Можно:

OnDeinit не возвращает ничего. Надо:

В корне не верно в строке 45 и 58:

Вместо Comment используйте другое название переменной, так как это зарезервированная функция.

Зачем вы объявляете то, что не используете? Тем более, это не используется в советниках. Уберите строки:

Перечислила ошибки, что на поверхности. Может, есть еще.

P.S. "Я в программировании ноль.Вы в моей професии нули." - если мне нужен хлеб - я его покупаю, если хочу вылечиться - оплачиваю услуги доктора. Можете обратиться сюда: https://www.mql5.com/ru/job

Ксюша, добрая душа!

Рекомендую вникнуть в OnTick... я получил массу позитива. 

Oksana Berenko
2629
Oksana Berenko  
Eugeniy Lugovoy:

Ксюша, добрая душа!

Рекомендую вникнуть в OnTick... я получил массу позитива. 

Присмотрелась ))) Что это? Эта логика работать не будет. Вернее она здесь отсутствует:

строка 98:  if (PRICE_OPEN<PriceLow&&PRICE_OPEN<PRICE_CLOSE&&SignalCurrent<MacdCurrent&&indicator_color2<indicator_color1)
строка 105: else if (PRICE_OPEN>PriceHigh&&PRICE_OPEN>PRICE_CLOSE&&SignalCurrent>MacdCurrent&&indicator_color2>indicator_color1)
Eugeniy Lugovoy
1991
Eugeniy Lugovoy  
Oksana Berenko:

Присмотрелась ))) Что это? Эта логика работать не будет. Вернее она здесь отсутствует:

оффтоп: забавно когда девушка (тем более, судя по фото, блондинка) рассуждает о логике :))))))))))))))))))))))))

Ксюша A++++ 

Oksana Berenko
2629
Oksana Berenko  
Eugeniy Lugovoy:

оффтоп: забавно когда девушка (тем более, судя по фото, блондинка) рассуждает о логике :))))))))))))))))))))))))

Ксюша A++++ 

у вас получалось программировать без логики? )))
Eugeniy Lugovoy
1991
Eugeniy Lugovoy  
Oksana Berenko:
у вас получалось программировать без логики? )))

да не в этом дело, просто видел девушку со встроенной логикой только раз в жизни. не блондинку.

А тут прям резонанс такой :) хоть какой-то позитив на ночь ))) 

Nickolay72
113
Nickolay72  

Спасибо огромное.С объяснениями понимается лучше.

P.S. Можно,конечно,и купить готовый советник.Но хочется разобраться самому.))) 

Eugeniy Lugovoy
1991
Eugeniy Lugovoy  
Nickolay72:

Спасибо огромное.С объяснениями понимается лучше.

P.S. Можно,конечно,и купить готовый советник.Но хочется разобраться самому.))) 

в строках типа

if (PRICE_OPEN<PriceLow&&PRICE_OPEN<PRICE_CLOSE&&SignalCurrent<MacdCurrent&&indicator_color2<indicator_color1) 

PRICE_OPEN, PRICE_CLOSE это константы нумерованного типа, они используются при задании параметров индикатору (модели расчета, по ценам открытия или закрытия баров). т.е. с ними проводить операции сравнения бессмысленно в принципе.

Поэтому часть условия "PRICE_OPEN<PriceLow" и подобные... это все равно что сравнивать тёплое с зелёным.

indicator_color2 и indicator_color1... ну... как бы сравнивать цвета никто не запрещает... но что это даст для торговли?

В общем лучше определитесь по каким конкретным условиям действительно нужно открывать BUY/SELL, а уж потом логику прописывать в виде программы.

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий