Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 40

 
trader781:

Поправлю

 ее по-другому вообще никуда не засунуть, будет wrong parameters

 Должна учитывать самый последний

я попробую поменять

Насчет последней, ну да) я пробовал обойтись стандартной OrderModify()  но счет банят если кучу ордеров одновременно и постоянно двигать

Спасибо за критику. 

Объявите её БЕЗ АРГУМЕНТА, неужели так сложно? 

int Counts()
{код функции}

И вызывайте тоже пустой, да елзу оттуда за фигурные скобки выведите:

if(Counts()==0){че там нужно когда нет ордеров}
else {когда есть ордера}

 А щас у вас так:

if(Counts()==0){че там нужно когда else {когда есть ордера} нет ордеров}
 
Alekseu Fedotov:

Пробуй ^_~



 

Не работает ..КАк не было так и нет сделок ..
 
Movlat Baghiyev:
Не работает ..КАк не было так и нет сделок ..

А отложки хоть выставляет, нет, какие ошибки

...Исправил 

Файлы:
0.mq4  8 kb
 
Допилил аргументы. терминал виснет наглухо.
Файлы:
count.mq4  19 kb
 
trader781:
Допилил аргументы. терминал виснет наглухо.

 Значит какой-то цикл бесконечно молотит.

Припишите в начало кода #property strict и исправляйте, куча предупреждений. 

Вполне возможно деление на 0 в последней функции.

После else выполнится только первая строчка, блок фигурных скобок остался сиротой.

Вообще, сначала логику на бумаге словами распишите, а то шатается.  

 
Vitalie Postolache:


Подразумевалось что выполнит команду с плавающим знаком после запятой в зависимости от десятичнх знаков на графике 

NormalizeDouble(Ask+TakeProfit*Point(),Digits)

а как ты увидел что какие то строки не выполняются? 

 
trader781:

Подразумевалось что выполнит команду с плавающим знаком после запятой в зависимости от десятичнх знаков на графике 

NormalizeDouble(Ask+TakeProfit*Point(),Digits)

а как ты увидел что какие то строки не выполняются? 

Нда. С логикой бооольшие проблемы. И что останется от результата, если его записать в целочисленную переменную? Какой смысл в этом коде?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

Вот тут разве так сложно понять, что часть кода - сирота и будет выполняться независимо от условия?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код-сирота
}
 
Vitalie Postolache:

Нда. С логикой бооольшие проблемы. И что останется от результата, если его записать в целочисленную переменную? Какой смысл в этом коде?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

Вот тут разве так сложно понять, что часть кода - сирота и не будет выполняться?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код, который никуда не идёт, сирота
}

Стоп

если ордера есть

находится тип ордера

{

то тогда выполняются операции для этого типа ордера 

 

не? 

Не могу понять откуда zero divide
 
trader781:

Стоп

если ордера есть

находится тип ордера

{

то тогда выполняются операции для этого типа ордера 

не? 

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

 

Добавлено: zero divide - это деление на ноль, и вам в журнале пишет в какой строке

 
trader781:

Стоп

если ордера есть

находится тип ордера

{

то тогда выполняются операции для этого типа ордера 

 не?

Выше поправил. То, что после else - выполняется в зависимости от условия. Блок фигурных скобок идёт отдельно, так что он уже к else не имеет отношения. 

Не могу понять откуда zero divide

Вот откуда

void ModifyOrders() //+------------модификация ввод тип
  {
   double avg_price; //+------------средняя цена
   price=0;//+------------цена
   bool z;//+------------выход в переменную
   double orderlots=0; //+------------лоты

   avg_price=NormalizeDouble(price/orderlots,Digits);//+------------то средняя ценаравна цена деленная на лот
@Vitaly Muzichenko Где тут "неверно интерпретировал"? Думалку включаем.
Причина обращения: