Как отключить звук? Довёл до белого коленья. Окон инструментоа много (33). Никаких советников нет. Одни средние и Zup. Откуда он поёт не могу понять. Умоляю, помогите. В сервисе, событиях был. Крестики на событиях не помогают. Всё поёт, гадина.
Techno: скворец может в индюке сидеть )))
Просмотрел код - нигде нет никаких алертов! Что делать?
Как сделать, чтобы можно было переменной, заданной на глобальном уровне по ходу исполнения программы присваивать разные значения при вызове разных функций и она их сохраняла?
Мне нужно для частичного закрытия позиции переменной Part, заданной на глобальном уровне, присваивать определённые значения и передавать их как параметр функции, которая выполняет частичное закрытие ордера. Эта переменная является простым делителем. Т.е., при изначально заданном ей значении 1, лот делится на 1 и закрывается вся позиция. При изменении условий торговли, эта переменная получает новые значения и может равняться, допустим 1.5, или 2, тогда лот позиции делится на это число и выполняется частичное закрытие. Вызов функции с передачей параметра выглядит дословно так:
// На глобальном уровнеdoublePart = 1; // на сколько разделить лот для частичного закрытия //..........void ClosePartPosBySelect(double Part) // Объявление функции// ... тру-ля-ля ... тело функции ...ll=NormalizeLot((OrderLots()/Part)); // рассчёт лота внутри функции// ... дальнейший код ф-ции ...//--------- Вызов функции частичного закрытия ---------// Происходит из тела этой функцииvoid TrailingPositionsTLE(int MAGIC, int CloseMethod, double Part, int LastTrailing)
// таким образом:if (CloseMethod==1)
ClosePartPosBySelect(Part);
Так вот, несмотря на то, что при вызове функции ...
TrailingPositionsTLE(561, 1, 2, 1);
... задаётся CloseMethod = 1 (частичное закрытие) и указывается явное значение Part = 2, в функцию передаётся не значение Part, заданное по ходу программы (например 2), а изначальное её значение = 1, заданное на глобальном уровне...
artmedia70: При изменении условий торговли, эта переменная получает новые значения и может равняться, допустим 1.5, или 2, тогда лот позиции делится на это число и выполняется частичное закрытие.
Ну, вот когда условия торговли изменятся, тогда и меняй свою переменную Part. Или они у тебя в другом советнике? тогда постоянно надо считывать эту переменную, т.е.
Ну, вот когда условия торговли изменятся, тогда и меняй свою переменную Part. Или они у тебя в другом советнике? тогда постоянно надо считывать эту переменную, т.е.
int init()
{
.....
GlobalVariableSet("Part0",Part);
.....
}
int start()
{
...
Part=StrToInteger(GlobalVariableGet("Part0"));
...
}
Нет, переменная в этом же советнике. Она задана на глобальном уровне и функции могут её использовать, но её значение, изменённое внутри функций во внешние не возвращается. Посему функции и видят её значение заданным изначально. Если же я её задаю не на глобальном уровне, то функции матюкаются на незаданную переменную...
При передаче переменной в функцию, через её параметр, переменная передается по значению, это значит изменения переменной в самой функции не приведет к ее перезаписи. Попробуй передать по ссылке, для этого вставь перед именем параметра символ «&»
void simple(string &s){
// ^// спец сим. & перед именем переменной задает передачу по ссылке, а не по значению//
}
artmedia70: Как сделать, чтобы можно было переменной, заданной на глобальном уровне по ходу исполнения программы присваивать разные значения при вызове разных функций и она их сохраняла?
два пути
1. в функции, где производится изменение значения добавить амперсант,
например void функция( double& Part ){}
тогда, при изменении значения внутри функции новое значение будет возвращаться в место вызова
2. убрать переменную из списка параметров функции, т.к. переменная задана глобально, то ее значение можно изменять в любом месте кода не передавая ее в качестве параметра..
но чтобы не запутаться лучше 1-й вариант, чтобы не думать что это за переменная, т.к. таких глобально заданных переменных (и внутри одной функции) может быть не одна..
Как отключить звук? Довёл до белого коленья. Окон инструментоа много (33). Никаких советников нет. Одни средние и Zup. Откуда он поёт не могу понять. Умоляю, помогите. В сервисе, событиях был. Крестики на событиях не помогают. Всё поёт, гадина.
Techno:
скворец может в индюке сидеть )))
Просмотрел код - нигде нет никаких алертов! Что делать?
Просмотрел код - нигде нет никаких алертов! Что делать?
Проверь на PlaySound().
Мне нужно для частичного закрытия позиции переменной Part, заданной на глобальном уровне, присваивать определённые значения и передавать их как параметр функции, которая выполняет частичное закрытие ордера. Эта переменная является простым делителем. Т.е., при изначально заданном ей значении 1, лот делится на 1 и закрывается вся позиция. При изменении условий торговли, эта переменная получает новые значения и может равняться, допустим 1.5, или 2, тогда лот позиции делится на это число и выполняется частичное закрытие. Вызов функции с передачей параметра выглядит дословно так:
Так вот, несмотря на то, что при вызове функции ...
... задаётся CloseMethod = 1 (частичное закрытие) и указывается явное значение Part = 2, в функцию передаётся не значение Part, заданное по ходу программы (например 2), а изначальное её значение = 1, заданное на глобальном уровне...
Как это победить??? Спасибо...
Ну, вот когда условия торговли изменятся, тогда и меняй свою переменную Part. Или они у тебя в другом советнике? тогда постоянно надо считывать эту переменную, т.е.
int init()
{
.....
GlobalVariableSet("Part0",Part);
.....
}
int start()
{
...
Part=StrToInteger(GlobalVariableGet("Part0"));
...
}
Ну, вот когда условия торговли изменятся, тогда и меняй свою переменную Part. Или они у тебя в другом советнике? тогда постоянно надо считывать эту переменную, т.е.
int init()
{
.....
GlobalVariableSet("Part0",Part);
.....
}
int start()
{
...
Part=StrToInteger(GlobalVariableGet("Part0"));
...
}
При передаче переменной в функцию, через её параметр, переменная передается по значению, это значит изменения переменной в самой функции не приведет к ее перезаписи.
Попробуй передать по ссылке, для этого вставь перед именем параметра символ «&»
Просмотрел код - нигде нет никаких алертов! Что делать?
На вкладке «События» сбрось галочку «Разрешить».
Здравствуйте уважаемые профи.
Очень хочу написать советник который бы открывал одновременно две сделки Sell и Buy.
Затем по прошествии определенного количества пунктов (параметр lim), убыточный ордер закрывался,
а прибыльный чтоб закрылся тогда когда цена опустится ниже максимальной цены с момента открытия ордера
(своего рода виртуальный трейлинг-стоп).
В ужасных муках родил вот это, но оно них... не работает
Подскажите плиз чтонибудь
Как сделать, чтобы можно было переменной, заданной на глобальном уровне по ходу исполнения программы присваивать разные значения при вызове разных функций и она их сохраняла?
два пути
1. в функции, где производится изменение значения добавить амперсант,
например void функция( double& Part ){}
тогда, при изменении значения внутри функции новое значение будет возвращаться в место вызова
2. убрать переменную из списка параметров функции, т.к. переменная задана глобально, то ее значение можно изменять в любом месте кода не передавая ее в качестве параметра..
но чтобы не запутаться лучше 1-й вариант, чтобы не думать что это за переменная, т.к. таких глобально заданных переменных (и внутри одной функции) может быть не одна..
зы. проглядел пост, по сути уже ответили..
, но её значение, изменённое внутри функций во внешние не возвращается.
Покажите саму функцию.
Если это void ClosePartPosBySelect(double Part), то поменяйте на
void ClosePartPosBySelect()