1

Тема: VisualTrade for MT

http://expforex.at.ua/VisualTrade5copy.jpg
Exp5 - VisualTrade for MT5

Представляю Вашему вниманию эксперта, который будет выполнять все действия которые Вы ему прикажите.

Каждый раз я буду дополнять этого эксперта новыми возможностями, с каждым разом я попытаюсь сделать его более информативным.

VisualTrade for MT5 Авторская разработка. Система для работы на рынке Forex одним нажатием кнопки.

Разработка http://expforex.at.ua

Если Вы желаете помочь проекту:

Expforex@meta.ua


http://expforex.at.ua/_fr/1/s6952188.jpg
История версий:

V1.0:
-В Эксперте реалзиованы все скрипты по закрытию ордеров.
-В данной версии присутствуют такие кнопки:
--CloseALL
--CloseALLSTOP
--CloseBUY
--CloseBUYSTOP
--CloseSELL
--CloseSELLSTOP
--CloseLOSS
--ClosePROFIT
-При нажатии кнопки, все позиции/ордера закроются/удалятся, по всем инструментам.

V2.0:
-Добавил кнопки открытия ордеров BUY SELL
-Добавил параметры Тейкпрофит, Стоплос, Лот
-Если StopLosss или TakeProfits - указаны минимальны и неравны 0, то система автоматически устанавливает значения на минимальное расстояние.
-Добавил SymbolClose - булент на закрытие всех символов, либо же по текущему.
-Добавил возможность ставить отложенные ордера BUYSTOP b SELLSTOP
-Параметр OrderPricePip - расстояние для отложки
-Если OrderPricePips неравно 0 и меньше минимального стопа, параметру присваивается минимальный стоп

V2.2: V2.2:
-Исправлены название кнопок на удаление отложенных ордеров -Fixed the name of the buttons on the deletion of pending orders
-Добавлено поле изменения Lots в реальном режиме. -Added field changes Lots in real mode.
--Если Lots - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If Lots - trying to put less than the minimum - the value is minimal at this serevere
-Добавлено поле изменения TakeProfit в реальном режиме. -Added field TakeProfit changes in real mode.
--Если TakeProfit - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If TakeProfit - trying to put less than the minimum - the value is minimal at this serevere
--Если TakeProfit больше 0 , то окно значения тейкпрофита становится зеленым - т.е. - If TakeProfit greater than 0, the window values TakeProfit turns green - that is, включенным. included.
-Добавлено поле изменения StopLoss в реальном режиме. -Added field StopLoss changes in real mode.
--Если StopLoss - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If StopLoss - trying to put less than the minimum - the value is minimal at this serevere
--Если StopLoss больше 0 , то окно значения тейкпрофита становится зеленым - т.е. - If StopLoss greater than 0, the window values TakeProfit turns green - that is, включенным. included.
-Добавлено поле изменения OrderPricePip в реальном режиме. -Added field OrderPricePip changes in real mode.
--Если OrderPricePip - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If OrderPricePip - trying to put less than the minimum - the value is minimal at this serevere
--Если OrderPricePip больше 0 , то окно значения тейкпрофита становится зеленым - т.е. - If OrderPricePip greater than 0, the window values TakeProfit turns green - that is, включенным. included.



V2.3
-Добавил возможность прятать панель с помощью кнопки : Включить/Выключить VisualTrade
-Перестроил кнопки открытия ордеров под параметры открытия.

http://expforex.at.ua/forum/35-169-1 - Свежие версии !!! как добвить файл сюда! незнаю!

.

Отредактировано expforex (2009-10-18 20:21:02)

Post's attachments

Attachment icon 6086918.gif 30.21 kb, 47 downloads since 2009-10-16 

2

Re: VisualTrade for MT

Добавлена возможность закачки файлов.

2 expforex: По Вашей ссылке не удалось найти файл эксперта, добавлена картинка для примера.

2 ALL: Для форума сознательно выбран максимально быстрый и лёгкий движок. Если нужны какие-то дополнительные функции - обращайтесь.

3

Re: VisualTrade for MT

Уважаемый администратор По моей ссылке есть самые свежие версии. Так как я только начал  изучать именно эту версию языка, сами понимаете. Он не такой как MQL4  просто сама идея системы такова, что я ее улучшаю, добавляю новые функции и так далее.

По мере возможности я буду дополнять свою систему разными функциями. ;-)

4

Re: VisualTrade for MT

2 expforex: возможно, я плохо искала smile
В любом случае, Вы и другие зарегистрированные пользователи могут отныне прикреплять файлы к своим сообщениям.

Мы приветствуем размещение любых материалов, способствующих популяризации MQL5, спасибо Вам за Ваше желание поделиться своими наработками.

5

Re: VisualTrade for MT

admin пишет:

2 expforex: возможно, я плохо искала smile
В любом случае, Вы и другие зарегистрированные пользователи могут отныне прикреплять файлы к своим сообщениям.

Мы приветствуем размещение любых материалов, способствующих популяризации MQL5, спасибо Вам за Ваше желание поделиться своими наработками.

Вы одна из немногих, кто приветствует это, потому как все невзлюбили mql5

6

Re: VisualTrade for MT

Уважаемые господа, постарайтесь придерживаться обсуждаемой темы - советника VisualTrade for MT5.


Перенес сообщение тов. Богданова в соответсвующий раздел.

7

Re: VisualTrade for MT

V2.2: V2.2:
-Исправлены название кнопок на удаление отложенных ордеров -Fixed the name of the buttons on the deletion of pending orders
-Добавлено поле изменения Lots в реальном режиме. -Added field changes Lots in real mode.
--Если Lots - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If Lots - trying to put less than the minimum - the value is minimal at this serevere
-Добавлено поле изменения TakeProfit в реальном режиме. -Added field TakeProfit changes in real mode.
--Если TakeProfit - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If TakeProfit - trying to put less than the minimum - the value is minimal at this serevere
--Если TakeProfit больше 0 , то окно значения тейкпрофита становится зеленым - т.е. - If TakeProfit greater than 0, the window values TakeProfit turns green - that is, включенным. included.
-Добавлено поле изменения StopLoss в реальном режиме. -Added field StopLoss changes in real mode.
--Если StopLoss - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If StopLoss - trying to put less than the minimum - the value is minimal at this serevere
--Если StopLoss больше 0 , то окно значения тейкпрофита становится зеленым - т.е. - If StopLoss greater than 0, the window values TakeProfit turns green - that is, включенным. included.
-Добавлено поле изменения OrderPricePip в реальном режиме. -Added field OrderPricePip changes in real mode.
--Если OrderPricePip - пытаетесь выставить меньше минимального - значение становится минимально возможным на этом серевере - If OrderPricePip - trying to put less than the minimum - the value is minimal at this serevere
--Если OrderPricePip больше 0 , то окно значения тейкпрофита становится зеленым - т.е. - If OrderPricePip greater than 0, the window values TakeProfit turns green - that is, включенным. included.



V2.3
-Добавил возможность прятать панель с помощью кнопки : Включить/Выключить VisualTrade
-Перестроил кнопки открытия ордеров под параметры открытия.


http://expforex.at.ua/_fr/1/s6952188.jpg

Скачать систему можно  с оф.сайта http://expforex.at.ua

Re: VisualTrade for MT

Мощный эксперт! Большой спасибо, попробую разобраться в нём.

Для Яны: а я таки нашол ссылку для скачивания! Она притаилась на форуме автора рядом с заголоском мелким шрифтом - сразу и не разглядишь! Вот она: http://expforex.at.ua/load/0-0-0-46-20

9

Re: VisualTrade for MT

сделал наподобии, только для мт4, + тренажер.

http://expforex.at.ua/Title12.JPG
http://expforex.at.ua/load/exp_virtualtradepad/5-1-0-49

10

Re: VisualTrade for MT

Здравствуйте, Уважаемый expforex.
Было бы не плохо добавить к вашему советнику функцию REVERSE.
Думаю с ней будет послащще, а то в 4 привык, а в 5 нет пока...................- косяк...
Заранее спасибо...

Болванку прилогаю...........

11

Re: VisualTrade for MT

//+---------------------------------------------------------------------------------------------------------+
//|                                                                                                              Reverse.mq4  |
//| Скрипт переворачивает имеющиеся позиции.                                                       |
//| Возможность перевернуть позиции не только текущего символа.                        |
//+---------------------------------------------------------------------------------------------------------+
//| Скрипт Reverse предназначен для быстрого переворота совокупной позиции     |
//| трейдера. То есть скрипт выполняет последовательную замену всех покупок на |
//| продажи, а продаж на покупки. Каждая покупка закрывается по текущей цене и |
//| вместо неё открывается продажа по текущей цене. Аналогично для продаж.     |
//| Скрипт сохраняет размеры лотов,                                                                             |
//+---------------------------------------------------------------------------------------------------------+
#property copyright "переворачивает открытые ордера"
#property link      ""
#property show_confirm
//+----------------------------------------------------------------------------+
//|                        Внешние параметры скрипта                         |
//+----------------------------------------------------------------------------+
int    StopLoss             = 1000;              // Размер стопа в пунктах
int    Takeprofit            = 1000;              // Размер тейка в пунктах
bool CurSymbolOnly    = True;               // Только текущий символ(False)-все имеющиеся позиции
bool MarketWatch       = True;               // Рыночное исполнение -
                                                              // Если True, то с нулевыми стопом и тейком
                                                              // Если False,  то будут поставлены стоп и тейк
int    Slippage              = 3;                    // Проскальзывание цены
int  NumberOfTry         = 3;                    // Количество торговых попыток
//+----------------------------------------------------------------------------+
//|                      Глобальные переменные скрипта                    |
//+----------------------------------------------------------------------------+
bool   gbDisabled     = False;            // Флаг блокировки
bool   gbNoInit       = False;            // Флаг неудачной инициализации
color  clOpenBuy      = Lime;             // Цвет значка открытия покупки
color  clOpenSell     = Red;              // Цвет значка открытия продажи
color  clCloseBuy     = Lime;             // Цвет значка закрытия покупки
color  clCloseSell    = Red;              // Цвет значка закрытия продажи
bool   UseSound       = True;             // Использовать звуковой сигнал
string NameFileSound  = "trixcross.wav";  // Наименование звукового файла
//+----------------------------------------------------------------------------+
//|                        Поключение внешних модулей                      |
//+----------------------------------------------------------------------------+
#include <stdlib.mqh>
//+----------------------------------------------------------------------------+
//|  Функция инициализации                                                     |
//+----------------------------------------------------------------------------+
   void init() {
   gbNoInit=False;
   if (!IsTradeAllowed()) {
   Message("Для нормальной работы скрипта необходимо\n"+"Разрешить советнику торговать");
   gbNoInit=True; return;
   }
   if (!IsLibrariesAllowed()) {
   Message("Для нормальной работы скрипта необходимо\n"+"Разрешить импорт из внешних экспертов");
   gbNoInit=True; return;
   } }
//+----------------------------------------------------------------------------+
//|  СКРИПТ                                                                                  |
//+----------------------------------------------------------------------------+
   void start() {
   if (gbNoInit) {
   Message("Не удалось инициализировать скрипт!"); return;
   }
   double ll, pa, pb, pp, sl, tp;
   int    i, k=OrdersTotal(), mn, ot;
   for (i=k-1; i>=0; i--) {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   if (!CurSymbolOnly || OrderSymbol()==Symbol()) {
   ll=OrderLots();
   mn=OrderMagicNumber();
   ot=OrderType();
   pp=MarketInfo(OrderSymbol(), MODE_POINT);
   if (ot==OP_BUY || ot==OP_SELL) {
   ClosePosBySelect();
   if (ot==OP_BUY) {
   pb=MarketInfo(OrderSymbol(), MODE_BID);
   if (StopLoss  >0) sl=pb+StopLoss  *pp; else sl=0;
   if (Takeprofit>0) tp=pb-Takeprofit*pp; else tp=0;
   OpenPosition(OrderSymbol(), OP_SELL, ll, sl, tp, mn);
   }
   if (ot==OP_SELL) {
   pa=MarketInfo(OrderSymbol(), MODE_ASK);
   if (StopLoss  >0) sl=pa-StopLoss  *pp; else sl=0;
   if (Takeprofit>0) tp=pa+Takeprofit*pp; else tp=0;
   OpenPosition(OrderSymbol(), OP_BUY, ll, sl, tp, mn);
   }}}}}
   }
//+----------------------------------------------------------------------------+
//|  Закрытие одной предварительно выбранной позиции      |
//+----------------------------------------------------------------------------+
   void ClosePosBySelect() {
   bool   fc;
   color  clClose;
   double ll, pa, pb, pp;
   int    err, it; 
   if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
   for (it=1; it<=NumberOfTry; it++) {
   if (!IsTesting() && IsStopped()) break;
   while (!IsTradeAllowed()) Sleep(5000);
   RefreshRates();
   pa=MarketInfo(OrderSymbol(), MODE_ASK);
   pb=MarketInfo(OrderSymbol(), MODE_BID);
   if (OrderType()==OP_BUY) {
   pp=pb; clClose=clCloseBuy;
   } else {
   pp=pa; clClose=clCloseSell;
   }
   ll=OrderLots();
   fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
   if (fc) {
   if (UseSound) PlaySound(NameFileSound); break;
   } else {
   err=GetLastError();
   if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
   Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
   ErrorDescription(err),", try ",it);
   Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
   Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
   " tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
   Sleep(1000*5);
   }}
   } else Print("Некорректная торговая операция. Close ",GetNameOP(OrderType()));
   }
//+----------------------------------------------------------------------------+
//|  Возвращает флаг существования позиций                         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                           |
//|    sy - наименование инструмента   (""   - любой символ,     |
//|                                     NULL - текущий символ)                      |
//|    op - операция                   (-1   - любая позиция)                |
//|    mn - MagicNumber                (-1   - любой магик)                 |
//|    ot - время открытия             ( 0   - любое время открытия) |
//+----------------------------------------------------------------------------=+
   bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
   int i, k=OrdersTotal(); 
   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   if (OrderSymbol()==sy || sy=="") {
   if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
   if (op<0 || OrderType()==op) {
   if (mn<0 || OrderMagicNumber()==mn) {
   if (ot<=OrderOpenTime()) return(True);
   }}}}}}
   return(False);
   }
//+----------------------------------------------------------------------------+
//|  Возвращает наименование торговой операции                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                           | 
//|    op - идентификатор торговой операции                          |
//+----------------------------------------------------------------------------+
   string GetNameOP(int op) {
   switch (op) {
   case OP_BUY      : return("Buy");
   case OP_SELL     : return("Sell");
   case OP_BUYLIMIT : return("BuyLimit");
   case OP_SELLLIMIT: return("SellLimit");
   case OP_BUYSTOP  : return("BuyStop");
   case OP_SELLSTOP : return("SellStop");
   default          : return("Unknown Operation");
   } }
//+----------------------------------------------------------------------------------------+
//|  Возвращает наименование таймфрейма                                           |
//+----------------------------------------------------------------------------------------+
//|  Параметры:                                                                                          |
//|    TimeFrame - таймфрейм (количество секунд)      (0 - текущий ТФ) |
//+----------------------------------------------------------------------------------------+
   string GetNameTF(int TimeFrame=0) {
   if (TimeFrame==0) TimeFrame=Period();
   switch (TimeFrame) {
   case PERIOD_M1:  return("M1");
   case PERIOD_M5:  return("M5");
   case PERIOD_M15: return("M15");
   case PERIOD_M30: return("M30");
   case PERIOD_H1:  return("H1");
   case PERIOD_H4:  return("H4");
   case PERIOD_D1:  return("Daily");
   case PERIOD_W1:  return("Weekly");
   case PERIOD_MN1: return("Monthly");
   default:         return("UnknownPeriod");
   } }
//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                           |
//|    m - текст сообщения                                                           |
//+----------------------------------------------------------------------------+
   void Message(string m) {
   Comment(m);
   if (StringLen(m)>0) Print(m);
   }
//+---------------------------------------------------------------------------------+
//|  Модификация одного предварительно выбранного ордера.   |
//+---------------------------------------------------------------------------------+
//|  Параметры:                                                                                 |
//|    pp - цена установки ордера                                                     |
//|    sl - ценовой уровень стопа                                                       |
//|    tp - ценовой уровень тейка                                                      |
//|    ex - дата истечения                                                                   |
//+----------------------------------------------------------------------------------+
   void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
   bool   fm;
   color  cl;
   double op, pa, pb, os, ot;
   int    dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
   if (pp<=0) pp=OrderOpenPrice();
   if (sl<0 ) sl=OrderStopLoss();
   if (tp<0 ) tp=OrderTakeProfit();
   pp=NormalizeDouble(pp, dg);
   sl=NormalizeDouble(sl, dg);
   tp=NormalizeDouble(tp, dg);
   op=NormalizeDouble(OrderOpenPrice() , dg);
   os=NormalizeDouble(OrderStopLoss()  , dg);
   ot=NormalizeDouble(OrderTakeProfit(), dg);
   if (pp!=op || sl!=os || tp!=ot) {
   for (it=1; it<=NumberOfTry; it++) {
   if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
   while (!IsTradeAllowed()) Sleep(5000);
   RefreshRates();
   fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
   if (fm) {
   if (UseSound) PlaySound(NameFileSound); break;
   } else {
   er=GetLastError();
   pa=MarketInfo(OrderSymbol(), MODE_ASK);
   pb=MarketInfo(OrderSymbol(), MODE_BID);
   Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
   Print("Ask=",pa,"  Bid=",pb,"  sy=",OrderSymbol(),
   "  op="+GetNameOP(OrderType()),"  pp=",pp,"  sl=",sl,"  tp=",tp);
   Sleep(1000*10);
   }}}
   }
//+----------------------------------------------------------------------------+
//|  Открывает позицию по рыночной цене.                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                           |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    op - операция                                                                     |
//|    ll - лот                                                                                  |
//|    sl - уровень стоп                                                                 |
//|    tp - уровень тейк                                                                |
//|    mn - MagicNumber                                                               |
//+----------------------------------------------------------------------------+
   void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) {
   color    clOpen;
   datetime ot;
   double   pp, pa, pb;
   int      dg, err, it, ticket=0;
   string   lsComm=WindowExpertName()+" "+GetNameTF(Period());
   if (sy=="" || sy=="0") sy=Symbol();
   if (op==OP_BUY) clOpen=clOpenBuy; else clOpen=clOpenSell;
   for (it=1; it<=NumberOfTry; it++) {
   if (!IsTesting() && IsStopped()) {
   Print("OpenPosition(): Остановка работы функции");
   break;
   }
   while (!IsTradeAllowed()) Sleep(5000);
   RefreshRates();
   dg=MarketInfo(sy, MODE_DIGITS);
   pa=MarketInfo(sy, MODE_ASK);
   pb=MarketInfo(sy, MODE_BID);
   if (op==OP_BUY) pp=pa; else pp=pb;
   pp=NormalizeDouble(pp, dg);
   ot=TimeCurrent();
   if (MarketWatch)
   ticket=OrderSend(sy, op, ll, pp, Slippage, 0, 0, lsComm, mn, 0, clOpen);
   else
   ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, lsComm, mn, 0, clOpen);
   if (ticket>0) {
   if (UseSound) PlaySound(NameFileSound); break;
   } else {
   err=GetLastError();
   if (pa==0 && pb==0) Message("Проверьте в Обзоре рынка наличие символа "+sy);
//+----------------------------------------------------------------------------+
//|                       Вывод сообщения об ошибке                            |
//+----------------------------------------------------------------------------+
   Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
   Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",GetNameOP(op),
   " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
//+----------------------------------------------------------------------------+
//|                      Блокировка работы советника                           |
//+----------------------------------------------------------------------------+
   if (err==2 || err==64 || err==65 || err==133) {
   gbDisabled=True; break;
   }
//+----------------------------------------------------------------------------+
//|                           Длительная пауза                                 |
//+----------------------------------------------------------------------------+
   if (err==4 || err==131 || err==132) {
   Sleep(1000*300); break;}
   if (err==128 || err==142 || err==143) {
   Sleep(1000*66.666);
   if (ExistPositions(sy, op, mn, ot)) {
   if (UseSound) PlaySound(NameFileSound); break;
   }}
   if (err==140 || err==148 || err==4110 || err==4111) break;
   if (err==141) Sleep(1000*100);
   if (err==145) Sleep(1000*17);
   if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
   if (err!=135) Sleep(1000*7.7);
   }}
   if (MarketWatch && ticket>0 && (sl>0 || tp>0)) {
   if (OrderSelect(ticket, SELECT_BY_TICKET)) ModifyOrder(-1, sl, tp);
   }
   }
//+----------------------------------------------------------------------------+

12

Re: VisualTrade for MT

для 5 сделать всмысле?

13

Re: VisualTrade for MT

expforex пишет:

для 5 сделать всмысле?

Ну да, ))) для 5

Очень удобный скрипт для скальпинга, и ещё, функцию отключения кнопок, а то есть которыми не пользуешься, а лишний "мусор на экране " напрягает.

Заранее СПАСИБО !!!

14

Re: VisualTrade for MT

Уважаемый expforex.

Я так понял, Вы программист, и в связи с этим у меня вопрос. Можно ли Вам заказать адаптировать или как там, написать заново, пару, тройку индюков? Пора начинать готовиться к переходу, и не хочется всё копоть и тестить заново, есть система/тактика - это уже привычка. Всё ровно и стабильно, и с ЛОСЯМИ видится не хочется.

А.......))))))))))))??????????