В чем заключается не корректность?

 

Добавил этот трал в код,ошибок не выдает ноне работает

2008.07.29 16:20:01 2008.07.29 13:59 01funt GBPUSD,H1: Трейлинг функцией TrailingByTime() невозможен из-за некорректности значений переданных ей аргументов.
В чем причина?

Файлы:
 

Вот советник

Прицепил трал к советнику .Ошибок нет,но опять же 2008.07.29 17:38:46 2008.07.29 13:00 zacono GBPUSD,H1: Трейлинг функцией KillLoss() невозможен из-за некорректности значений переданных ей аргументов.

Файлы:
zacono.mq4  5 kb
 

Я могу ошибаться, пусть поправят если что, но здесь что-то не то:

int start(){
{
KillLoss(iTicket,dSpeedCoeff);
return(0);
}
на этот return нет условия, значит программа на этом и закончится.

iTicket Вы вводите судя по всему вручную, может  ошибка при вводе?

 
Kharin писал (а) >>

Я могу ошибаться, пусть поправят если что, но здесь что-то не то:

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 там абсолютно ни в какое отверстие.

 
Kharin писал (а) >>

Чтобы понять в чем ошибка, нужно сначала понять чего Вы хотите. Был вопрос: откуда берется 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);

}

}

Я провожу бэктес .По бэктесту должен тралить те ордера которыее открыты.

Вариант тот что вы говорите .Буду сним согласен если начнем торговать и при этом есть сделки другого советника либо открытые вручную.

Этот трал я брал

Code Base https://www.mql5.com/ru/code/7108

 
D500_Rised писал (а) >>

Вы посмотрите, что Вы передаете в функцию!?

Вы ничего туда не передаете. Точнее передаете

равным нулю.

Номер тикета присваивается сервером, а не определяется пользователем при старте. Поэтому extern там абсолютно ни в какое отверстие.

Я об этом думал .

 
azfaraon писал (а) >>

Я об этом думал .

Не видно . Или не тем.

И еще подумайте над вот этой строкой:

if (OrdersTotal()&&OrderSelect(0,SELECT_BY_POS,MODE_TRADES)&&DayOfWeek()!=dow1)
 
D500_Rised писал (а) >>

Не видно . Или не тем.

И еще подумайте над вот этой строкой:

С большим уважением отношусь к любому мнению,но это не я писал. Я взял все это в базе.Сколько я понимаю туда попадают проверенные коды .

 

Вы туда добавили функцию KillLoss (...), взятую из CodeBase, я так понимаю. Он то проверен и правильно работает.

Но тело

int Start {

.........}

написано, очевидно, Вами. И все ошибки находятся именно там. Косяки все с Вашей стороны, касательно тела самого эксперта.