Здравствуйте. Помогите разобраться с проблемой закрытия ордеров (ордера не закрываются), данная система основана на индикаторе DeMarker. При тесте, ошибок нет, только 1 предупреждение. Прошу просто разъяснить мне про OrderClose. Просьба закрытия ордеров в виде отдельных функций пока не предлагать (это будет следующий этап).
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
лонги закрываются по Bid
для тестов можете вообще использовать OrderClosePrice(), чтобы голову не ломать Ask там или Bid
То что не та цена указана, это пол-беды. А вот перед использованием параметров ордера, OrderTicket, OrderLots и других, надо ордер выбрать функцией OrderSelect
лонги закрываются по Bid
для тестов можете вообще использовать OrderClosePrice(), чтобы голову не ломать Ask там или Bid
OrderClosePrice можно использовать и в рабочем советнике, только надо чётко понимать какие меры предпринять на случай ошибки исполнения. Тут RefreshRates не поможет. Надо повторно выбрать ордер.
То что не та цена указана, это пол-беды. А вот перед использованием параметров ордера, OrderTicket, OrderLots и других, надо ордер выбрать функцией OrderSelect
OrderClosePrice можно использовать и в рабочем советнике, только надо чётко понимать какие меры предпринять на случай ошибки исполнения. Тут RefreshRates не поможет. Надо повторно выбрать ордер.
//+------------------------------------------------------------------+ //| Test advisor on iDeMarker.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https:/goga342@yandex.ru | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //------------------параметры советника ------------------------------- extern double lots=0.01; // extern int Magic=111111111; //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int start() { int ticket; //DeMarker double DM1,DM; DM=iDeMarker(NULL,0,14,0);// 0 (1) бар DM1=iDeMarker(NULL,0,14,1);// 1 (2) бар if(DM>0.3&&DM1<0.3&&CountBuy()<1) // открытие покупок { ticket=OrderSend(Symbol(),OP_BUY,lots,Bid,0,0,0,NULL,Magic,0,CLR_NONE); } if(DM<0.7&&DM1>0.7&&CountBuy()>0) // закрытие покупок { for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderMagicNumber()==Magic && OrderType()==OP_BUY) if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,clrNONE)) Print(" "); } } } //+------------------------------------------------------------------+ /* if(DM<0.7&&DM1>0.7&& CountSell()<1)// открытие продаж { ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,0,0,0,NULL,Magic,0,CLR_NONE); } if(DM<0.3&&DM1>0.3)// закрытие продаж { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) { if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); } }*/ return(0); } //+------------------------------------------------------------------+ int CountBuy()// проверкна открытие ордеров на покупку { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) { if(OrderType()==OP_BUY) count++; } } } return(count); } //+------------------------------------------------------------------+ int CountSell()//проверкна открытие ордеров на продажу { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) { if(OrderType()==OP_SELL) count++; } } } return(count); } //+------------------------------------------------------------------
Устранил все замечания. При тесте сделки так же не закрываются. Ещё выявил другую проблему три тесте, при запуске данного кода, данный код открыл 1-ю позицию после значительного пропуска заданного временного периода.
Устранил все замечания. При тесте сделки так же не закрываются. Ещё выявил другую проблему три тесте, при запуске данного кода, данный код открыл 1-ю позицию после значительного пропуска заданного временного периода.
ticket=OrderSend(Symbol(),OP_BUY,lots,Bid,0,0,0,NULL,Magic,0,CLR_NONE);
Buy открывается по цене Ask, Sell - по цене Bid. А у вас?
Buy открывается по цене Ask, Sell - по цене Bid. А у в
Buy открывается по цене Ask, Sell - по цене Bid. А у вас?
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,clrNONE))
О Боже... Вам сначала нужно азы изучить. Buy закрывается по Bid, Sell закрывается по Ask
О Боже... Вам сначала нужно азы изучить. Buy закрывается по Bid, Sell закрывается по Ask
Молодой человек. Давайте не будем указывать, что кому надо изучать. Вопрос был поставлен о закрытии позиций. Что касается открытия позиций, да открытие сделок на покупку происходит по Ask. В тоже время если Вы откроете позицию на покупку по Bid, то программа МТ4 ошибок не выдаст и откроет позицию на покупку.Это значит, что нет чёткой привязки к открытию определённой позиции к Ask или Bid, это проверено инкрементальным путём. Что, касается лично Вас, я просмотрел какие вопросы Вы задаёте на форумах. Так что кому надо учится, это вопрос. И последние, если Вы такой спец, покажите это наглядно на данном примере как надо работать в MQL коде. Тогда, многие скажут, что данный человек действительно спец и к нему можно обратится за советами или платными заказами. А взять и нагадить на человека заочно, ума много не надо. Все мы были и будем учениками в какой то сфере деятельности.
Молодой человек. Давайте не будем указывать, что кому надо изучать. Вопрос был поставлен о закрытии позиций. Что касается открытия позиций, да открытие сделок на покупку происходит по Ask. В тоже время если Вы откроете позицию на покупку по Bid, то программа МТ4 ошибок не выдаст и откроет позицию на покупку.Это значит, что нет чёткой привязки к открытию определённой позиции к Ask или Bid, это проверено инкрементальным путём. Что, касается лично Вас, я просмотрел какие вопросы Вы задаёте на форумах. Так что кому надо учится, это вопрос. И последние, если Вы такой спец, покажите это наглядно на данном примере как надо работать в MQL коде. Тогда, многие скажут, что данный человек действительно спец и к нему можно обратится за советами или платными заказами. А взять и нагадить на человека заочно, ума много не надо. Все мы были и будем учениками в какой то сфере деятельности.
Спасибо за "молодого человека" - классный комплимент. Хоть их мужчинам и не требуется. Разве плохо в 48 выглядеть на 30 - 35 ?
И знаете, всё же прислушайтесь к совету - учите азы (пока даже не программирования на mql), а то, простите, чушь говорите. Где это вы видели открытие Sell по Ask и Buy по Bid ? Покажите - озолочусь. Расскажите пожалуйста что за инкрементальный путь вы используете? Что к чему прибавляете, чтобы добиться открытия Buy по Bid и Sell по Ask, не получая при этом ошибку?
З.Ы. Я уже лет десять вопросов тут не задаю - лишь отвечаю на них. И, тем более, вы говорите о моих вопросах на форумах (да, кстати - ссылочку дайте) - во множественном числе. Так вот - я нахожусь только на этом, и нигде более.
Почитайте сначала вот это (хоть и там тоже есть некоторые недочёты).
- book.mql4.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Помогите разобраться с проблемой закрытия ордеров (ордера не закрываются), данная система основана на индикаторе DeMarker. При тесте, ошибок нет, только 1 предупреждение. Прошу просто разъяснить мне про OrderClose. Просьба закрытия ордеров в виде отдельных функций пока не предлагать (это будет следующий этап).