[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 804

 
Maniac:


Вот код советника. Нужно чтобы:

1) он открывал не одну, а сразу три сделки со стопами 25 и тейками 15, 35, 50

2) после закрытия второго ордера по тейку (35) последняя позиция (с тейком 50) переводилась в безубыток

Вы используете функции Игоря Кима... Неужели среди всего многообразия уже готовых функций,
которые он предоставил во всеобщее пользование Вы не нашли способов решения вашей "проблемы" ?
Поверьте - они там есть и даже предостаточно...
Для начала обучения - самый раз...
А ещё - почитайте этот раздел учебника СК - там хорошо описано как структуировать ваш код и разбить его на логически оформленные блоки кода,
каждый из которых выполняет свою функцию в составе советника...
А то всё в кучу свалили... :)
ИМХО конечно... :)
 
Очень, блин, интересно девки пляшут... <:-О ...
Есть поза Бай с тикетом 88. Есть отложенный ордер SellStop с тикетом 89
При преобразовании отложенного SellStop в рыночный, тикет рыночного Sell становится тоже 89,
А ВОТ ТИКЕТ ПОЗИЦИИ BUY (88) ПОПАДАЕТ В ИСТОРИЮ!!! Как такое может быть - ведь он же не закрыт и находится в рынке !!!???!!!???!!!???
Т.е. при проверке:
if (OrderSelect(CurTicB,SELECT_BY_TICKET,MODE_HISTORY)) // CurTicB равен тикету позы, т.е. 88
   {
      if (OrderType()==OP_BUY)
          {
              Print("Поза Buy с тикетом ",CurTicB," отошла, блин в мир иной, сволочь!!!",", и типчик у неё = ",OrderType());
              SaveCurB = false;   
          }
      else if (OrderType()==OP_BUYSTOP) Print("Поза Buy с тикетом ",CurTicB," отошла, блин в мир иной, сволочь!!!",", а типчик у неё = ",OrderType());
   }

... мне в журнале пишется:

2010.08.15 09:38:52 2009.01.09 19:36 Sergitas_v1.02 EURUSD,M5: Поза Buy с тикетом 88 отошла, блин в мир иной, сволочь!!!, и типчик у неё = 0

А она в это время прекрасно себя в рынке ощущает... !!!!!!!!!!! ?????????
Кто-нить может меня во что-нить носом ткнуть, чтобы я увидел где собака порылась... и как с этим бороться... Третьи сутки уже она меня выводит из себя...

( От того и выражения у меня в журнале тестера покрепче будут, нежели те, что я тут подкорректировал... :)) )

Спасибо...

 
artmedia70:
Очень, блин, интересно девки пляшут... <:-О ...
Есть поза Бай с тикетом 88. Есть отложенный ордер SellStop с тикетом 89
При преобразовании отложенного SellStop в рыночный, тикет рыночного Sell становится тоже 89,
А ВОТ ТИКЕТ ПОЗИЦИИ BUY (88) ПОПАДАЕТ В ИСТОРИЮ!!! Как такое может быть - ведь он же не закрыт и находится в рынке !!!???!!!???!!!???
Т.е. при проверке:

... мне в журнале пишется:

2010.08.15 09:38:52 2009.01.09 19:36 Sergitas_v1.02 EURUSD,M5: Поза Buy с тикетом 88 отошла, блин в мир иной, сволочь!!!, и типчик у неё = 0

А она в это время прекрасно себя в рынке ощущает... !!!!!!!!!!! ?????????
Кто-нить может меня во что-нить носом ткнуть, чтобы я увидел где собака порылась... и как с этим бороться... Третьи сутки уже она меня выводит из себя...

( От того и выражения у меня в журнале тестера покрепче будут, нежели те, что я тут подкорректировал... :)) )

Спасибо...


Тестор безупречен!

Как и весь код и юсабилити MetaQuotes Software Corp ...

Иначе бан.

Криворукость ищите в МикроПрограммах и у себя!

;)

 

Чё-то я в Барабашек уже начинаю верить...

Позиция Buy закрылась ни с того ни с сего на уровне ТейкПрофит уже закрытой позы Sell:


Ведь стопа-то НЕТУ у позиции Buy, а она бац!... и закрылась и так
интересненько - прямо на уровне тейка уже закрытой позы Sell ...

Похоже... у меня в квартире нежить появилась... или спать больше нуно... :)

Кто-нить сталкивался с таким безобразием?

Спасибо...

 
FreeLance:

Тестор безупречен!

Как и весь код и юсабилити MetaQuotes Software Corp ...

Иначе бан.

Криворукость ищите в МикроПрограммах и у себя!

;)

Содержательнейший ответ... Низкий поклон... Кланяюсь и кривыми руками горшки с полок роняю... Осколками не забрызгало??? ;)
 
artmedia70:
Содержательнейший ответ... Низкий поклон... Кланяюсь и кривыми руками горшки с полок роняю... Осколками не забрызгало??? ;)

нет конечно - Божья роса! $)

а ведь вы только в начале пути...

;)

 
artmedia70:
Очень, блин, интересно девки пляшут... <:-О ...
Есть поза Бай с тикетом 88. Есть отложенный ордер SellStop с тикетом 89
При преобразовании отложенного SellStop в рыночный, тикет рыночного Sell становится тоже 89,
А ВОТ ТИКЕТ ПОЗИЦИИ BUY (88) ПОПАДАЕТ В ИСТОРИЮ!!! Как такое может быть - ведь он же не закрыт и находится в рынке !!!???!!!???!!!???
Т.е. при проверке:

... мне в журнале пишется:

2010.08.15 09:38:52 2009.01.09 19:36 Sergitas_v1.02 EURUSD,M5: Поза Buy с тикетом 88 отошла, блин в мир иной, сволочь!!!, и типчик у неё = 0

А она в это время прекрасно себя в рынке ощущает... !!!!!!!!!!! ?????????
Кто-нить может меня во что-нить носом ткнуть, чтобы я увидел где собака порылась... и как с этим бороться... Третьи сутки уже она меня выводит из себя...

( От того и выражения у меня в журнале тестера покрепче будут, нежели те, что я тут подкорректировал... :)) )

Спасибо...

Могу Вам предложить внимательно прочитать описание функции OrderSelect().

Параметр pool игнорируется, если ордер выбирается по номеру тикета

 
artmedia70:

Чё-то я в Барабашек уже начинаю верить...

Позиция Buy закрылась ни с того ни с сего на уровне ТейкПрофит уже закрытой позы Sell:


Ведь стопа-то НЕТУ у позиции Buy, а она бац!... и закрылась и так
интересненько - прямо на уровне тейка уже закрытой позы Sell ...

Похоже... у меня в квартире нежить появилась... или спать больше нуно... :)

Кто-нить сталкивался с таким безобразием?

Спасибо...

Сложно сказать что у Вас там изображено. Лично я не вижу чтобы "Позиция Buy закрылась ни с того ни с сего на уровне ТейкПрофит уже закрытой позы Sell". Тот Sell, под которым стрелка нарисована, вроде как никаких пунктирчиков исходящих не содержит.

У Вас в коде OrderCloseBy() не используется?

 
double verhB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,1,0);//Вычисляем индикатор верх линия//
double seredina=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,0,0);//Вычисляем индикатор верх линия//
double nizB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,2,0);//Вычисляем индикатор нижн линия //
//---------------------------------------------------------------------------------------------------------------//
double slb,tpb,sls,tps; //Вводим переменные для стоп лоссов и тейк профита//
//Функция провепяет наличие ордеров// // //
// //
slb=NormalizeDouble(Ask - (Loss*Point),Digits) ; //расчёт стопа для бай позиций//
tpb=NormalizeDouble(Ask + (Profit*Point),Digits); //расчёт профита для бай позиций//////////
sls=NormalizeDouble(Bid + (Loss*Point),Digits) ; //расчёт стопа для селл позиций//
tps=NormalizeDouble(Bid - (Profit*Point),Digits);
if(OrdersTotal()==0)
{
if(((verhB-nizB)<=Delta)&&(Ask==seredina))

tick =OrderSend(Symbol(),4,Lots,NormalizeDouble(Ask+Raznica*Point,Digits),Slip,slb,tpb,NULL,MagicNumber,0,CLR_NONE); //Вход на бай//
if(tick<0) Print("Ошибка № - ",GetLastError());

tick2=OrderSend(Symbol(),5,Lots,NormalizeDouble(Bid-Raznica*Point,Digits),Slip,sls,tps,NULL,MagicNumber,0,CLR_NONE); //Вход сел //
if(tick2<0) Print("Ошибка № - ",GetLastError()); //пишет ошибку//
} // // // //
return(0);}



Скажите в чём ошибка открвает только сел .

Смысл советника в том что бы выставлять два отложенника при определённом расстоянии верхней и нижней линии болинжера

 

и какая ошибка ?

возможно, это происходит из-за того, что значение переменной Raznica близко с значению стоплевела

и/или разница Raznica - Profit (Raznica - Loss) также близки к значению стоплевела..

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

slb=NormalizeDouble(Bid - (Loss*Point),Digits) ; //расчёт стопа для бай позиций//
sls=NormalizeDouble(Ask + (Loss*Point),Digits) ; //расчёт стопа для селл позиций//

кроме того полученные значения стопов нужно проверять на не попадание в зону стоплевела/фризлевела

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