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

 
очень интересная тема, попробуем написать такую последовательность:
string a = "123456";
string b = "234567";
if(a==b) {Print("==");}else{Print("!=");}
Терминал исправно печатает !=

А теперь Создадим ордер, и в коммент впишем например "123.6" . И напишем такую :

int total=OrdersTotal(); 
//----
for(int i=0;i<=total;i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
string ordcomm = OrderComment(); 
if(ordcomm == "223.6"){Print("Ордер №",OrderTicket()," Есть OrderComment()",OrderComment());}
if(ordcomm != "223.6"){Print("Ордер №",OrderTicket()," Нет OrderComment()",OrderComment());}
}
Получаем:
2008.04.02 22:59:15 Comment GBPCHF,M5,Ордер № 7083970 Есть OrderComment() OrderComment()-123.6
Может мне кто нибудь обьяснит, чего я не понимаю?
 
Попробовал, код работает правильно.
 

Всмсле правильно? правильно "Да", или правильно "Нет" ???

 

Сделал так как у тебя, выдаёт как и положено: "Нет OrderComment()". Наверно у тебя какой-то сбой с терминалом, попробуй переустанови.

И кстати ещё ошибочку исправь в цикле: i<total (но проблема конечно не из-за этого)

 
Скорее всего что терминалом, а какая версия у тебя стоит? У меня 215
 
xrust:
Скорее всего что терминалом, а какая версия у тебя стоит? У меня 215
тоже 215
 

Проверил. Код работает правильно, т.е. так, как написан, так и работает.

1. Рекомендую вместо Print указать Alert. Тогда на каждом тике будете прямо на экран получать вывод инфо.

2. В заголовке оператора цикла вместо i<=total указать i<total или i<=total-1

3. Строки сравниваются правильно и вылавливаются правильно. Наверное, Вы не туда помотрели. Иначе объяснить не могу. Или были ещё ордера с другим MN.
 

Дело в том что я через OrderComment() указиваю на каком уровне Фибо были установленны ордера . Для последующей их фильтрации, так,как с комментом творится что то не ладное, я решил перейти на меджик, который я пока решил не трогать, так вот такая последовательность:

for(i=total;i>=0;i--)
{
OrderSelect(i-1, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
int tickdel=OrderTicket();
if ((OrderType()==OP_BUYSTOP)||(OrderType()==OP_SELLSTOP))
if(magic != -123)//если это не наши уже ранее уст.ордера то мы их удаляем 
if(magic != 123)
{ 
Print(tickdel," ",total," ",i," ",magic);
del(tickdel);// то мы их удаляем
}
}
напрочь сносит уже установленные ордера, если вместо " != " поставить " == " то нетрогает . шас переставлю терминал посмотрим
 
xrust:
напрочь сносит уже установленные ордера, если вместо " != " поставить " == " то нетрогает . шас переставлю терминал посмотрим

То что сносит ордера - это и не удивительно :) Чему у тебя равно значение переменной magic?
 

Та же самая история

{// если есть установленные отложенники
for(i=total;i>=0;i--)
{
OrderSelect(i-1, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
int tickdel=OrderTicket();
if ((OrderType()==OP_BUYSTOP)||(OrderType()==OP_SELLSTOP))
if(magic != -123)//если это не наши уже ранее уст.ордера то мы их удаляем 
if(magic != 123)
{ 
Print(tickdel," ",total," ",i," ",magic);
del(tickdel);// то мы их удаляем
}
}
}

Приводит к вот этому

00:36:26 FiboZigZagIsx01_04 GBPUSD,M5: 7084681 2 2 0
00:36:26 FiboZigZagIsx01_04 GBPUSD,M5: 7084681
00:36:33 FiboZigZagIsx01_04 GBPUSD,M5: delete #7084681 sell stop 0.10 GBPUSD at 1.9858 sl: 1.9874 tp: 0.0000 ok
00:36:33 FiboZigZagIsx01_04 GBPUSD,M5: 7084680 2 1 0
00:36:33 FiboZigZagIsx01_04 GBPUSD,M5: 7084680
00:36:33 FiboZigZagIsx01_04 GBPUSD,M5: delete #7084680 buy stop 0.10 GBPUSD at 1.9906 sl: 1.9890 tp: 0.0000 ok
"Меняем проигрыш на выигрыш"
{
OrderSelect(i-1, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol())
int tickdel=OrderTicket();
if ((OrderType()==OP_BUYSTOP)||(OrderType()==OP_SELLSTOP))
if(magic == -123)//если это не наши уже ранее уст.ордера то мы их удаляем 
if(magic == 123)
{ 
Print(tickdel," ",total," ",i," ",magic);
del(tickdel);// то мы их удаляем
}
}
}
И... получаем ( блин все замерло, ни одного тика...)
00:45:08 FiboZigZagIsx01_04 GBPUSD,M5: loaded successfully
00:45:08 FiboZigZagIsx01_04 GBPUSD,M5 inputs: ExtDepth=21; ExtDeviation=13; ExtBackstep=34; slkoff=1; tpkoff=1; dCoeff=2; dk=2; lots=0.1; tral=true; bTrlinloss=true; Tprofit=false; coment=true; pips=true; sound=true; delay=0; 
00:45:08 FiboZigZagIsx01_04 GBPUSD,M5: initialized
Вот это и никто никого не трогает, но ведь должно быть наооборот!!!???
 
магик в данном случае должен быть 123 или -123
Причина обращения: