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

 
Maxim Kuznetsov #:
скорее всего или ордер не отрывается или при чтении вы берёте иной (старый). тем более что читаете из истории - просто промахнулись

Ни одно из Ваших "или" не подтвердилось. В блоке открытия ордеров я убрал цикл for   и открыл 1 один единственный ордер. Когда этот ордер закрылся по Тейк профиту Print() вывела точно такое же значение параметра  Coment()  открытого и закрытого ордера. Если бы ордер не открылся, то он и не закрылся бы.  

if (Bid-mx1>0.0001&&mx1>0)//                                                                                                         
{
mx1=2000;                 
int w=1;
k1=IntegerToString(w,1);
TkT=OrderSend(Symbol(),OP_BUY,0.1,Ask, 3,Bid-0.0016,Bid+0.0008,k1,Tk1);
} 
 --k2---------  k2  1[tp]
 
ANDREY #:

Ни одно из Ваших "или" не подтвердилось. В блоке открытия ордеров я убрал цикл for   и открыл 1 один единственный ордер. Когда этот ордер закрылся по Тейк профиту Print() вывела точно такое же значение параметра  Coment()  открытого и закрытого ордера. Если бы ордер не открылся, то он и не закрылся бы.  

Ваш код тут никак не повлияет, при закрытии по ТП или СЛ в комментарий добавляется причина закрытия [tp] [sl]
 
Tretyakov Rostyslav #:
при закрытии по ТП или СЛ в комментарий добавляется причина закрытия [tp] [sl]
Думается, это брокерозависимо.
 
Tretyakov Rostyslav #:
Ваш код тут никак не повлияет, при закрытии по ТП или СЛ в комментарий добавляется причина закрытия [tp] [sl]

Cпасибо. Теперь все ясно и понятно. Остался единственный вопрос, который не дает мне покоя. Почему в Справочнике при описании функции OrderSend() в примере этой функции параметр Coment() взят в кавычки. А по факту, для решения моей проблемы эти кавычки нужно убрать. Ведь если я убрал кавычки, значит в этот параметр легло значение не строкового типа. И компилятор не выдал ошибку, не смотря на то что функция   OrderComment() выводит значение строкового типа.

 

И еще я заметил забавную особенность... Если параметр  Coment() при открытии ордера ввести символы без кавычек, то компилятор выдаст ошибку. А если ввести цифры без кавычек, то компилятор ошибки не выдаст. Получается что параметр  Coment() по факту принимает  не только строковые типы данных ?????
И если в параметр  Coment() ввести символы с кавычками, то  Print() напечатает только эти символы без [tp]или [sl]. Странный и неоднозначный  этот  параметр  Coment().....


 
 
ANDREY #:

Cпасибо. Теперь все ясно и понятно. Остался единственный вопрос, который не дает мне покоя. Почему в Справочнике при описании функции OrderSend() в примере этой функции параметр Coment() взят в кавычки. А по факту, для решения моей проблемы эти кавычки нужно убрать. Ведь если я убрал кавычки, значит в этот параметр легло значение не строкового типа. И компилятор не выдал ошибку, не смотря на то что функция   OrderComment() выводит значение строкового типа.

 

И еще я заметил забавную особенность... Если параметр  Coment() при открытии ордера ввести символы без кавычек, то компилятор выдаст ошибку. А если ввести цифры без кавычек, то компилятор ошибки не выдаст. Получается что параметр  Coment() по факту принимает  не только строковые типы данных ?????
И если в параметр  Coment() ввести символы с кавычками, то  Print() напечатает только эти символы без [tp]или [sl]. Странный и неоднозначный  этот  параметр  Coment().....


 

Вам надо разобраться что такое string.

Если Вы вводите числа, то их преобразуют в текст, но лучше использовать DoubleToString или IntegerToString.

Если Вы вводите символы, то их надо выделять ковычками, в противном случае компилятор ищет переменную согласно введенных символов.

[tp] или [sl] добавляются после закрытия ордера по ТР или SL

 
Tretyakov Rostyslav #:
Если Вы вводите числа, то их преобразуют в текст, но лучше использовать DoubleToString или IntegerToString.

Я это прекрасно понимаю, что если я ввожу в параметр Coment набор цифр(число) , то программа без моего участия преобразует этот набор цифр из числа в строку. Я не понимаю одного .... если набор цифр стал строкой, то почему эта строка не обрамляется кавычками в параметре Coment  . Ведь цифры превратились в символы. А набор символов - это строчный тип данных , который обрамляется кавычками.  

 
ANDREY #:
то почему эта строка не обрамляется кавычками в параметре Coment
Зачем ее обрамлять? Кавычки ставите только Вы, если хотите обозначить какой либо набор символов как текст.
ANDREY #:
Ведь цифры превратились в символы. А набор символов - это строчный тип данных
Любое число - это всегда значение, а набор символов может быть текстом, а может быть переменной.
 
Tretyakov Rostyslav #:
Зачем ее обрамлять? Кавычки ставите только Вы, если хотите обозначить какой либо набор символов как текст. Любое число - это всегда значение, а набор символов может быть текстом, а может быть переменной.

Спасибо. Тогда объясните мне вот что... Внизу несколько вариантов параметра Coment  функции OrderSend, по поводу  которых компилятор не выдает ошибок. Какой тип данных лежит в каждом варианте этого параметра?
1.   OrderSend(,,,,,," авсd " ,);

2.   OrderSend(,,,,,,  авсd ,);

3.   OrderSend(,,,,,,  " 1234 " ,);

4.   OrderSend(,,,,,,  1234 ,);

 
ANDREY #:

Спасибо. Тогда объясните мне вот что... Внизу несколько вариантов параметра Coment  функции OrderSend, по поводу  которых компилятор не выдает ошибок.
1.   OrderSend(,,,,,," авсd " ,);

2.   OrderSend(,,,,,,  авсd ,);

3.   OrderSend(,,,,,,  " 1234 " ,);

4.   OrderSend(,,,,,,  1234 ,);

Во втором варианте должна быть ошибка.

ANDREY #:
Какой тип данных лежит в каждом варианте этого параметра?

Там, где ковычки, Вы сразу дали определение что это string

Число преобразуется в string

Второй вариант - ошибка.

'abcd' - undeclared identifier
 
Tretyakov Rostyslav #:
Число преобразуется в string

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

3.   OrderSend(,,,,,,  " 1234 " ,);

4.   OrderSend(,,,,,,  1234 ,);

В варианте 3 число преобразованное в строку закавычено , как и положено .... тип   string всегда обрамляется кавычками.
ВОПРОС
В варианте 4 число так же преобразовано в строку и стало типом  string , но в этом варианте кавычки отсутствуют. Почему программа преобразовала число в тип   string без кавычек? Ведь без кавычек тип  string не может и не должен возникнуть. Для набора символов без кавычек компилятор выдал ошибку. А для набора цифр, преобразованных в строку  без кавычек, компилятор почему то ошибки не выдает...
Напрашиваются 2 вывода
1. В варианте 4 в параметре Coment лежит тип данных НЕ  string
2. Тип  string не всегда обрамляется кавычками