ax00071: в журнале появляется запись попытка закрыть buy2, unknown ticket for orderclose function. Код прикладываю по памяти поскольку на работе
Ах. Пишу по памяти поскольку тоже на работе. Попробуйте: и Тикет сравните с тем, что в отчете у ордера. В тестере кажется это 0, 1, 2, 3, ....
RefreshRates();// Это обязательно ДО OrderSelect() и лучше в таком виде: while (!RefreshRates()) ;for(int i=OrdersTotal()-1; i>=0; i--)
if (! OrderSelect(i,SELECT_BY_POS)) continue;
Ticket=OrderTicket();
Lot =OrderLots();
// Сообщение о попытке следует выдавать ДО ее осуществления, т.к. попытка может что-то изменить
Alert ("Попытка закрыть Buy Ticket=",Ticket, " Lot=",Lot); // Кажется Alert в тестере бестолкова, попробуйте Print
Ans=OrderClose(Ticket,Lot,OrderClosePrice() ... );
}
я хочу сам научится понимать как делать советник, а может в дальнейшем рынок изменится, и надо будет опять переплачивать, например за то что бы немного изменить алгоритм? ну а тс на самом деле будет не сливающая, по той причине что убыточные ордера переводятся в безубыток и просто нужно дождаться тренда.
реально ли вобще сделать тс в каких нибудь конструкторах сов? вобще хотя бы самое основное понимать как делать самому, а уже какие то дополнит функции вроде стопа в указанном месте, или торговлю по определенным дням заказывать, что бы дописали .
что то вобще мозг не варит что даже в конструкторе надо сделать 1,2,3 и т.д и почему самое главное именно в таком порядке нужно всё соединить стрелочками, кто вобще проводит обучение mql 4 от и до, а не как интернет бойцы создают курсы в которых вобще нечего не объясняют почему именно так происходит , то есть в словах, сам потом нечего нового не сделаешь, а будешь вынужден просто копировать их код .... они же ведь знают за какой порядок что отвечает и не тыкали наугад....ну пусть профи делают пирамидинг, динамический лот, стоп грамотный; моя задача кроется в другом - скачать нужные фильтры и понять суть образования тренда. Спасибо за помощь!
Чтобы самому научиться достаточно иметь документацию, а она есть, уметь читать и понимать прочитанное. Если с первого раза не получилось понять, прочесть ещё несколько раз и желательно помедленней, чтобы мозг успел распознать смысл прочитанного.
А дальше уже полёт фантазии.
Хочу открыть ордер при условии... открываешь раздел документации "Торговые функции" находишь функцию открытия ордера и согласно синтаксиса пишешь...
Ах, да... надо-же соблюсти условие... открываешь раздел "Операторы", читаешь "Условный оператор if-else" и пишешь необходимое условие.
Когда всё это получилось, читаешь документацию от начала до конца с целью понять что вообще есть в языке, что можно получить.
и опять я:) Написал функцию, которая позволяет открыть не более n ордеров за 1 день. сейчас функция сливает депозит - т. е. ордера открываются на каждом тике.
Где я опять налажал?)
int OrderMax = 3; // максимальное количество ордеров, которые можно открыть в течении 1 дня. void OpenOrders() { for (int i = 1; i <= 5; i++) { if (DayOfWeek() == i) { int count_max = 0; if (count_max <= OrderMax) { for(int cn = OrdersTotal()-1; cn>=0; cn--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY) count_max++; } } } } }
Ребята, можно ли с помощью одного советника открывать ордера на других парах? Например Советник только стоит на паре EURAUD и при условии открытии открывается сделка на парах EURAUD и GBPUSD. Какое должно быть условие если будет возможность?
ivan-baaton: и опять я:) Написал функцию, которая позволяет открыть не более n ордеров за 1 день. сейчас функция сливает депозит - т. е. ордера открываются на каждом тике.
Где я опять налажал?)
int OrderMax = 3; // максимальное количество ордеров, которые можно открыть в течении 1 дня. void OpenOrders() { for (int i = 1; i <= 5; i++) { if (DayOfWeek() == i) { int count_max = 0; if (count_max <= OrderMax) { for(int cn = OrdersTotal()-1; cn>=0; cn--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY) count_max++; } } } } }
На мой взгляд вообще подход не логичный. Зачем определять день недели? Какая разница какой сегодня день, если в условии должно быть "сегодня не открывать больше xxx ордеров"?
С моей точки зрения логичней пересчитать открытые сегодня ордера и поставить соответствующее условие. соответственно в условии
Rustam Bikbulatov: Ребята, можно ли с помощью одного советника открывать ордера на других парах? Например Советник только стоит на паре EURAUD и при условии открытии открывается сделка на парах EURAUD и GBPUSD. Какое должно быть условие если будет возможность?
Можно.
Только в тестере не работает.
intOrderSend(
stringsymbol, // символint cmd, // торговая операцияdouble volume, // количество лотовdouble price, // ценаint slippage, // проскальзываниеdouble stoploss, // stop lossdouble takeprofit, // take profitstring comment=NULL, // комментарийint magic=0, // идентификаторdatetime expiration=0, // срок истечения ордераcolor arrow_color=clrNONE// цвет
);
Ах. Пишу по памяти поскольку тоже на работе. Попробуйте: и Тикет сравните с тем, что в отчете у ордера. В тестере кажется это 0, 1, 2, 3, ....
Благодарю за внимание )) Вот я лопух . . . . . . на закрытии у меня стояло условие в пятницу в 22:00 закрывать сделку, без доп условий на проверку типа сделки. А сама сделка закрылась на пару часов раньше. Ну и когда стукнуло 22:00 советник начал отправлять ордера на закрытие уже закрытого ордера . . . . .
Ах. Пишу по памяти поскольку тоже на работе. Попробуйте: и Тикет сравните с тем, что в отчете у ордера. В тестере кажется это 0, 1, 2, 3, ....
я хочу сам научится понимать как делать советник, а может в дальнейшем рынок изменится, и надо будет опять переплачивать, например за то что бы немного изменить алгоритм? ну а тс на самом деле будет не сливающая, по той причине что убыточные ордера переводятся в безубыток и просто нужно дождаться тренда.
реально ли вобще сделать тс в каких нибудь конструкторах сов? вобще хотя бы самое основное понимать как делать самому, а уже какие то дополнит функции вроде стопа в указанном месте, или торговлю по определенным дням заказывать, что бы дописали .
что то вобще мозг не варит что даже в конструкторе надо сделать 1,2,3 и т.д и почему самое главное именно в таком порядке нужно всё соединить стрелочками, кто вобще проводит обучение mql 4 от и до, а не как интернет бойцы создают курсы в которых вобще нечего не объясняют почему именно так происходит , то есть в словах, сам потом нечего нового не сделаешь, а будешь вынужден просто копировать их код .... они же ведь знают за какой порядок что отвечает и не тыкали наугад....ну пусть профи делают пирамидинг, динамический лот, стоп грамотный; моя задача кроется в другом - скачать нужные фильтры и понять суть образования тренда. Спасибо за помощь!
Чтобы самому научиться достаточно иметь документацию, а она есть, уметь читать и понимать прочитанное. Если с первого раза не получилось понять, прочесть ещё несколько раз и желательно помедленней, чтобы мозг успел распознать смысл прочитанного.
А дальше уже полёт фантазии.
Хочу открыть ордер при условии... открываешь раздел документации "Торговые функции" находишь функцию открытия ордера и согласно синтаксиса пишешь...
Ах, да... надо-же соблюсти условие... открываешь раздел "Операторы", читаешь "Условный оператор if-else" и пишешь необходимое условие.
Когда всё это получилось, читаешь документацию от начала до конца с целью понять что вообще есть в языке, что можно получить.
Написал функцию, которая позволяет открыть не более n ордеров за 1 день.
сейчас функция сливает депозит - т. е. ордера открываются на каждом тике.
Где я опять налажал?)
int OrderMax = 3; // максимальное количество ордеров, которые можно открыть в течении 1 дня.
void OpenOrders()
{
for (int i = 1; i <= 5; i++)
{
if (DayOfWeek() == i)
{
int count_max = 0;
if (count_max <= OrderMax)
{
for(int cn = OrdersTotal()-1; cn>=0; cn--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
count_max++;
}
}
}
}
}
и опять я:)
Написал функцию, которая позволяет открыть не более n ордеров за 1 день.
сейчас функция сливает депозит - т. е. ордера открываются на каждом тике.
Где я опять налажал?)
int OrderMax = 3; // максимальное количество ордеров, которые можно открыть в течении 1 дня.
void OpenOrders()
{
for (int i = 1; i <= 5; i++)
{
if (DayOfWeek() == i)
{
int count_max = 0;
if (count_max <= OrderMax)
{
for(int cn = OrdersTotal()-1; cn>=0; cn--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
count_max++;
}
}
}
}
}
На мой взгляд вообще подход не логичный. Зачем определять день недели? Какая разница какой сегодня день, если в условии должно быть "сегодня не открывать больше xxx ордеров"?
С моей точки зрения логичней пересчитать открытые сегодня ордера и поставить соответствующее условие. соответственно в условии
не хватает определения даты открытия ордера.Rustam Bikbulatov:
Ребята, можно ли с помощью одного советника открывать ордера на других парах? Например Советник только стоит на паре EURAUD и при условии открытии открывается сделка на парах EURAUD и GBPUSD. Какое должно быть условие если будет возможность?
Только в тестере не работает.
Можно.
Только в тестере не работает.
А их как перечислять? через запятую или &&?
А их как перечислять? через запятую или &&?
Их это что? перечислять символы? или что?
В каждом OrderSend свой один символ. Никаких запятых и прочих штучек...
Их это что? перечислять символы? или что?
В каждом OrderSend свой один символ. Никаких запятых и прочих штучек...
перечислять пары
Ах. Пишу по памяти поскольку тоже на работе. Попробуйте: и Тикет сравните с тем, что в отчете у ордера. В тестере кажется это 0, 1, 2, 3, ....