Спрашивайте! - страница 29

 
Yannis:
Дэйв,

Попробуйте изменить ваш код на следующий фрагмент и сообщите мне, помогло ли это.

Яннис

int i=0;

for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && ( OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && ( OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

return(0);

}

}

У меня проблема с тем, что он постоянно модифицирует сделки в бэктестере снова и снова. Как мне заставить его модифицировать сделки один раз. Поскольку программа переходит в спящий режим, единственными сделками, которые должны быть изменены, являются все еще открытые сделки.

Пожалуйста, посмотрите приложенный .Gif результатов бэктеста. Я так близок к тому, чтобы сделать это правильно - пожалуйста, посоветуйте!!! Я использую эту модификацию тейк-профита и стоп-лосса в сочетании со спящим режимом. Пожалуйста, смотрите код ниже

int start()

{

if (UseHourTrade)

{

int a=0;

int b=0;

int c=0;

if(!(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1;

if(!(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2)) b=1;

if(!(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3)) c=1;

if(a==1 && b==1 && c==1)

{

Comment(

"\n"," * АДВИЗОР ЭКСПЕРТА СОЛНЕЧНОГО ВЕТРА *",

"\n",

"\n", " - ПРОГРАММА В СОННОМ ЦИКЛЕ - ",

"\n",

"\n", "> НЕ ТРАДИЦИОННЫЕ ЧАСЫ! <");

/////////////////// МОДИФИЦИРУЙТЕ СТОП-ЛОСС И ТЕЙК-ПРОФИТ В НАЧАЛЕ ЦИКЛА СНА /////////////////

int h=0;

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(h, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

return(0);

}

}

Дэйв <<<

ПОЖАЛУЙСТА, ПОСМОТРИТЕ НА ПРИКРЕПЛЕННУЮ МИНИАТЮРУ!

 

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

сделать подсчет одинаковым числом

 

Не понимаю. Как мне исправить эту ошибку??? Возможно, я действительно вижу - Позвольте мне изменить cnt1 на h. Я прав?

Дэйв

<<

 
phoenix:
Ваш OrderSelect() не подсчитывает базу на основе запущенного цикла

int start()

{

if (UseHourTrade)

{

int a=0;

int b=0;

int c=0;

if(!(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1;

if(!(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2)) b=1;

if(!(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3)) c=1;

if(a==1 && b==1 && c==1)

{

Comment(

"\n"," * АДВИЗОР ЭКСПЕРТА СОЛНЕЧНОГО ВЕТРА *",

"\n",

"\n", " - ПРОГРАММА В СОННОМ ЦИКЛЕ - ",

"\n",

"\n", "> НЕ ТРАДИЦИОННЫЕ ЧАСЫ! <");

/////////////////// МОДИФИЦИРУЙТЕ СТОП-ЛОСС И ТЕЙК-ПРОФИТ В НАЧАЛЕ ЦИКЛА СНА /////////////////

//int h=0;

for (int h=OrdersTotal()-1;h>=0;h--)

OrderSelect(h, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

return(0);

}

}

///////////////////////////////////////////////////////////////////////////////////////

Сделал изменения, но все равно получаю постоянный цикл модификаций против однократного изменения.

Пожалуйста, посоветуйте еще раз, пожалуйста!

Дэйв

<<<

 

Пожалуйста, публикуйте свой код в кодах [PHP][/PHP]. Гораздо легче читать и отлаживать отформатированный код.

 

Вкладка ввода индикатора

Как и где закодировать индикатор так, чтобы вкладка ввода больше не отображалась, когда он прикреплен к графику?

Спасибо,

solaris

 
iscuba11:
int start()

{

if (UseHourTrade)

{

int a=0;

int b=0;

int c=0;

if(!(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1;

if(!(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2)) b=1;

if(!(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3)) c=1;

if(a==1 && b==1 && c==1)

{

Comment(

"\n"," * ЭКСПЕРТНЫЙ АДВИЗОР ПО СОЛНЕЧНОМУ ВЕТРУ *",

"\n",

"\n", " - ПРОГРАММА В СОННОМ ЦИКЛЕ - ",

"\n",

"\n", "> НЕ ТРАДИЦИОННЫЕ ЧАСЫ! <");

/////////////////// МОДИФИЦИРУЙТЕ СТОП-ЛОСС И ТЕЙК-ПРОФИТ В НАЧАЛЕ ЦИКЛА СНА /////////////////

//int h=0;

for (int h=OrdersTotal()-1;h>=0;h--)

OrderSelect(h, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{if( OrderStopLoss() > Ask + Point * 15 || OrderStopLoss() == 0 )

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

if( OrderStopLoss() < Bid - Point * 15 )

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Модифицируем стоп-лосс и тейк-профит

return(0);

}

return(0);

}

}

///////////////////////////////////////////////////////////////////////////////////////

Сделал изменения, но все равно получаю постоянный цикл модификаций по сравнению с однократным изменением.

Пожалуйста, посоветуйте еще раз, пожалуйста!

Дэйв

<<<

попробуйте добавить фиолетовую строку ... может помочь

 
solaris:
Как и где закодировать индикатор, чтобы при его подключении к графику больше не отображалась вкладка Input?

Спасибо,

solaris

почему бы не попробовать сохранить его как шаблон... тогда не нужно будет снова настраивать параметры, когда вы будете вызывать все свои индикаторы на новом графике.

 

Я сделал так, как вы посоветовали! (Я ценю ваше терпение)

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

** Но я все еще получаю массивные модификации цикла на одной сделке, как и раньше!

Очевидно, в моей логике есть цикл внутри цикла!

Дэйв

<<

Пожалуйста, посмотрите последние результаты бэктестов. Извините за логотип.htm - не могу от него избавиться.

 
iscuba11:
Я сделал так, как вы посоветовали! (Я ценю ваше терпение)

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

** Но я все еще получаю массивные модификации цикла на одной сделке, как и раньше!

Очевидно, у меня в логике есть цикл внутри цикла!

Дэйв

<<
Пожалуйста, посмотрите последние результаты бэктеста. Извините за логотип.htm - не могу от него избавиться.

Вы уже пробовали добавить фиолетовый выше?

theif( OrderStopLoss() > Ask + Point * 15 || OrderStopLoss() == 0 )

и if( OrderStopLoss() < Bid - Point * 15 )

Причина обращения: