Не без помощи людей с этого форума, написал советник, но он работает немного не так, как я хочу
...
Помогите пожалуйста, спасибо
1. Строки вычисления высоты свечей имеет смысл всунуть также в if(newBar()) - эти данные не меняются на каждом тике.
2. Зачем вкладывать проверку if(newBar()) внутрь if(newBar())??? Какой в этом смысл?
3. ArrayResize() не обнуляет массив, то есть на следующем баре в массиве будут старые данные, которые ниже по коду частично перезапишутся, а часть их останется, если ордеров будет уже меньше. Да и зачем писать тикеты в массив, если они и так доступны после OrderSelect(), непонятно. Как так получается вообще закрыть ордер без того, чтобы его предварительно выбрать с помощью OrderSelect()???
4. Потратьте немного времени, чтобы запринтовать в журнал передаваемые торговым функциям значения, да и код ошибки не мешало бы, сильно упрощает отлавливание ошибок в логике кода, не надо лениться. Компилятор ловит только грубые ошибки в синтаксисе, а логику работы программы не проверит никто, кроме программиста.
1. Строки вычисления высоты свечей имеет смысл всунуть также в if(newBar()) - эти данные не меняются на каждом тике.
2. Зачем вкладывать проверку if(newBar()) внутрь if(newBar())??? Какой в этом смысл?
3. ArrayResize() не обнуляет массив, то есть на следующем баре в массиве будут старые данные, которые ниже по коду частично перезапишутся, а часть их останется, если ордеров будет уже меньше. Да и зачем писать тикеты в массив, если они и так доступны после OrderSelect(), непонятно. Как так получается вообще закрыть ордер без того, чтобы его предварительно выбрать с помощью OrderSelect()???
4. Потратьте немного времени, чтобы запринтовать в журнал передаваемые торговым функциям значения, да и код ошибки не мешало бы, сильно упрощает отлавливание ошибок в логике кода, не надо лениться. Компилятор ловит только грубые ошибки в синтаксисе, а логику работы программы не проверит никто, кроме программиста.
Ну так сделайте нормальный цикл закрытия, как положено, с выбором по очереди ордеров из рынка по признакам, закрыть по тикету выбранного ордера, а не по какому-то массиву, который вообще непонятно зачем тут. Зачем вообще нужен лишний цикл с набиванием в массив тикетов, когда всё проще намного делается - одна функция, в которой закрываете все рыночные отдера на данном символе, один цикл вместо трёх.
Принт значений, передаваемых торговым функциям и принтом ошибки, что вы так и не сделали. Это сильно помогает в отлове вот таких багов с логикой.
Что по закрытию, так и правильно не закрывает, всё как в коде, там закрытие уже существующих ордеров вбито не по новому бару, а по условиям открытия нового ордера.
И не закрываются они, скорее всего, из-за несоответствия тикета из массива с тикетом реального ордера. OrderSelect, на минуточку, типа bool, а не int и проверяется немного не так, поройтесь в справке, посмотрите примеры, там есть много чего.
Ну так сделайте нормальный цикл закрытия, как положено, с выбором по очереди ордеров из рынка по признакам, закрыть по тикету выбранного ордера, а не по какому-то массиву, который вообще непонятно зачем тут. Зачем вообще нужен лишний цикл с набиванием в массив тикетов, когда всё проще намного делается - одна функция, в которой закрываете все рыночные отдера на данном символе, один цикл вместо трёх.
Принт значений, передаваемых торговым функциям и принтом ошибки, что вы так и не сделали. Это сильно помогает в отлове вот таких багов с логикой.
Что по закрытию, так и правильно не закрывает, всё как в коде, там закрытие уже существующих ордеров вбито не по новому бару, а по условиям открытия нового ордера.
И не закрываются они, скорее всего, из-за несоответствия тикета из массива с тикетом реального ордера. OrderSelect, на минуточку, типа bool, а не int и проверяется немного не так, поройтесь в справке, посмотрите примеры, там есть много чего.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования