[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 222
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
По моему опыту самый эффективный способ поиска ошибок это вывод сообщений в комментариях с номером ошибки с последующим визуальным прогоном советника. В начале занимает много времени, но потом быстро научишься делать без ошибок. Также исключая части кода с помощью /* ... */ можно определить как изменяется поведения советника.
Вы все правильно поняли. Далее, когда мы достали значение из коробки, оно имеет тип double, но если дана команда записать результат в переменную типа int, компилятор автоматически проделает все необходимые действия, чтобы положить значение в новую коробочку.
Чтобы окончательно убедиться, что я все правильно понял, просьба проверить мои соображения по Вашему последнему абзацу... Итак пусть имеем уже указанный выше эксперт:
тогда в строке:
Мы положили для хранения переменную целого типа Experts в коробочку "GV-переменная" (преобразовав ее в тип double). Тогда если бы (гипотетическое предположение) в эксперте была бы строка
int New_Experts=Experts;
то это бы означало, что дана команда записать результат в переменную типа int. В этом случае компилятор:
* вынул бы из коробочки значение переменной Experts типа double,
* проделал бы все необходимые изменения со значением переменной Experts,
* приписал бы это значение переменной New_Experts и...
* положил бы значение переменной New_Experts в коробочку "int".
Т.о. тип переменной - есть ничто иное, как просто внешняя обертка/упаковка какого-либо значения? и поэтому GV-переменные не могут иметь тип string, т.к. понижение типа допускается только для численных значений, а строки в числа не преобразовываются.
Так?
Заранее благодарю за ответ
что не так for (f=1;f<Bars;f++)
{
Price1 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,f)) / MarketInfo(Symbol_1, MODE_POINT);
Price2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,f)) / MarketInfo(Symbol_2, MODE_POINT);
Spread = Price1 - Price2;
Print ("Price1="+Price1, " Price2="+Price2);
if (Spread==0){t=f; break;}
}
Price12 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,t)) / MarketInfo(Symbol_1, MODE_POINT);
Price22 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,t)) / MarketInfo(Symbol_2, MODE_POINT);
Spread2 = Price12 - Price22;
if (MathAbs(Spread2) >= razdvizka && Spread2 < 0) { открывем сделку }
хочу зафиксировать бар, где раздвижка была равно нулю и от него контролировать раздвижку
if(MathAbs(Spread)<eps) { ........ } и нужно еще контролировать результат - найдена ли точка, удовлетворяющая условию или нет. ИМХО, лучше оформить отдельной функцией, например, так:
здравствуйте.
кто знает, есть в индикаторах какой-нибудь #property, что бы индикатор показывал всегда один и тот же период, к примеру d1?
и не переключался, даже если переключаешь тайм фрейм в метатрейдере?
спасибо
------------------------------------------
ох... как много профи.....
помогите!!!!
как вызвать индикатор из скрипта, очень надо - чтобы он после стал отображаться на окошке
добрый вечер! Помогите пожалуйста внести изменения в код советника.А именно:
1. При тестировании все нормально - но при торговле первую сделку приходится открывать вручную, стоп и тейк выставлять тоже. Хотелось бы что бы при активации советника и приходу цены на новый тик советник начал торговать автоматически.
2. Так как при срабатывании стоп лосса следующая позиция открывается с удвоенным лотом от предыдущего, то лот теоретически может увеличиватья до бесконечности ( в моем случае до 51,2 ) хотелось бы ограничить его (например 0,8) с возможностью поменять порог. При достижении порога и срабатывании стопа что бы советник не отключался, а начинал бы все заново с 0,1.
Знатоки помогите пожалуйста. Целы день колошматюсь не какого толка.
Ордер стоит на подхвате(Главный БАЙ, отложенный СЕЛЛСТОП подстраховка)
При закрытии СЕЛЛСТОП в без убытке, откладывается опять же в тоже самое место.
Чтобы окончательно убедиться, что я все правильно понял, просьба проверить мои соображения по Вашему последнему абзацу... Итак пусть имеем уже указанный выше эксперт:
тогда в строке:
Мы положили для хранения переменную целого типа Experts в коробочку "GV-переменная" (преобразовав ее в тип double). Тогда если бы (гипотетическое предположение) в эксперте была бы строка
то это бы означало, что дана команда записать результат в переменную типа int. В этом случае компилятор:
* вынул бы из коробочки значение переменной Experts типа double,
* проделал бы все необходимые изменения со значением переменной Experts,
* приписал бы это значение переменной New_Experts и...
* положил бы значение переменной New_Experts в коробочку "int".
Т.о. тип переменной - есть ничто иное, как просто внешняя обертка/упаковка какого-либо значения? и поэтому GV-переменные не могут иметь тип string, т.к. понижение типа допускается только для численных значений, а строки в числа не преобразовываются.
Так?
Заранее благодарю за ответ
Не совсем так. Дело в том, что переменная Experts уже имеет тип int, следовательно, преобразование типа должно произойти ДО присвоения ей значения, т.е. компилятор
* вынул из коробочки значение типа double (оно не имеет имени в вашей программе, а записывается просто в некий известный компилятору адрес в оперативной памяти или в регистр процессора)
* проделал все необходимые изменения со значением вышеуказанной переменной и записал новое значение (уже типа int!) в переменную Experts,
* приписал это значение (типа int!) переменной New_Experts. Они имеют одинаковый тип, следовательно, тут просто переброска значения из одной ячейки памяти в другую.
P.S. Очень радует наличие персон, которые настолько подробно осмысливают свои деяния. На самом деле, без шуток. Обращайтесь еще.
добрый вечер! Помогите пожалуйста внести изменения в код советника.А именно:
1. При тестировании все нормально - но при торговле первую сделку приходится открывать вручную, стоп и тейк выставлять тоже. Хотелось бы что бы при активации советника и приходу цены на новый тик советник начал торговать автоматически.
2. Так как при срабатывании стоп лосса следующая позиция открывается с удвоенным лотом от предыдущего, то лот теоретически может увеличиватья до бесконечности ( в моем случае до 51,2 ) хотелось бы ограничить его (например 0,8) с возможностью поменять порог. При достижении порога и срабатывании стопа что бы советник не отключался, а начинал бы все заново с 0,1.
Пробуйте: