Вот советник
Прицепил трал к советнику .Ошибок нет,но опять же 2008.07.29 17:38:46 2008.07.29 13:00 zacono GBPUSD,H1: Трейлинг функцией KillLoss() невозможен из-за некорректности значений переданных ей аргументов.
Я могу ошибаться, пусть поправят если что, но здесь что-то не то:
int start(){
{
KillLoss(iTicket,dSpeedCoeff);
return(0);
}
на этот return нет условия, значит программа на этом и закончится.
iTicket Вы вводите судя по всему вручную, может ошибка при вводе?
Я могу ошибаться, пусть поправят если что, но здесь что-то не то:
int start(){
{
KillLoss(iTicket,dSpeedCoeff);
return(0);
}
на этот return нет условия, значит программа на этом и закончится.
iTicket Вы вводите судя по всему вручную, может ошибка при вводе?
Пробовал и без ретурна ничегоне выходит.
Попробуйте.
Чтобы понять в чем ошибка, нужно сначала понять чего Вы хотите. Был вопрос: откуда берется iTicket? Т.е. какие ордера Вы тралите? Которые выставлены вручную или которые выставляет советник? или все? или никакие, как вышло в советнике?
Судя по всему, Вы хотите тралить ордера советника...Но при этом в OrderSend() у Вас вместо Магика стоит загадочное NULL? а как советник будет находить свои ордера? Должно быть что-то типа этого:
int total = OrdersTotal();
for ( pos1 = 0; pos1<total; pos1++ )
{
if (OrderSelect(pos1, SELECT_BY_POS, MODE_TRADES) == true&&OrderMagicNumber()==Magic)
{
KillLoss(OrderTicket(),dSpeedCoeff);
}
}
extern int dow=1; extern int dow1=1; extern int side=0; extern int iTicket; // уникальный номер (тикет) открытой позиции extern double dSpeedCoeff = 1; // коэффициент усиления, определяющий, как быстро движется стоплосс навстречу курсу в зоне лоссов
Вы посмотрите, что Вы передаете в функцию!?
Вы ничего туда не передаете. Точнее передаете
iTicket
равным нулю.
Номер тикета присваивается сервером, а не определяется пользователем при старте. Поэтому extern там абсолютно ни в какое отверстие.
Чтобы понять в чем ошибка, нужно сначала понять чего Вы хотите. Был вопрос: откуда берется iTicket? Т.е. какие ордера Вы тралите? Которые выставлены вручную или которые выставляет советник? или все? или никакие, как вышло в советнике?
Судя по всему, Вы хотите тралить ордера советника...Но при этом в OrderSend() у Вас вместо Магика стоит загадочное NULL? а как советник будет находить свои ордера? Должно быть что-то типа этого:
int total = OrdersTotal();
for ( pos1 = 0; pos1<total; pos1++ )
{
if (OrderSelect(pos1, SELECT_BY_POS, MODE_TRADES) == true&&OrderMagicNumber()==Magic)
{
KillLoss(OrderTicket(),dSpeedCoeff);
}
}
Я провожу бэктес .По бэктесту должен тралить те ордера которыее открыты.
Вариант тот что вы говорите .Буду сним согласен если начнем торговать и при этом есть сделки другого советника либо открытые вручную.
Этот трал я брал
|
Вы туда добавили функцию KillLoss (...), взятую из CodeBase, я так понимаю. Он то проверен и правильно работает.
Но тело
int Start {
.........}
написано, очевидно, Вами. И все ошибки находятся именно там. Косяки все с Вашей стороны, касательно тела самого эксперта.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добавил этот трал в код,ошибок не выдает ноне работает
2008.07.29 16:20:01 2008.07.29 13:59 01funt GBPUSD,H1: Трейлинг функцией TrailingByTime() невозможен из-за некорректности значений переданных ей аргументов.
В чем причина?