[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 60
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
вот передача параметров по ссылке, сделайте такой скрипт:
во вкладке эксперты появится запись: 2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10
ну и попытайтесь ответить на вопрос почему мы присвоили res = 999; а в журнале получили res = 10
Подскажите как подключить библиотеки? Они есть есть в файлах mqh, но при Копмилировании выдает
'strlib.mqh' - cannot open the program file
вот передача параметров по ссылке, сделайте такой скрипт:
во вкладке эксперты появится запись: 2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10
ну и попытайтесь ответить на вопрос почему мы присвоили res = 999; а в журнале получили res = 10
Ну мое объяснение такое:
В функции Print просисходит вызов к пользовательской функции func. В функцию func передается параметр res=999. При вычислении самой функции func используется параметр а=10. И обратно в место вызова функции func передается уже значение а*10=100. Т.к. по концовке мы имем значение res=10, то отсюда я заключаю, что передача параметра по ссылке означает следующее: можно передать в вызвываемую функцию (в данном случае в func) ЛЮБОЕ значение соответствующего типа (в данном случае res=999), но сама функция будет вычисляться уже с тем значением (т.е. в данном случае с а=10), к-е будет инициализировано внутри самой функции (к-е в частном случае может и совпадать со значением, передаваемым в вызываемую функцию, т.е. в данном случае в func). И при передаче вычисленного в функции (в данном случае в func) значения обратно в строку вызова функции, переменная (в данном случае res) уже будет иметь отличное от ранее значение, т.е. то, к-е она получила при вычислении функции func (т.е. в данном случае res=10). Итого: при передаче параметра в функцию по ссылке внутри вычисляемой функции может происходить изменения значения параметра и далее, после возврата вычисленного значения в строку вызова функции, этот параметр будет иметь уже ИЗМЕНЕННОЕ (в частном случае такое же) значение, к-е он получил пр вычислении вызываемой функции.
Я правильно понял?
да именно так
Гроссе данке шён!!!
Скажите пожалуйста хочу сделать модификацию ордера, чтобы советник изменял величину стоп-лосса в определенное мною время, а он начинает дурить.
вот мой код
extern int tp = 350; // величина прибыли тейкпрофит
extern int sl = 400; // величина убытка стоплосс
int ticket;
int start()
{
//----
if (OrdersTotal()==0 && Hour( )==2 && Minute( )==0) // ордер открывается по времени в 2 часа 00 минут по терминальному времени
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",123,0,Red);
//----
if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) // тут я задал условие, что модификацию ордера с выбранным тикетом, производить в 3 часа 00 минут по терминал. времени.
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // тут указал выбор ордера, сделки
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); // модифицировать ордер с выбранным тикетом, от цены открытой позиции, изменить величину СЛ в пунктах, ТП оставляю без изменения
}
//--
}
При тестировании возникает Проблема: Советник начинает производить много бесполезных модификаций в течении времени, с 3 часов 00 минут до 3 59. Советник дурит и производит каждую секунду модификацию ! ПОЧЕМУ? что не правильно написано в коде?
Скажите пожалуйста хочу сделать модификацию ордера, чтобы советник изменял величину стоп-лосса в определенное мною время, а он начинает дурить.
вот мой код
extern int tp = 350; // величина прибыли тейкпрофит
extern int sl = 400; // величина убытка стоплосс
int ticket;
int start()
{
//----
if (OrdersTotal()==0 && Hour( )==2 && Minute( )==0) // ордер открывается по времени в 2 часа 00 минут по терминальному времени
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,"",123,0,Red);
//----
if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) // тут я задал условие, что модификацию ордера с выбранным тикетом, производить в 3 часа 00 минут по терминал. времени.
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // тут указал выбор ордера, сделки
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); // модифицировать ордер с выбранным тикетом, от цены открытой позиции, изменить величину СЛ в пунктах, ТП оставляю без изменения
}
//--
}
При тестировании возникает Проблема: Советник начинает производить много бесполезных модификаций в течении времени, с 3 часов 00 минут до 3 59. Советник дурит и производит каждую секунду модификацию ! ПОЧЕМУ? что не правильно написано в коде?
Зачем по времени.....по профиту!!
Как прописать правильно функцию модифицировать открытый ордер в счете ECN где сразу стоп и профит не поставишь, а делать надо через модификацию.
Ввобщем беда в том что, что-то не так, помогите найти ошибку.
extern int tp = 350; // величина прибыли тейкпрофит
extern int sl = 400; // величина убытка стоплосс
int ticket;
int start()
{
//----
if (OrdersTotal()==0 && Close[1]<Open[1] && High[1]<Bid) )==0) // ордер открывается по условиям
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0t,"",123,0,Red);
//----
if (OrdersTotal()==1 ) // тут я задал условие, что модификацию ордера с выбранным одним ордером.
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // тут указал выбор ордера, сделки
OrderModify(ticket, OrderOpenPrice(), Ask+sl*Point,Ask-tp*Point,0,Blue); // модифицировать ордер с выбранным тикетом, от цены открытой позиции, изменить величину СЛ в пунктах, ТП оставляю без изменения
}
}
#include <strlib.mgh>
и замените на:
#include <stdlib.mgh>
Люди, объясните кто-нибуь в доступной форме, что такое передача параметров по ссылке. Документацию прочитал, но понял оттуда лишь то, что это возможно и после идентификации переменной обязательно надо ставить модификатор &. Было бы супер, если бы объяснение было сопровождено к-л небольшой программкой с пояснениями... Чем вообще отличается обычная передача параметров от передачи параметров по ссылке?