Сравнение строковых значений - страница 2

 
xrust:
"Меняем проигрыш на выигрыш"
if(magic == -123)//если это не наши уже ранее уст.ордера то мы их удаляем 
   if(magic == 123)
   { 
      Print(tickdel," ",total," ",i," ",magic);
      del(tickdel);// то мы их удаляем
   }

Интересное условие...

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

 

для определения магика там цикл.

Дело не в магике, то же самое было и с ордер комментом.как только я не задавал условие

if((magic != 123)&&(magic!= - 123)) {дествие ;}
if((magic != 123)||(magic!= - 123)) {дествие ;}
if(magic != 123) if(magic!= - 123)  {дествие ;}

результат был один - немедленный снос позиций. и только замена отрицания на подтверждение помогла. но ведь Это противоречит всякой логике?????

Так что мне делать оставить тк как есть, или...

и еще вопрос: коммент или магик? магик я хотелбы зарезервировать для другого, но прочитал то ДЦ может менять коммент или вписывать в него по воему усмотрению????

 

Дело в магике. Либо в другой ошибке кода, которого мы не видим.

Лучше использовать магик, коммент действительно меняется.

 
Спасибо за участие.
 
xrust:

для определения магика там цикл.

Дело не в магике

И где этот цикл? Я чё-то не вижу. Да и вообще какой ещё нафиг цикл?

magic=OrderMagicNumber() - вот и всё. Детский сад какой-то

 
Meat:
xrust:

для определения магика там цикл.

Дело не в магике

И где этот цикл? Я чё-то не вижу. Да и вообще какой ещё нафиг цикл?

magic=OrderMagicNumber() - вот и всё. Детский сад какой-то


ЦИКЛ!
total = OrdersTotal();
int ok = 0;// счетчик ордеров
bool op = false;// флаг наличия открытого ордера
for(i=0;i<total;i++)
{ //проверка на наличие сработавших ордеров
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
if ((OrderType()==OP_BUY)||(OrderType()==OP_SELL)){op=true;break;}//если есть сработавшие ордера то новых не ставим 
else{op=false;ok++;}
}
if(!op)//если нет открытых ордеров
if(ok>0)
{// если есть установленные отложенники
for(i=total;i>=0;i--)//Циклично перебираем ордера от макс. до нулевого 
{
OrderSelect(i-1, SELECT_BY_POS, MODE_TRADES);//Выбираем ордер по позиции из смиска отложенных или сработаших
if (OrderSymbol()==Symbol())// Если ордер нужной нам пары
int tickdel=OrderTicket();// Заносим тикет в пер. для поледующего удаления
magic = OrderMagicNumber();//Считиваем магик
if ((OrderType()==OP_BUYSTOP)||(OrderType()==OP_SELLSTOP))//Если ордер отложенный(мы работаем со стопами)
if(magic == -123)//А здесь if(magic != -123) Если маг.не(-123)
if(magic == 123)// должно if(magic != 123) Если маг.не( 123)
if(magic == 236)// быть if(magic != 236) Если маг.не( 236)
if(magic == 764)// так if(magic != 764) Если маг.не( 764)
{ 
Print("1.0");// МЕТКА ДЛЯ ТРАССЕРА!
del(tickdel);// то мы их удаляем
} // А ПОЛУЧАЕТСЯ НАОБОРОТ!
}
}
Для тех кто нас не понял...
 
xrust:
Для тех кто нас не понял...

Нда... Сначала думал подшутить про еще более гениальное условие, которое никогда не сработает, а потом посмотрел на скобочки.

"Дело - глина" (с)

 

Я конечно новичек в MQL но мелким программированием балуюсь давно, чесно говоря в последнее время я постоянно захожу в тупик, и бьюсь головой, об такие простые логичекие конструкции что никогда бы не подумал. надеюсь что MQL5 разрешит многие проблеммы, я терпеть не могу линейного программирования, такое впечатление что я опять сижу за "Спектрумом" в его бейсике :((

Надеюсь что скобочки я поставил правильно?

 
xrust:

Я конечно новичек в MQL но мелким программированием балуюсь давно, чесно говоря в последнее время я постоянно захожу в тупик, и бьюсь головой, об такие простые логичекие конструкции что никогда бы не подумал. надеюсь что MQL5 разрешит многие проблеммы

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