Здравствуйте !
Подскажите что не так с советником и как его исправить .
Почему-то не тестируется ...
Писал сам .
Это мой дебют в этой области ,так что не судите строго )
Функция int start() целая а возврат из нее return(true) булевый. Страшного мало, но все же ...
Кстати, return - это оператор, можно без скобок. Это в вызове функции скобки нужны.
Вместо if(Work==false) можно писать if(!Work)
Вместо if (Kol==1 && Opn_B_1==true) можно if (Kol==1 && Opn_B_1) - но это все мелочи
А вот серьезнее: В одном цикле for (int i=0; i<OrdersTotal(); i++)
просматриваете все ордера и заполняете массивы.
Потом в другом цикле по количеству элементов массива....
Кажется, можно это в одном цикле и без массивов все сделать
Теперь конкретно по Вашему вопросу:
Надо проверить условия входа. Вот сюда надо вставить Alert
if(Low[2]<MA_1||Low[2]<MA_2||Low[2]<MA_3||Low[2]<MA_4)
{
Alert("Покупать");
Opn_B_1=true;
Cls_S_1=true;
}
if(Close[1]< Close[2] && Close[2]<MA_1&& Close[2]<MA_2&& Close[2]<MA_3 && Close[2]< MA_4)
if(Low[2]>MA_1||Low[2]>MA_2||Low[2]>MA_3||Low[2]>MA_4)
{
Alert("Продавать");
Opn_S_1=true;
Cls_B_1=true;
}
И лучше на демо, почти реально... Вывел бы значения MA_1, MA_2 ... и прочее на график в метки и наблюдал бы
Советник как не тестировался ,так и не тестируется ...
Впечатления такие как будто от куда то очень древний код тупо скопировали даже не думаю что к чему. И зачем ордера в массивах хранить?
Есть такое - код действительно ,наверное, древний ,
но копировал я его не тупо ,а разбираясь по ходу )
Я же учусь только .
Отладка показала ,что я с массивами накосячил ,при том по ходу со всеми ))
Хотел сохранить информацию о всех открытых ордерах по отдельности ,вот и подумал ,что нужно их в массивы запихнуть ))
Есть такое - код действительно ,наверное, древний ,
но копировал я его не тупо ,а разбираясь по ходу )
Я же учусь только .
Отладка показала ,что я с массивами накосячил ,при том по ходу со всеми ))
Простите, я несколько грубо выразился. Но вы выбрали для анализа кода не очень удачный пример.
Простите, я несколько грубо выразился. Но вы выбрали для анализа кода не очень удачный пример.
Я хотел в массивы сохранить информацию о всех открытых ордерах по отдельности )
Зачем? Информацию о всех открытых ордерах всегда можно получить из терминала не используя промежуточное звено с помощью цикла и функции OrderSelect().
for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { .... } }
Зачем? Информацию о всех открытых ордерах всегда можно получить из терминала не используя промежуточное звено с помощью цикла и функции OrderSelect().
Мне нужны были типы всех ордеров просто
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { Print(OrderType()); } } }
На каждом тике будет выводить в журнал код типа открытых позиций и отложенных ордеров если они есть.
...
Более правильнее будет получать необходимую информацию об ордерах непосредственно из терминала именно в момент когда это необходимо. Если вы будет работать с информацией ранее сохраненной в массивах могут возникнуть разные коллизии. Например ордер уже давно закрыт, а он еще присутствует в вашем массиве, или в результате переинициализации эксперта ваш массив окажется вообще пустой, а на самом деле есть открытые ордера или позиции.
Вот пример, если поступил сигнал на продажу закрыть все ордера на покупку:
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if (сигнал на продажу) {//закрыть все ордера на покупку for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderType()==OP_BUY) OrderClose(....); } } } }

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите что не так с советником и как его исправить .
Почему-то не тестируется ...
Писал сам .
Это мой дебют в этой области ,так что не судите строго )