Newest PRO 3.7 Exclusive Classic
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «$$$_westernpips_newest_pro_3_7_exclusive_classic1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Newest PRO 3.7 Exclusive Classic — это торговый эксперт-советник для MetaTrader 4, разработанный компанией Westernpips. Программа подключается к внешним источникам котировок (Saxo, Lmax, CQG, Rithmic) через DLL-библиотеку, сравнивает их цены с внутренними котировками MT4 и открывает или закрывает позиции на основе разницы (gap) между источниками. Советник поддерживает торговлю отложенными ордерами, фиксированные и реальные стоп-лоссы/тейк-профиты, трейлинг-стопы, виртуальный трейлинг-стоп, а также контроль спреда, проскальзывания, комиссий и временных ограничений торговли.
В начальной настройке эксперт сохраняет полный журнал торговых операций и параметров конфигурации в локальный файл. На графике отображается информационная панель с текущими значениями минимального уровня, стоп-лосса, тейк-профита, спреда, лотов и состояния подключения к источникам данных. При критических ситуациях (большой проскальзывание, стоп по депозиту, отключение потока котировок) торговля автоматически останавливается с выводом сообщения об ошибке на экран.
Настройки программы
| Настройка | Описание |
|---|---|
| WesternpipsSet1 | Настройки быстрого источника котировок — Группа настроек: параметры подключения к быстрым источникам котировок. |
| ModeOfQuotes | Режим источника котировок — Источник внешних котировок: 0 — Saxo, 1 — Lmax, 2 — CQG, 3 — Rithmic. |
| UseSymbCode | Использовать код символа — Использование пользовательского кода символа для внешнего источника котировок. |
| SymbCode | Код символа источника — Код символа для подключения к внешнему источнику котировок. |
| SymbReturn | Инверсия котировок — Инверсия направления котировок внешнего источника (1/цена). |
| AvtoShiftBid | Автоматическое смещение Bid — Автоматический расчёт смещения Bid на основе разницы между внешними и внутренними котировками. |
| ShiftAsk | Смещение Ask — Ручное смещение цены Ask для расчёта разницы котировок. |
| ShiftBid | Смещение Bid — Ручное смещение цены Bid для расчёта разницы котировок. |
| WesternpipsSet2 | Настройки открытия ордеров — Группа настроек открытия ордеров и генерации сигналов. |
| MinimumLevel | Минимальный уровень — Минимальный уровень разницы котировок в пунктах для генерации торгового сигнала. |
| MinGapForOpen | Минимальный разрыв для открытия — Минимальная разница котировок в пунктах для открытия ордера. |
| UseDynamicMinimumLevel | Динамический минимальный уровень — Включение динамического расчёта минимального уровня на основе разницы спредов. |
| DynamicMinimumLevelSpreadCoefficient | Коэффициент динамического минимального уровня — Коэффициент для расчёта динамического минимального уровня на основе разницы спредов. |
| SignalMode | Режим сигнала — Режим генерации сигнала: 0 — сравнение с Bid, 1 — сравнение с Ask. |
| AvtoSettings | Автоматические настройки — Автоматическая корректировка параметров уровней и стопов в зависимости от текущего спреда. |
| AvarageSpreadUse | Использовать усреднённый спред — Использование усреднённого спреда для расчёта минимального уровня вместо текущего спреда. |
| TradeByPendingOrders | Торговля отложенными ордерами — Открытие позиций через отложенные ордера (BuyStop/SellStop) вместо рыночных. |
| DistanceForPendingOrdersInPips | Расстояние для отложенных ордеров — Расстояние для размещения отложенных ордеров в пунктах. |
| PendingOrdersLifeTime | Время жизни отложенного ордера — Время жизни отложенного ордера в секундах до автоматического удаления. |
| OrdersOpenIntervalMs | Интервал открытия ордеров — Минимальный интервал в миллисекундах между открытиями ордеров. |
| MaxAttemptsForOpenOrder | Максимум попыток открытия — Максимальное количество попыток открытия ордера. |
| NTrades | Максимум одновременных ордеров — Максимальное количество одновременно открытых ордеров. |
| Magic | Магический номер — Магический номер для идентификации ордеров, открытых данным советником. |
| ShowCommentsInOrder | Комментарии в ордерах — Добавление комментариев с информацией о разнице котировок в ордера. |
| EAComment | Комментарий к ордерам — Текстовый комментарий, добавляемый к ордерам вместо стандартного описания. |
| TradeSide | Направление торговли — Направление торговли: 0 — обе стороны, 1 — только покупка, 2 — только продажа. |
| WesternpipsSet3 | Настройки закрытия ордеров — Группа настроек закрытия ордеров и управления стопами/тейк-профитами. |
| FixTP | Фиксированный тейк-профит — Фиксированное значение тейк-профита в пунктах. |
| FixSL | Фиксированный стоп-лосс — Фиксированное значение стоп-лосса в пунктах. |
| RealFixTP | Реальный фиксированный тейк-профит — Реальный фиксированный тейк-профит, пересчитанный с учётом текущего спреда после открытия. |
| RealFixSL | Реальный фиксированный стоп-лосс — Реальный фиксированный стоп-лосс, пересчитанный с учётом текущего спреда после открытия. |
| UseFixedStopLossAndTakeProfit | Использовать фиксированные стопы — Использование фиксированных стоп-лосса и тейк-профита для ордеров. |
| StopLoss | Стоп-лосс — Фиксированное значение стоп-лосса в пунктах. |
| TakeProfit | Тейк-профит — Фиксированное значение тейк-профита в пунктах. |
| ShirtStopLoss | Уменьшенный стоп-лосс — Автоматическое уменьшение стоп-лосса в зависимости от спреда. |
| ShirtStopLossK | Коэффициент уменьшенного стоп-лосса — Коэффициент для расчёта уменьшенного стоп-лосса. |
| CloseWhenPriceEqual | Закрытие при равенстве цены — Закрытие ордера, когда цена достигает уровня цены открытия. |
| CloseOrderDelay | Задержка закрытия ордера — Задержка в секундах перед закрытием ордера после его открытия. |
| CloseTimer | Таймер закрытия ордеров — Таймер в секундах для автоматического закрытия ордеров по времени. |
| DisableFixTP | Отключить фиксированный тейк-профит — Отключение фиксированного тейк-профита при активных фиксированных стоп-лоссах или трейлинг-стопах. |
| DisableFixSL | Отключить фиксированный стоп-лосс — Отключение фиксированного стоп-лосса при активных фиксированных тейк-профитах или трейлинг-стопах. |
| MaxAttemptsForCloseOrder | Максимум попыток закрытия — Максимальное количество попыток закрытия ордера. |
| WesternpipsSet4 | Настройки управления рисками — Группа настроек управления рисками и размером лотов. |
| RiskPercent | Процент риска — Процент риска от депозита для расчёта размера лота. |
| Lots | Размер лота — Базовый размер лота для открытия ордеров. |
| max_Lots | Максимальный лот — Максимально допустимый размер лота. |
| LotsCount | Подсчёт лотов — Режим расчёта лотов: 0 — по балансу, 1 — по эквити. |
| LotsSignalPower | Использовать мощность сигнала для лотов — Увеличение размера лота при сильном сигнале разницы котировок. |
| MaxLossOnDepositInPersent | Стоп по убытку от депозита (%) — Процент убытка от депозита, при достижении которого торговля останавливается. |
| MaxProfitOnDepositInPersent | Стоп по прибыли от депозита (%) — Процент прибыли на депозите, при достижении которого торговля останавливается. |
| MaxLossOnDepositInUsd | Стоп по убытку от депозита (USD) — Сумма убытка в валюте счёта, при достижении которой торговля останавливается. |
| StopTradingIfUnprofitableOrders | Остановка при убыточных ордерах — Остановка торговли при достижении лимита убыточных ордеров подряд. |
| MaxUnprofitableOrders | Максимум убыточных ордеров подряд — Максимальное количество убыточных ордеров подряд до остановки торговли. |
| WesternpipsSet5 | Настройки контроля проскальзывания — Группа настроек контроля проскальзывания. |
| OrderOpenSlippage | Проскальзывание при открытии — Допустимое проскальзывание при открытии ордеров в пунктах. |
| OrderCloseSlippage | Проскальзывание при закрытии — Допустимое проскальзывание при закрытии ордеров в пунктах. |
| StopTradingSlippage | Остановка при проскальзывании — Остановка торговли при отрицательном проскальзывании при открытии. |
| StopTradingIfMaxSlippage | Остановка при максимальном проскальзывании — Остановка торговли при превышении максимального проскальзывания. |
| MaxSlippage | Максимальное проскальзывание — Максимально допустимое проскальзывание в пунктах для остановки торговли. |
| UseDynamicSlippage | Динамическое проскальзывание — Включение динамического расчёта проскальзывания при открытии ордеров. |
| DynamicSlippageCoefficient | Коэффициент динамического проскальзывания — Коэффициент для расчёта динамического проскальзывания при открытии ордеров. |
| WesternpipsSet6 | Настройки контроля исполнения — Группа настроек контроля времени исполнения ордеров. |
| UseMaxOpenOrderExecutionTime | Контроль времени открытия — Включение контроля времени открытия ордера. |
| MaxOpenOrderExecutionTime | Максимальное время открытия — Максимально допустимое время открытия ордера в миллисекундах. |
| UseMaxCloseOrderExecutionTime | Контроль времени закрытия — Включение контроля времени закрытия ордера. |
| MaxCloseOrderExecutionTime | Максимальное время закрытия — Максимально допустимое время закрытия ордера в миллисекундах. |
| WesternpipsSet7 | Настройки контроля спреда — Группа настроек контроля спреда при открытии и закрытии. |
| MinSpreadOpenUse | Использовать минимальный спред для открытия — Включение контроля минимального спреда при открытии ордеров. |
| MinSpreadOpen | Минимальный спред для открытия — Минимально допустимый спред для открытия ордеров. |
| MaxSpreadOpenUse | Использовать максимальный спред для открытия — Включение контроля максимального спреда при открытии ордеров. |
| MaxSpreadOpen | Максимальный спред для открытия — Максимально допустимый спред для открытия ордеров. |
| MinSpreadCloseUse | Использовать минимальный спред для закрытия — Включение контроля минимального спреда при закрытии ордеров. |
| MinSpreadClose | Минимальный спред для закрытия — Минимально допустимый спред для закрытия ордеров. |
| MaxSpreadCloseUse | Использовать максимальный спред для закрытия — Включение контроля максимального спреда при закрытии ордеров. |
| MaxSpreadClose | Максимальный спред для закрытия — Максимально допустимый спред для закрытия ордеров. |
| WesternpipsSet8 | Настройки комиссии — Группа настроек комиссии. |
| OrderCommissionCheck | Проверка комиссии ордера — Автоматическая проверка и расчёт комиссии символа через тестовый ордер. |
| ManualComission | Ручная комиссия — Ручное задание комиссии вместо автоматического расчёта. |
| ComissionInPips | Комиссия в пунктах — Размер комиссии в пунктах, используемый при ручном задании комиссии. |
| WesternpipsSet9 | Настройки трейлинг-стопа — Группа настроек трейлинг-стопа. |
| UseTrailingStop | Использовать трейлинг-стоп — Включение обычного трейлинг-стопа для открытых позиций. |
| TrailingStop | Расстояние трейлинг-стопа — Расстояние до стоп-лосса для обычного трейлинг-стопа в пунктах. |
| TrailingStep | Шаг трейлинг-стопа — Шаг пересчёта уровня стоп-лосса при обычном трейлинг-стопе в пунктах. |
| UseVirtualTrailingStop | Использовать виртуальный трейлинг-стоп — Включение виртуального трейлинг-стопа с визуальным отображением уровня на графике. |
| VirtualTrailingStop | Расстояние виртуального трейлинг-стопа — Расстояние до виртуального стоп-лосса в пунктах. |
| VirtualTrailingStep | Шаг виртуального трейлинг-стопа — Шаг пересчёта уровня виртуального стоп-лосса в пунктах. |
| WesternpipsSet10 | Дополнительные настройки — Группа дополнительных настроек отображения и звуковых оповещений. |
| ShowGraf | Показать графику — Отображение информационной панели и линий котировок на графике. |
| ShowPriceLabel | Показать ценовые метки — Отображение ценовых меток при генерации торговых сигналов. |
| ShowAsk | Показать Ask — Отображение линии Ask внешнего источника котировок на графике. |
| ShowLog | Показать журнал — Вывод информационных и отладочных сообщений в журнал. |
| SoundSignal | Звуковой сигнал — Воспроизведение звукового сигнала при открытии ордера. |
| UseTerminalSleepInMilliseconds | Использовать задержку терминала — Включение задержки между циклами обработки тиков для снижения нагрузки. |
| TerminalSleepInMilliseconds | Задержка терминала — Задержка в миллисекундах между циклами обработки тиков. |
| WesternpipsSet11 | Настройки времени торгов — Группа настроек временных ограничений торговой сессии. |
| TimeCount | Источник времени — Источник времени для торговых ограничений: 0 — серверное время MT4, 1 — локальное ПК, 2 — GMT. |
| UseTimer | Использовать таймер торгового времени — Включение временных ограничений торговой сессии. |
| StartHour | Час начала торгов — Час начала торговой сессии. |
| StartMinutes | Минута начала торгов — Минута начала торговой сессии. |
| StartSeconds | Секунда начала торгов — Секунда начала торговой сессии. |
Поиск по коду файла
#property strict
string g_expert_ver = "Newest PRO 3.7 Exclusive Classic";
#property description "Professional Forex Expert Advisor Newest PRO 3.7 Exclusive Classic"
#property description "Newest PRO 3.7 Exclusive Classic Author and developer:"
#property description "SERGEY & WESTERNPIPS GROUP"
#property description "Mail to: w*********s*@gmail.com"
#property description "Skype to: westernpips.com"
#property description "All Rights Reserved by "
#import "Newest_PRO_3.7_Exclusive.dll"
void getRatesSaxo(uchar & _rateCode[], double&, double&);
void getRatesLmax(uchar & _rateCode[], double&, double&);
void getRatesRithmic(uchar & _rateCode[], double&, double&);
void getRatesCQG(uchar & _rateCode[], double&, double&);
#import
#define OF_READWRITE 2
#import "kernel32.dll"
int _lcreat (uchar& [], int );
int _lwrite (int handle, uchar& [], int bytes);
int _lclose (int handle);
int CreateDirectoryA(uchar& [], int& []);
#import
extern string WesternpipsSet1="<<< FAST DATA FEED OPTIONS >>>";
extern string WesternpipsSet1_1="0-Saxo; 1-Lmax; 2-CQG; 3-Rithmic;";
extern int ModeOfQuotes=3;
extern bool UseSymbCode = false;
extern string SymbCode="FDAX0616";
extern bool SymbReturn = false;
extern bool AvtoShiftBid = true;
extern double ShiftAsk = 0;
extern double ShiftBid = 0;
extern string WesternpipsSet2="<<< OPEN ORDERS SETTINGS >>>";
extern double MinimumLevel = 1;
extern double MinGapForOpen = 0;
extern bool UseDynamicMinimumLevel = false;
extern double DynamicMinimumLevelSpreadCoefficient = 0.7;
extern int SignalMode=1;
extern bool AvtoSettings = true;
extern bool AvarageSpreadUse = true;
extern bool TradeByPendingOrders = true;
extern double DistanceForPendingOrdersInPips=0;
extern int PendingOrdersLifeTime=5;
extern int OrdersOpenIntervalMs = 0;
extern int MaxAttemptsForOpenOrder = 3;
extern int NTrades = 3;
extern int Magic=0;
extern bool ShowCommentsInOrder=true;
extern string EAComment="";
extern string TradeSideSet="0-Both;1-Buy;2-Sell";
extern int TradeSide=0;
extern string WesternpipsSet3="<<< CLOSE ORDERS SETTINGS >>>";
extern double FixTP =0.1;
extern double FixSL = 1;
extern bool RealFixTP = false;
extern bool RealFixSL = false;
extern bool UseFixedStopLossAndTakeProfit = true;
extern double StopLoss = 10;
extern double TakeProfit = 100;
input bool ShirtStopLoss = false;
input double ShirtStopLossK = 2;
extern bool CloseWhenPriceEqual = false;
extern int CloseOrderDelay = 0;
extern int CloseTimer = 0;
extern bool DisableFixTP=false;
extern bool DisableFixSL=false;
extern int MaxAttemptsForCloseOrder = 3;
extern string WesternpipsSet4="<<< RISK MANAGMENT >>>";
extern double RiskPercent = 0;
extern double Lots=0.01;
extern double max_Lots=9;
extern string LotsCountSet="Lots Count: 0-Balanse; 1-Equity";
extern int LotsCount = 0;
extern bool LotsSignalPower = false;
extern double MaxLossOnDepositInPersent=10;
extern double MaxProfitOnDepositInPersent=0;
extern double MaxLossOnDepositInUsd = 0;
extern bool StopTradingIfUnprofitableOrders = false;
extern int MaxUnprofitableOrders = 3;
extern string WesternpipsSet5="<<< CONTROL SLIPPAGE PLUG-IN >>>";
input int OrderOpenSlippage = 0;
input int OrderCloseSlippage = 0;
extern bool StopTradingSlippage=false;
extern bool StopTradingIfMaxSlippage=false;
extern int MaxSlippage=100;
extern bool UseDynamicSlippage = false;
extern double DynamicSlippageCoefficient = 1.2;
extern string WesternpipsSet6="<<< CONTROL EXECUTION PLUG-IN >>>";
extern bool UseMaxOpenOrderExecutionTime=false;
extern int MaxOpenOrderExecutionTime=1000;
extern bool UseMaxCloseOrderExecutionTime=false;
extern int MaxCloseOrderExecutionTime=1000;
extern string WesternpipsSet7="<<< SPREAD CONTROL TOOLS >>>";
extern bool MinSpreadOpenUse = false;
extern double MinSpreadOpen=1;
extern bool MaxSpreadOpenUse = false;
extern double MaxSpreadOpen=50;
extern bool MinSpreadCloseUse = false;
extern double MinSpreadClose=1;
extern bool MaxSpreadCloseUse = false;
extern double MaxSpreadClose=50;
extern string WesternpipsSet8="<<< COMMISSION SETTINGS >>>";
extern bool OrderCommissionCheck=false;
extern bool ManualComission=false;
extern double ComissionInPips=1;
extern string WesternpipsSet9="<<< TRAILING STOP SETTINGS >>>";
extern bool UseTrailingStop = false;
extern double TrailingStop = 1;
extern double TrailingStep = 1;
extern bool UseVirtualTrailingStop = false;
extern double VirtualTrailingStop = 1;
extern double VirtualTrailingStep = 1;
extern string WesternpipsSet10="<<< ADDITIONAL SETTINGS >>>";
extern bool ShowGraf=true;
extern bool ShowPriceLabel = false;
extern bool ShowAsk = false;
extern bool ShowLog=true;
extern bool SoundSignal = false;
extern bool UseTerminalSleepInMilliseconds=true;
extern int TerminalSleepInMilliseconds=20;
extern string WesternpipsSet11="<<< TIME OF TRADING SETTINGS >>>";
extern string TimeSet="0-Mt4ServerTime;1-LocalPCTime;2-GMT";
extern int TimeCount = 1;
extern bool UseTimer = false;
extern int StartHour = 10;
extern int StartMinutes = 41;
extern int StartSeconds = 00;
extern int StopHour = 10;
extern int StopMinutes = 42;
extern int StopSeconds = 00;
string lmaxtexta="";
int traltime=0;
int traltime2=0;
double BuyClosePrice=0;
double SellClosePrice=0;
color ColorQuotes;
string QText="";
double LastCloseSlippage=0;
double LastGap=0;
double LastOpenSlippage=0;
int LastCloseTime=0;
int LastOpenTime=0;
double PriceCloseSell=0;
int CloseTicketSell=0;
double CloseSellPr=0;
double CloseSellSlippage=0;
double PriceCloseBuy=0;
int CloseTicket=0;
double CloseBuyPr=0;
double CloseBuySlippage=0;
int TimeEnd=0;
int MagicTest=0;
int cnt=0;
double SymbolComissionInPips=0;
double averageAskSum = 0;
double averageBidSum = 0;
double averageAskCount = 0;
double averageBidCount = 0;
double averageSpreadSum = 0;
double averageSpreadCount = 0;
double LmaxAsk=0;
double LmaxBid=0;
double LmaxGapAsk=0;
double LmaxGapBid=0;
bool NewLmaxAsk=0;
bool NewLmaxBid=0;
double LmaxAskOld=0;
double LmaxBidOld=0;
double Mt4Ask=0;
double Mt4Bid=0;
double Mt4GapAsk=0;
double Mt4GapBid=0;
bool NewMt4Ask=0;
bool NewMt4Bid=0;
double Mt4AskOld=0;
double Mt4BidOld=0;
double GapBuy=0;
double GapSell=0;
bool tradeLmax=true;
double SaxoAsk=0;
double SaxoBid=0;
double pp=0;
double margin=0;
double spread=0;
double spread2=0;
double dLot=0;
double LOTSTEP=0;
double MINLOT=0;
double MAXLOT=0;
double bid_pr=0;
double ask_pr=0;
double fx=0;
double StopLoss2=0;
double TakeProfit2=0;
double StepTP2=0;
double FixSL2=0;
double FixTP2=0;
double minshag=0;
int rez=0;
int sig=0;
int sig_raz=0;
int ticket=0;
double MinLev=0;
double DepositStop=0;
double DepositStopIfProfit=0;
double TradeLot=0;
double SpreadK=1;
string comm="";
double ShiftBidBuy=0;
double ShiftBidSell=0;
string LastErrorText="";
bool SignalBuy=false;
bool SignalSell=false;
string OrderCommBuy="";
string OrderCommSell="";
double OpenBuyPrice=0;
double SlippageBuy=0;
double OpenSellPrice=0;
double SlippageSell=0;
int Bar=0;
int BarsCount=0;
int x=0;
bool StopTrading = false;
double DistancePending=0;
string text1 ="......";
string text2 ="......";
string text3 ="......";
string text4 ="......";
color col1 = White;
color col2 = White;
color col3 = White;
color col4 = White;
datetime LastOrderTime = 0;
double PriceCloseSellTral=0;
double PriceCloseBuyTral=0;
bool StopTradindSlip = false;
double PrCloseBuy =0 ;
double PrCloseSell=0 ;
bool buy111=0;
bool sell111=0;
int step1=0;
int step2=0;
int step1old=0;
int step2old=0;
int ReadCodeStep=0;
int ReadCodeTime=0;
int ReadCodeTimeEnd=0;
int ReadCodeTimeSumm=0;
int AvReadCodeTime =0;
bool NewTickDel = true;
double Eq = 0;
string Instrument="";
int att=0;
int LastLmaxTickTime=0;
int LmaxTickTime=0;
int LastMt4TickTime=0;
int Mt4TickTime=0;
double LmaxBidCount =0;
bool ShowPanel=false;
string comm11="";
int LactCheckTime=0;
int StepCheck=0;
int CheckNextTime=0;
int OldTickCount=0;
bool ShowErrorPanel=false;
int t2=0;
double OrdOpenSlippage=0;
string Commento="";
int ticketSell=0;
int ticketBuy=0;
int t1=0;
int t3=0;
double PendingOrderOpenPriseBuy=0;
double PendingOrderOpenPriseSell=0;
bool SignalFromMt4 = false;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
Comment("");
ObjectsDeleteAll();
}
void OnTick()
{
// код доступен только после оплаты
}
if(IsWorkingHours()==false&&UseTimer){LastErrorText=""; tradeLmax=false; LastErrorText=LastErrorText+"Trade Was Stopped, Not working hours! Can change UseTimer in EA settings and start EA again!"; StopTrading = true;}
if(IsWorkingHours()==true&&UseTimer){tradeLmax=true; StopTrading = false;}
if (StopTrading == true)
{
Comment("");
ObjectsDeleteAll();
ShowErrorsPanel();
}
while(IsStopped()==false && StopTrading == false)
{
LastErrorText="";
ReadCodeTime=GetTickCount();
comm="";
if (StopTrading == false) {tradeLmax=true;}
SignalBuy=false;
SignalSell=false;
if(AccountInfoDouble(ACCOUNT_BALANCE)<=DepositStop&&MaxLossOnDepositInPersent>0) {tradeLmax=false; LastErrorText=LastErrorText+"Trade Was Stopped, Big Drawdown > " +MaxLossOnDepositInPersent+" %!" +" Can change RiskDeposit in EA settings and start EA again!" ; StopTrading = true;}
if(AccountInfoDouble(ACCOUNT_BALANCE)>=DepositStopIfProfit&&MaxProfitOnDepositInPersent>0){tradeLmax=false;LastErrorText=LastErrorText+"Trade Was Stopped, Big Profit > "+MaxProfitOnDepositInPersent+" %!"+" Can change ProfitInDay in EA settings and start EA again!"; StopTrading = true;}
if (MarketInfo(Symbol(),MODE_SPREAD)<MinSpreadOpen&&MinSpreadOpenUse==true) {tradeLmax=false; LastErrorText=LastErrorText+"Trade is disabled, Spread = "+DoubleToString(NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD),2),2)+" pips is low than MinSpreadOpen = " +DoubleToString(MinSpreadOpen,2)+" pips!"+" Can change MinSpreadOpen in EA settings and start EA again!";}
if (MarketInfo(Symbol(),MODE_SPREAD)>MaxSpreadOpen&&MaxSpreadOpenUse==true) {tradeLmax=false; LastErrorText=LastErrorText+"Trade is disabled, Spread = "+DoubleToString(NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD),2),2)+" pips is big than MaxSpreadOpen = " +DoubleToString(MaxSpreadOpen,2)+" pips!"+" Can change MaxSpreadOpen in EA settings and start EA again!";}
if(UseMaxOpenOrderExecutionTime){if (LastOpenTime>MaxOpenOrderExecutionTime) {tradeLmax =false;LastErrorText=LastErrorText+"Trade Was Stopped, Big Open Order Execution = "+DoubleToString(LastOpenTime,0)+" ms!" +" Can change MaxOpenOrderExecutionTime in EA settings and start EA again!"; StopTrading = true; }}
if(UseMaxCloseOrderExecutionTime){if (LastCloseTime>MaxCloseOrderExecutionTime) {tradeLmax =false; LastErrorText=LastErrorText+"Trade Was Stopped, Big Close Order Execution = "+DoubleToString(LastCloseTime,0)+" ms!" +" Can change MaxCloseOrderExecutionTime in EA settings and start EA again!"; StopTrading = true;}}
if(StopTradingIfMaxSlippage){if(LastOpenSlippage < -MaxSlippage){tradeLmax = false;LastErrorText=LastErrorText+"Trade Was Stopped, Big Order Open Slippage = "+DoubleToString(LastOpenSlippage,0)+" pips!" +" Can change StopTradingIfMaxSlippage in EA settings and start EA again!"; StopTrading = true;}}
if(StopTradingIfMaxSlippage){if(LastCloseSlippage < -MaxSlippage){tradeLmax = false;LastErrorText=LastErrorText+"Trade Was Stopped, Big Order Close Slippage = "+DoubleToString(LastCloseSlippage,0)+" pips!" +" Can change StopTradingIfMaxSlippage in EA settings and start EA again!"; StopTrading = true;}}
if (StopTradindSlip==true) {tradeLmax = false;LastErrorText=LastErrorText+"Trade Was Stopped, Big Order Open Slippage = "+DoubleToString(LastOpenSlippage,0)+" pips!" +" Can change StopTradingSlippage in EA settings and start EA again!"; StopTrading = true;}
if(IsWorkingHours()==false&&UseTimer){tradeLmax=false; LastErrorText=LastErrorText+"Trade Was Stopped, Not working hours! Can change UseTimer in EA settings and start EA again!"; StopTrading = true;}
bool selh;
double historyprofitsell;
double historyprofitbuy;
double historyprofit=0;
int totalloss=0;
if (OrdersHistoryTotal() > 0)
{
for (int yh = 0; yh < OrdersHistoryTotal(); yh++)
{
selh=OrderSelect (yh, SELECT_BY_POS, MODE_HISTORY);
if(OrderMagicNumber()==Magic||OrderMagicNumber()==MagicTest)
{
if(OrderType()==OP_BUY||OrderType()==OP_SELL)
{
historyprofit=historyprofit+OrderProfit()+OrderCommission();
}
}
}
}
if(historyprofit < - MaxLossOnDepositInUsd && MaxLossOnDepositInUsd>0) {tradeLmax=false; GapSell=0;GapBuy=0; LastErrorText=LastErrorText+"Trade Was Stopped, Big Drawdown = "+DoubleToString(historyprofit,2)+" "+AccountCurrency()+", more than MaxLossOnDepositInUsd = "+MaxLossOnDepositInUsd+" "+AccountCurrency()+" ! Can change MaxLossOnDepositInUsd in EA settings and start EA again!"; StopTrading = true;}
if (StopTradingIfUnprofitableOrders && IsLastOrdersUnprofitable(Magic, MaxUnprofitableOrders)){tradeLmax=false; GapSell=0;GapBuy=0; LastErrorText=LastErrorText+" Trade Was Stopped, "+MaxUnprofitableOrders +" unprofitable orders in a row! Can change MaxUnprofitableOrders in EA settings and start EA again!"; StopTrading = true;}
LmaxAsk = 0;
LmaxBid = 0;
LmaxBidCount = 0;
char curr[1000];
string Instrument = StringSubstr(Symbol(),0,6);
if(ModeOfQuotes==0)
{
if(UseSymbCode==true)
{
StringToCharArray(SymbCode,curr);
getRatesSaxo(curr,LmaxAsk,LmaxBid);
}
else
{
StringToCharArray(Instrument,curr);
getRatesSaxo(curr,LmaxAsk,LmaxBid);
}
}
if(ModeOfQuotes==1)
{
if(UseSymbCode==true)
{
StringToCharArray(SymbCode,curr);
getRatesLmax(curr,LmaxAsk,LmaxBid);
}
else
{
StringToCharArray(Instrument,curr);
getRatesLmax(curr,LmaxAsk,LmaxBid);
}
}
if(ModeOfQuotes==2)
{
if(UseSymbCode==true)
{
StringToCharArray(SymbCode,curr);
getRatesCQG(curr,LmaxAsk,LmaxBid);
}
else
{
StringToCharArray(Instrument,curr);
getRatesCQG(curr,LmaxAsk,LmaxBid);
}
}
if(ModeOfQuotes==3)
{
if(UseSymbCode==true)
{
StringToCharArray(SymbCode,curr);
getRatesRithmic(curr,LmaxAsk,LmaxBid);
}
else
{
StringToCharArray(Instrument,curr);
getRatesRithmic(curr,LmaxAsk,LmaxBid);
}
}
if(SymbReturn==true)
{
LmaxAsk=1/LmaxAsk;
LmaxBid=1/LmaxBid;
}
if(SymbCode==""&&UseSymbCode==true)
{
tradeLmax=false;
LmaxAsk = 0;
LmaxBid = 0;
LastErrorText=LastErrorText+"Trade Was Stopped, SymbCode Error! Can change SymbCode to "+Symbol()+" in EA settings and start EA again!"+ "\n";
StopTrading = true;
}
if(LmaxBid==-1||LmaxBid<=0)
{
tradeLmax=false; GapBuy=0;GapSell=0; LastErrorText=LastErrorText+ "Trade is disabled, error of "+QText+" data feed connection!Please check TradeMonitor programm!";
ObjectDelete("QBid");
ObjectDelete("QText");
ObjectDelete("QAsk");
ObjectDelete("QAText");
ObjectSetText("dfsymb", "Spread: 0 ", 9, "Arial", White);
ObjectSetText("lmaxask", "Disconnected ", 9, "Arial", Red);
ObjectSetText("lmaxbid", "Disconnected ", 9, "Arial", Red);
ObjectSetString(0,"GapSell", OBJPROP_TEXT,DoubleToString(GapSell, 1));
ObjectSetString(0,"GapBuy", OBJPROP_TEXT,DoubleToString(GapBuy, 1));
}
if(LmaxAsk==-1||LmaxAsk<=0)
{
tradeLmax=false; GapBuy=0;GapSell=0;
}
pp = MarketInfo(Symbol(),MODE_POINT);
if(AvtoSettings == false)
{
if (pp == 0.001) {pp=0.01;}
if (pp == 0.00001) {pp=0.0001;}
}
Mt4Ask=MarketInfo(Symbol(),MODE_ASK);
Mt4Bid=MarketInfo(Symbol(),MODE_BID);
spread2 = (NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits)-NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits))/pp;
if (AvarageSpreadUse==true)
{
averageSpreadSum += spread2;
averageSpreadCount ++;
spread=NormalizeDouble((averageSpreadSum /averageSpreadCount),2);
}
else {spread=spread2;}
LmaxBid=NormalizeDouble(LmaxBid,Digits);
LmaxBidCount=LmaxBid;
if(tradeLmax==true && LmaxBidOld > 0)
{
if(LmaxAskOld!=LmaxAsk)
{
if(LmaxAskOld!=0){LmaxGapAsk=(LmaxAsk-LmaxAskOld)/pp;}
LmaxAskOld=LmaxAsk;
NewLmaxAsk=true;
}
if(LmaxBidOld!=LmaxBid)
{
if(LmaxBidOld!=0){LmaxGapBid=(LmaxBid-LmaxBidOld)/pp;}
if(LastLmaxTickTime>0) {LmaxTickTime = GetTickCount() - LastLmaxTickTime;}
LastLmaxTickTime = GetTickCount();
LmaxBidOld=LmaxBid;
NewLmaxBid=true;
}
if(Mt4AskOld!=Mt4Ask)
{
if(Mt4AskOld!=0){Mt4GapAsk=(Mt4Ask-Mt4AskOld)/pp;}
Mt4AskOld=Mt4Ask;
NewMt4Ask=true;
}
if(Mt4BidOld!=Mt4Bid)
{
if(Mt4BidOld!=0){Mt4GapBid=(Mt4Bid-Mt4BidOld)/pp;}
Mt4BidOld=Mt4Bid;
NewMt4Bid=true;
if(LastMt4TickTime>0) {Mt4TickTime = GetTickCount() - LastMt4TickTime;}
LastMt4TickTime = GetTickCount();
}
if(AvtoShiftBid==false)
{
if(SignalMode==0)
{
ShiftBidBuy=ShiftAsk;
ShiftBidSell=ShiftBid;
LmaxAsk=LmaxAsk+ShiftAsk*pp;
LmaxBid=LmaxBid+ShiftBid*pp;
GapBuy=(LmaxBid-Mt4Bid)/pp;
GapSell=(LmaxBid-Mt4Bid)/pp;
}
if(SignalMode==1)
{
ShiftBidBuy=ShiftAsk;
ShiftBidSell=ShiftBid;
LmaxAsk=LmaxAsk+ShiftAsk*pp;
LmaxBid=LmaxBid+ShiftBid*pp;
GapBuy=(LmaxBid-Mt4Ask)/pp;
GapSell=(LmaxAsk-Mt4Bid)/pp;
}
}
if(AvtoShiftBid==true)
{
if(SignalMode==0)
{
averageAskSum += (LmaxBid - Mt4Bid )/pp;
averageAskCount ++;
GapBuy=(LmaxBid-Mt4Bid)/pp-(averageAskSum /averageAskCount);
averageBidSum += (LmaxBid-Mt4Bid)/pp;
averageBidCount ++;
GapSell=(LmaxBid-Mt4Bid)/pp-(averageBidSum /averageBidCount);
ShiftBidBuy=averageAskSum /averageAskCount;
ShiftBidSell=averageBidSum /averageBidCount;
LmaxAsk=LmaxAsk-ShiftBidBuy*pp;
LmaxBid=LmaxBid-ShiftBidSell*pp;
}
if(SignalMode==1)
{
averageAskSum += (LmaxBid - Mt4Ask )/pp;
averageAskCount ++;
GapBuy=(LmaxBid-Mt4Ask)/pp-(averageAskSum /averageAskCount);
averageBidSum += (LmaxAsk-Mt4Bid)/pp;
averageBidCount ++;
GapSell=(LmaxAsk-Mt4Bid)/pp-(averageBidSum /averageBidCount);
ShiftBidBuy=averageAskSum /averageAskCount;
ShiftBidSell=averageBidSum /averageBidCount;
LmaxAsk=LmaxAsk-ShiftBidBuy*pp;
LmaxBid=LmaxBid-ShiftBidSell*pp;
}
}
if (CloseWhenPriceEqual == true)
{
if(SignalMode==0)
{
BuyClosePrice=LmaxBid;
SellClosePrice=LmaxBid;
}
if(SignalMode==1)
{
BuyClosePrice=LmaxBid;
SellClosePrice=LmaxAsk;
}
}
GetLotSize();
if(LotsSignalPower)
{
if(LmaxGapBid>=(MinLev)&&NewMt4Bid==true){TradeLot=Lots+Lots;}
if(LmaxGapBid>=(MinLev)&&NewMt4Bid==false){TradeLot=Lots+Lots+Lots;}
if(LmaxGapBid>=(MinLev)&&GapBuy>= (MinLev)*2&&GapBuy<= (MinLev)*3){TradeLot=Lots+Lots;}
if(LmaxGapBid>=(MinLev)&&GapBuy>= (MinLev)*3){TradeLot=Lots+Lots+Lots;}
if(LmaxGapBid>=(MinLev)&&GapSell>= (MinLev)*2&&GapSell<= (MinLev)*3){TradeLot=Lots+Lots;}
if(LmaxGapBid>=(MinLev)&&GapSell>= (MinLev)*3){TradeLot=Lots+Lots+Lots;}
}
else
{
TradeLot=Lots;
}
}
else
{
GapBuy=0;
GapSell=0;
}
if(OrderCommissionCheck)
{
MagicTest=180987;
double MinLot=MarketInfo(Symbol(),MODE_MINLOT);
if(TotalHistoryOrder()==0&&TotalOrderTest()==0)
{
ticket=OrderSend(Symbol(),OP_BUY,MinLot,Ask,0,0,0,"OrderComissionCheck",MagicTest,0,MediumBlue);
int select;
int close;
if (OrdersTotal() > 0)
{
for(int g=0;g<OrdersTotal();g++)
{
select=OrderSelect(g, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol() && OrderMagicNumber() == MagicTest)
{
close=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0);
}
}
}
}
if(SymbolComissionInPips==0)
{
int select2;
for(int g2=0;g2<OrdersHistoryTotal();g2++)
{
select2=OrderSelect(g2, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol()==Symbol() && OrderMagicNumber() == MagicTest)
{
SymbolComissionInPips= MathAbs(NormalizeDouble(OrderCommission() / (OrderLots()*MarketInfo(Symbol(),MODE_TICKVALUE)),0));
SymbolComissionInPips=SymbolComissionInPips*Point/pp;
}
}
}
}
if(AvtoSettings==false){SpreadK=1;}
else{SpreadK=spread;}
if(ManualComission==true){SymbolComissionInPips=ComissionInPips;}
if(OrderCommissionCheck==false&&ManualComission==false){SymbolComissionInPips=0;}
MinLev=NormalizeDouble((MinimumLevel*SpreadK+spread),1)+SymbolComissionInPips;
if (RealFixTP ==false) {FixTP2=FixTP*SpreadK+SymbolComissionInPips; }
if (RealFixSL ==false) {FixSL2=FixSL*SpreadK+spread;}
TakeProfit2=TakeProfit*SpreadK+SymbolComissionInPips;
StopLoss2=StopLoss*SpreadK+spread;
double LmaxSpread=(LmaxAsk-LmaxBid)/pp;
if (UseDynamicMinimumLevel)
{
MinLev = MathAbs(spread - LmaxSpread)/2 + MathAbs(spread - LmaxSpread) * DynamicMinimumLevelSpreadCoefficient+SymbolComissionInPips;
if(AvtoSettings==true)
{
if (RealFixTP ==false) {FixTP2=(FixTP*MinLev+SymbolComissionInPips)-MinLev/3; }
if (RealFixSL ==false) {FixSL2=(FixSL*MinLev+spread)-MinLev/3;}
TakeProfit2=TakeProfit*MinLev+SymbolComissionInPips;
StopLoss2=StopLoss*MinLev;
}
}
if(TradeByPendingOrders)
{
if(DistanceForPendingOrdersInPips<=MarketInfo(Symbol(),MODE_STOPLEVEL)){DistancePending=MarketInfo(Symbol(),MODE_STOPLEVEL);}
else{DistancePending=DistanceForPendingOrdersInPips;}
for (int z1=0; z1<OrdersTotal(); z1++)
{
if (OrderSelect(z1, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
int ordertime = TimeCurrent()-OrderOpenTime();
if(OrderType()==OP_BUYSTOP){if( ordertime > PendingOrdersLifeTime) {OrderDelete(OrderTicket(),Green); if(ShowLog) Print("!!! Pending Order BuyStop was canceled, becouse PendingOrdersLifeTime expired. " +"PendingOrdersLifeTime = " +PendingOrdersLifeTime + " seconds");}}
if(OrderType()==OP_SELLSTOP){if(ordertime > PendingOrdersLifeTime) {OrderDelete(OrderTicket(),Red); if(ShowLog) Print("!!! Pending Order SellStop was canceled, becouse PendingOrdersLifeTime expired. " +"PendingOrdersLifeTime = " +PendingOrdersLifeTime + " seconds");}}
}
}
}
}
ticketSell=0;
ticketBuy=0;
SignalFromMt4 = false;
if (NewMt4Bid==true&&MathAbs(Mt4GapBid) >= MinLev) {SignalFromMt4 == true;}
if (NewMt4Ask==true&&MathAbs(Mt4GapAsk) >= MinLev) {SignalFromMt4 == true;}
Eq = AccountEquity();
int ordertime=0;
int pendingordertime=0;
int pendingorderticket=0;
bool stopseach=false;
if(GapBuy >= (MinLev) && NewLmaxBid==true && LmaxBidOld>0 && TotalOrder(Magic)<NTrades && tradeLmax==true && GetTickCount() - LastOrderTime > OrdersOpenIntervalMs && SignalFromMt4==false)
{
if(GapBuy > MinGapForOpen && GapBuy > spread)
{
SignalBuy=true;
if (UseDynamicSlippage)
{
if(SignalMode==0) OrdOpenSlippage = MathAbs((LmaxBid - Mt4Bid - (MathAbs(spread - LmaxSpread)/2) * DynamicSlippageCoefficient - FixTP2)/pp);
if(SignalMode==1) OrdOpenSlippage = MathAbs((LmaxBid - Mt4Ask - (MathAbs(spread - LmaxSpread)/2) * DynamicSlippageCoefficient - FixTP2)/pp);
}
else { OrdOpenSlippage = OrderOpenSlippage;}
if(ShowCommentsInOrder)
{
Commento="G"+DoubleToString(GapBuy,1)+" Ma"+DoubleToString(Mt4Ask,5)+" "+OrderCommBuy+"b"+DoubleToString(LmaxBid,5);
Commento=StringSubstr(Commento, 0, 26);
if (EAComment!="") {Commento=EAComment;}
}
else {Commento="";}
if (CloseWhenPriceEqual) {Commento=DoubleToString(BuyClosePrice,Digits);}
int Attempt = 0;
while(Attempt <= MaxAttemptsForOpenOrder && !OrderSelect(ticketBuy,SELECT_BY_TICKET,MODE_TRADES) )
{
if(TradeSide==0||TradeSide==1)
{
if(TradeByPendingOrders)
{
PendingOrderOpenPriseBuy=MarketInfo(Symbol(),MODE_ASK)+DistancePending*pp;
t1=GetTickCount();
ticketBuy=OrderSend(Symbol(),OP_BUYSTOP,TradeLot,MarketInfo(Symbol(),MODE_ASK)+DistancePending*pp,0,0,0,Commento,Magic,0,MediumBlue);
}
else
{
t1=GetTickCount();
ticketBuy=OrderSend(Symbol(),OP_BUY,TradeLot,MarketInfo(Symbol(),MODE_ASK),MathAbs(OrdOpenSlippage),0,0,Commento,Magic,0,MediumBlue);
}
}
if(!OrderSelect(ticketBuy,SELECT_BY_TICKET,MODE_TRADES))
{
Attempt++;
if(ShowLog)Print("!!! Error Open Buy "+" Attempt = " +Attempt+" "+Symbol()+" "+GetErrorDescription(GetLastError()));
}
else
{
t2=GetTickCount()-t1;
if(t1>0){LastOpenTime=t2;} else {LastOpenTime=0;}
LastGap=GapBuy;
LastOrderTime = GetTickCount();
if(TradeByPendingOrders)
{
for (int z1=0; z1<OrdersTotal(); z1++)
{
if (OrderSelect(z1, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
if(OrderType()==OP_BUYSTOP)
{
OpenBuyPrice=DoubleToStr(OrderOpenPrice(),5);
SlippageBuy=(PendingOrderOpenPriseBuy-OpenBuyPrice)/pp;
if(ShowLog)Print("!!! Pending Order BuyStop "+ticketBuy +" Attempt = " +Attempt +", at " +DoubleToString(OrderOpenPrice(),Digits)+", Gap = "+ DoubleToStr(LastGap,2)+" pips, Pending Order Time = "+DoubleToString(LastOpenTime,0)+" ms, Slippage = "+DoubleToString(SlippageBuy,2)+" pips." +" Account Equity = "+ DoubleToString(Eq,2)+" " +AccountCurrency());
pendingordertime=OrderOpenTime();
pendingorderticket=OrderTicket();
while((TimeCurrent()- pendingordertime) < PendingOrdersLifeTime && stopseach==false)
{
if(OrderSelect(pendingorderticket,SELECT_BY_TICKET,MODE_TRADES))
{
if(OrderType()==OP_BUY)
{
OpenBuyPrice=DoubleToStr(OrderOpenPrice(),5);
SlippageBuy=(PendingOrderOpenPriseBuy-OpenBuyPrice)/pp;
if(ShowLog) Print("!!! Pending Order BuyStop "+pendingorderticket+" activated at price " +DoubleToString(OpenBuyPrice,Digits)+" PendingOrderSlippage = "+DoubleToString(SlippageBuy,2)+" pips");
stopseach=true;
}
else{stopseach=false;}
}
Sleep(100);
}
}
}
}
}
}
if(OrderSelect(ticketBuy,SELECT_BY_TICKET,MODE_TRADES))
{
OpenBuyPrice=DoubleToStr(OrderOpenPrice(),5);
if(TradeByPendingOrders==false){SlippageBuy=(Mt4Ask-OpenBuyPrice)/pp;}
}
LastOpenSlippage=SlippageBuy;
if(RealFixTP) {FixTP2=GapBuy+LastOpenSlippage; if (FixTP2 < 0) {FixTP2=0.1;} if(ShowLog)Print("RealFixTP = "+DoubleToString(FixTP2,2) +" pips");}
if(RealFixSL) { if (LastOpenSlippage<0) {FixSL2=MathAbs(LastOpenSlippage);} if (LastOpenSlippage>=0) {FixSL2=FixSL*SpreadK+spread;} if(ShowLog)Print("RealFixSL = "+DoubleToString(FixSL2,2) +" pips");}
if(ShowLog && TradeByPendingOrders==false)Print("!!! Open Buy Order "+ticketBuy +" Attempt = " +Attempt +", at " +Symbol()+", Gap = "+ DoubleToStr(LastGap,2)+" pips, Open Time = "+DoubleToString(LastOpenTime,0)+" ms, Slippage = "+DoubleToString(LastOpenSlippage,2)+" pips." +" Account Equity = "+ DoubleToString(Eq,2)+" " +AccountCurrency());
if(SoundSignal){PlaySound("ok.wav");}
if (StopTradingSlippage) {if((GapBuy+LastOpenSlippage) < FixTP2) {StopTradindSlip=true;}}
SlippageBuy=0;
t2=0;
t1=0;
}
}
}
}
if( GapSell <= -(MinLev)&&NewLmaxBid==true&&LmaxBidOld>0&&TotalOrder(Magic)<NTrades&&tradeLmax==true && GetTickCount() - LastOrderTime > OrdersOpenIntervalMs&&SignalFromMt4==false)
{
if(MathAbs(GapSell) > MinGapForOpen && MathAbs(GapSell) > spread )
{
SignalSell=true;
if (UseDynamicSlippage)
{
if(SignalMode==0) OrdOpenSlippage = (LmaxBid - Mt4Bid - (MathAbs(spread - LmaxSpread)/2) * DynamicSlippageCoefficient - FixTP2)/pp;
if(SignalMode==1) OrdOpenSlippage = (LmaxAsk - Mt4Bid - (MathAbs(spread - LmaxSpread)/2) * DynamicSlippageCoefficient - FixTP2)/pp;
}
else { OrdOpenSlippage = OrderOpenSlippage;}
if(ShowCommentsInOrder)
{
Commento="G"+DoubleToString(GapSell,1)+" Mb"+DoubleToString(Mt4Bid,5)+" "+OrderCommSell+"b"+DoubleToString(LmaxBid,5);
Commento=StringSubstr(Commento, 0, 26);
if (EAComment!="") {Commento=EAComment;}
}
else {Commento="";}
if (CloseWhenPriceEqual) {Commento=DoubleToString(SellClosePrice,Digits);}
int Attempt2 = 0;
while(Attempt2 <= MaxAttemptsForOpenOrder && !OrderSelect(ticketSell,SELECT_BY_TICKET,MODE_TRADES) )
{
if(TradeSide==0||TradeSide==2)
{
if(TradeByPendingOrders)
{
PendingOrderOpenPriseSell=MarketInfo(Symbol(),MODE_BID)-DistancePending*pp;
t3=GetTickCount();
ticketSell=OrderSend(Symbol(),OP_SELLSTOP,TradeLot,MarketInfo(Symbol(),MODE_BID)-DistancePending*pp,0,0,0,Commento,Magic,0,Green);
}
else
{
t3=GetTickCount();
ticketSell=OrderSend(Symbol(),OP_SELL,TradeLot,MarketInfo(Symbol(),MODE_BID),MathAbs(OrdOpenSlippage),0,0,Commento,Magic,0,Green);
}
}
if(!OrderSelect(ticketSell,SELECT_BY_TICKET,MODE_TRADES))
{
Attempt2++;
if(ShowLog)Print("!!! Error Open Sell Order "+" Attempt = " +Attempt2+", at " +Symbol() +" " +GetErrorDescription(GetLastError()));
}
else
{
int t4=GetTickCount()-t3;
if(t3>0){LastOpenTime=t4;} else {LastOpenTime=0;}
LastGap=GapSell;
LastOrderTime = GetTickCount();
if(TradeByPendingOrders)
{
for (int z1=0; z1<OrdersTotal(); z1++)
{
if (OrderSelect(z1, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
if(OrderType()==OP_SELLSTOP)
{
OpenSellPrice=DoubleToStr(OrderOpenPrice(),5);
SlippageSell=(OpenSellPrice-PendingOrderOpenPriseSell)/pp;
if(ShowLog)Print("!!! Pending Order SellStop "+ticketSell +" Attempt = " +Attempt2 +", at " +DoubleToString(OrderOpenPrice(),Digits)+", Gap = "+ DoubleToStr(LastGap,2)+" pips, Pending Order Time = "+DoubleToString(LastOpenTime,0)+" ms, Slippage = "+DoubleToString(SlippageSell,2)+" pips." +" Account Equity = "+ DoubleToString(Eq,2)+" " +AccountCurrency());
pendingordertime=OrderOpenTime();
pendingorderticket=OrderTicket();
while((TimeCurrent()- pendingordertime) < PendingOrdersLifeTime && stopseach==false)
{
if(OrderSelect(pendingorderticket,SELECT_BY_TICKET,MODE_TRADES))
{
if(OrderType()==OP_SELL)
{
OpenSellPrice=DoubleToStr(OrderOpenPrice(),5);
SlippageSell=(OpenSellPrice-PendingOrderOpenPriseSell)/pp;
if(ShowLog) Print("!!! Pending Order SellStop "+pendingorderticket+" activated at price " +DoubleToString(OpenSellPrice,Digits)+" PendingOrderSlippage = "+DoubleToString(SlippageSell,2)+" pips");
stopseach=true;
}
else{stopseach=false;}
}
Sleep(100);
}
}
}
}
}
}
if(OrderSelect(ticketSell,SELECT_BY_TICKET,MODE_TRADES))
{
OpenSellPrice=DoubleToStr(OrderOpenPrice(),5);
if(TradeByPendingOrders==false){SlippageSell=(OpenSellPrice-Mt4Bid)/pp;}
}
LastOpenSlippage=SlippageSell;
if(RealFixTP) {FixTP2=NormalizeDouble((MathAbs(GapSell)+LastOpenSlippage),2); if (FixTP2 < 0) {FixTP2=0.1;} if(ShowLog)Print("RealFixTP = "+DoubleToString(FixTP2,2) +" pips");}
if(RealFixSL) {if (LastOpenSlippage<0) {FixSL2=NormalizeDouble(LastOpenSlippage,2); } if (LastOpenSlippage>=0){FixSL2=FixSL*SpreadK+spread;} if(ShowLog)Print("RealFixSL = "+DoubleToString(FixSL2,2) +" pips");}
if(ShowLog && TradeByPendingOrders==false)Print("!!! Open Sell Order "+ticketSell+" Attempt = "+Attempt2 +", at "+Symbol()+", Gap = "+ DoubleToStr(LastGap,2)+" pips, Open Time = "+DoubleToString(LastOpenTime,0)+" ms, Slippage= "+DoubleToString(LastOpenSlippage,2)+" pips." +" Account Equity = "+ DoubleToString(Eq,2)+" " +AccountCurrency());
if(SoundSignal){PlaySound("ok.wav");}
if (StopTradingSlippage) {if((MathAbs(GapSell)+LastOpenSlippage) < FixTP2) {StopTradindSlip=true;}}
SlippageSell=0;
t3=0;
t4=0;
}
}
}
}
if (LastOpenTime>350){text1="Bad Ping"; col1 = Red;}
if (LastOpenTime<=350){text1="Ping OK"; col1 = Lime;}
if (LastOpenSlippage>=0){text2="Positive"; col2 = Lime;}
if (LastOpenSlippage<0){text2="Negative"; col2 = Red;}
if (LastCloseTime>350){text3="Bad Ping"; col3 = Red;}
if (LastCloseTime<=350){text3="Ping OK"; col3 = Lime;}
if (LastCloseSlippage>=0){text4="Positive"; col4 = Lime;}
if (LastCloseSlippage<0){text4="Negative"; col4 = Red;}
if(ShirtStopLoss)
{
StopLoss2=spread*ShirtStopLossK;
}
minshag = (MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)/pp;
if(StopLoss2<=minshag) {StopLoss2=minshag+spread; if(minshag==0){StopLoss2=spread*2;}}
if(StopLoss2<=spread) {StopLoss2=spread*2; }
if(TakeProfit2<=minshag) {TakeProfit2=minshag+spread; if(minshag==0){TakeProfit2=spread*2;}}
if(TakeProfit2<=spread||TakeProfit2<=spread) {TakeProfit2=spread*2;}
bool CloseOk = true;
if(MaxSpreadCloseUse==true){if(spread >= MaxSpreadClose){CloseOk==false; LastErrorText=LastErrorText+"Trade is disabled, Spread = "+DoubleToString(NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD),2),2)+" pips is big than MaxSpreadClose = " +DoubleToString(MaxSpreadClose,2)+" pips!"+" Can change MaxSpreadClose in EA settings and start EA again!";}}
if(MinSpreadCloseUse==true){if(spread <= MinSpreadClose){CloseOk==false; LastErrorText=LastErrorText+"Trade is disabled, Spread = "+DoubleToString(NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD),2),2)+" pips is low than MinSpreadClose = " +DoubleToString(MinSpreadClose,2)+" pips!"+" Can change MinSpreadClose in EA settings and start EA again!";}}
if(CloseOk)
{
if(UseFixedStopLossAndTakeProfit==true) {EnterSLTP();}
if (FixTP != 0) { if (DisableFixTP==false) {TrailingTPs();}}
if (FixSL != 0) { if (DisableFixSL==false) {TrailingSLs();}}
if (CloseTimer>0){CloseTimerFunction();}
if (CloseWhenPriceEqual == true){CloseWhenPriceEqualFunction();}
if(UseTrailingStop) {TrailingStopFunction();}
if(UseVirtualTrailingStop) {VirtualTrailingStopFunction();}
}
int stepstop=0;
while (TotalOrder(Magic) > 0 && StopTrading == true)
{
stepstop=stepstop+1;
if(UseFixedStopLossAndTakeProfit==true) {EnterSLTP();}
if (FixTP != 0) { if (DisableFixTP==false) {TrailingTPs();}}
if (FixSL != 0) { if (DisableFixSL==false) {TrailingSLs();}}
if (CloseTimer>0){CloseTimerFunction();}
if (CloseWhenPriceEqual == true){CloseWhenPriceEqualFunction();}
if(UseTrailingStop) {TrailingStopFunction();}
if(UseVirtualTrailingStop) {VirtualTrailingStopFunction();}
if(stepstop < 10){ObjectsDeleteAll(); Comment(""); ShowErrorsPanel(); Comment(" Wait of Closing of orders ......");}
Sleep(100);
}
if (TotalOrder(Magic) == 0 && StopTrading == true)
{
if (ShowLog ) Print ("All orders was closed! Trading was stopped!"); Comment (" All orders was closed! Trading was stopped!");
}
if(ShowGraf)
{
if(NewLmaxBid==true || NewMt4Bid==true)
{
if(LmaxBidOld > 0)
{
if(NewLmaxBid==true) {if(ShowPanel==false) {Comment("");ObjectsDeleteAll(); ShowWesternpipsInfoPanel(); ShowPanel=true; ShowErrorPanel=false;}}
if (ShowPanel==true)
{
BarsCount=WindowBarsPerChart();
Bar=WindowFirstVisibleBar();
long chart_id=ChartID();
string QTexta;
if(ModeOfQuotes==0){QTexta="Saxo";}
if(ModeOfQuotes==1){QTexta="Lmax";}
if(ModeOfQuotes==2){QTexta="CQG";}
if(ModeOfQuotes==3){QTexta="Rithmic";}
if(NewLmaxBid==true)
{
if(ObjectFind(chart_id,"QBid")==-1)
{
ObjectCreate(chart_id,"QBid", OBJ_HLINE,0,TimeCurrent(),LmaxBid);
ObjectSet("QBid",OBJPROP_COLOR,ColorQuotes);
}
ObjectMove("QBid",0,TimeCurrent(),LmaxBid);
}
if(NewLmaxBid==true)
{
if(ObjectFind(chart_id,"QText")==-1)
{
ObjectCreate(chart_id,"QText",OBJ_TEXT,0, Time[0], High[0]+(10*Point));
ObjectSetText("QText", QTexta+" Bid ", 10, "Arial", ColorQuotes);
}
ObjectMove(chart_id,"QText", 0, (Time[0]+(BarsCount-Bar)*60*Period()), LmaxBid-((LmaxAsk-LmaxBid)/pp)*pp);
}
if(ShowAsk)
{
if(NewLmaxAsk==true)
{
if(ObjectFind(chart_id,"QAsk")==-1)
{
ObjectCreate(chart_id,"QAsk", OBJ_HLINE,0,TimeCurrent(),LmaxAsk);
ObjectSet("QAsk",OBJPROP_COLOR,ColorQuotes);
ObjectSet("QAsk",OBJPROP_STYLE,2);
}
ObjectMove(chart_id,"QAsk",0,TimeCurrent(),LmaxAsk);
}
if(NewLmaxAsk==true)
{
if(ObjectFind(chart_id,"QAText")==-1)
{
ObjectCreate(chart_id,"QAText",OBJ_TEXT,0, Time[0], High[0]+(10*Point));
ObjectSetText("QAText", QTexta+" Ask ", 10, "Arial", ColorQuotes);
}
ObjectMove(chart_id,"QAText", 0, (Time[0]+(BarsCount-Bar)*60*Period()), LmaxAsk+(2*(LmaxAsk-LmaxBid)/pp)*pp);
}
}
color ColorSigSellSaxo;
int SigSellSaxo = 14;
int xsell=60;
int xbuy=60;
x=22;
ColorSigSellSaxo = C'118,192,217';
if (SignalSell)
{
if(tradeLmax)
{
SigSellSaxo = 20;
ColorSigSellSaxo = Yellow;
x=x-5;
xsell=75;
}
}
if(GapSell<0) {xsell=xsell+8;}
if(ObjectFind(chart_id,"GapSell")==-1)
{
ObjectCreate(chart_id,"GapSell",OBJ_LABEL,0, 0, 0);
ObjectSetInteger(chart_id,"GapSell", OBJPROP_CORNER, 1);
ObjectSetInteger(chart_id,"GapSell", OBJPROP_XDISTANCE, xsell);
ObjectSetInteger(chart_id,"GapSell", OBJPROP_YDISTANCE, x+28);
ObjectSetInteger(chart_id,"GapSell", OBJPROP_FONTSIZE, SigSellSaxo);
ObjectSetString(chart_id,"GapSell", OBJPROP_FONT,"Arial");
ObjectSetInteger(chart_id,"GapSell", OBJPROP_COLOR,ColorSigSellSaxo);
}
ObjectSetString(chart_id,"GapSell", OBJPROP_TEXT,DoubleToString(GapSell, 1));
color ColorSigBuySaxo;
int SigBuySaxo = 14;
ColorSigBuySaxo = C'118,192,217';
if (SignalBuy)
{
if(tradeLmax)
{
SigBuySaxo = 20;
ColorSigBuySaxo = Yellow;
x=x-5;
xbuy=75;
}
}
if(GapBuy<0) {xbuy=xbuy+8;}
if(ObjectFind(chart_id,"GapBuy")==-1)
{
ObjectCreate(chart_id,"GapBuy",OBJ_LABEL,0, 0, 0);
ObjectSetInteger(chart_id,"GapBuy", OBJPROP_CORNER, 1);
ObjectSetInteger(chart_id,"GapBuy", OBJPROP_XDISTANCE, xbuy);
ObjectSetInteger(chart_id,"GapBuy", OBJPROP_YDISTANCE, x);
ObjectSetInteger(chart_id,"GapBuy", OBJPROP_FONTSIZE, SigBuySaxo);
ObjectSetString(chart_id,"GapBuy", OBJPROP_FONT,"Arial");
ObjectSetInteger(chart_id,"GapBuy", OBJPROP_COLOR,ColorSigBuySaxo);
}
ObjectSetString(chart_id,"GapBuy", OBJPROP_TEXT,DoubleToString(GapBuy, 1));
if(ShowPriceLabel)
{
if( SignalBuy==true || SignalSell==true )
{
long tc=TimeCurrent();
ObjectCreate(0,"LmaxBid"+DoubleToString(tc,0),OBJ_ARROW_LEFT_PRICE,0,TimeCurrent(),LmaxBid);
ObjectSetInteger(0,"LmaxBid"+DoubleToString(tc,0),OBJPROP_COLOR,ColorQuotes);
if( GapBuy >= (MinLev))
{
ObjectCreate(0,"GapUp"+DoubleToString(tc,0),OBJ_ARROW_UP,0,TimeCurrent(),Mt4Ask-20*Point);
ObjectSetInteger(0,"GapUp"+DoubleToString(tc,0),OBJPROP_COLOR,LimeGreen);
ObjectCreate(0,"Mt4Ask"+DoubleToString(tc,0),OBJ_ARROW_LEFT_PRICE,0,TimeCurrent(),Mt4Ask);
ObjectSetInteger(0,"Mt4Ask"+DoubleToString(tc,0),OBJPROP_COLOR,Red);
ObjectCreate(0,"SlippageBuy"+DoubleToString(tc,0),OBJ_TEXT,0, TimeCurrent(), Mt4Ask+LastOpenSlippage*Point);
ObjectMove(0,"SlippageBuy"+DoubleToString(tc,0), 0, TimeCurrent(), Mt4Ask+LastOpenSlippage*Point);
ObjectSetText("SlippageBuy"+DoubleToString(tc,0), "Slippage Buy= "+DoubleToString(LastOpenSlippage,2), 8, "Arial", Red);
}
if(GapSell <= -(MinLev) )
{
ObjectCreate(0,"GapDown"+DoubleToString(tc,0),OBJ_ARROW_DOWN,0,TimeCurrent(),Mt4Bid+20*Point);
ObjectSetInteger(0,"GapDown"+DoubleToString(tc,0),OBJPROP_COLOR,Red);
ObjectCreate(0,"Mt4Bid"+DoubleToString(tc,0),OBJ_ARROW_LEFT_PRICE,0,TimeCurrent(),Mt4Bid);
ObjectSetInteger(0,"Mt4Bid"+DoubleToString(tc,0),OBJPROP_COLOR,Red);
ObjectCreate(0,"SlippageSell"+DoubleToString(tc,0),OBJ_TEXT,0, TimeCurrent(), Mt4Bid+LastOpenSlippage*Point);
ObjectMove(0,"SlippageSell"+DoubleToString(tc,0), 0, TimeCurrent(), Mt4Bid+LastOpenSlippage*Point);
ObjectSetText("SlippageSell"+DoubleToString(tc,0), "Slippage Sell= "+DoubleToString(LastOpenSlippage,2), 8, "Arial", Red);
}
}
}
if(ObjectFind(chart_id,"minlevel")==-1)
{
ObjectCreate("minlevel", OBJ_LABEL, 0, 0, 0);
ObjectSet("minlevel", OBJPROP_CORNER, 4);
ObjectSet("minlevel", OBJPROP_XDISTANCE, 8);
ObjectSet("minlevel", OBJPROP_YDISTANCE, 65);
}
ObjectSetText("minlevel", "Minimum Level: " +DoubleToString(MinLev,2), 9, "Arial", Lime);
if(ObjectFind(chart_id,"fixtp")==-1)
{
ObjectCreate("fixtp", OBJ_LABEL, 0, 0, 0);
ObjectSet("fixtp", OBJPROP_CORNER, 4);
ObjectSet("fixtp", OBJPROP_XDISTANCE, 8);
ObjectSet("fixtp", OBJPROP_YDISTANCE, 80);
}
ObjectSetText("fixtp", "FixTP: "+DoubleToString(FixTP2,2), 9, "Arial", White);
if(ObjectFind(chart_id,"fixsl")==-1)
{
ObjectCreate("fixsl", OBJ_LABEL, 0, 0, 0);
ObjectSet("fixsl", OBJPROP_CORNER, 4);
ObjectSet("fixsl", OBJPROP_XDISTANCE, 8);
ObjectSet("fixsl", OBJPROP_YDISTANCE, 95);
}
ObjectSetText("fixsl", "FixSL: "+DoubleToString(FixSL2,2), 9, "Arial", White);
if(ObjectFind(chart_id,"sl")==-1)
{
ObjectCreate("sl", OBJ_LABEL, 0, 0, 0);
ObjectSet("sl", OBJPROP_CORNER, 4);
ObjectSet("sl", OBJPROP_XDISTANCE, 8);
ObjectSet("sl", OBJPROP_YDISTANCE, 110);
}
ObjectSetText("sl", "StopLoss: "+DoubleToString(StopLoss2,2), 9, "Arial", White);
if(ObjectFind(chart_id,"tp")==-1)
{
ObjectCreate("tp", OBJ_LABEL, 0, 0, 0);
ObjectSet("tp", OBJPROP_CORNER, 4);
ObjectSet("tp", OBJPROP_XDISTANCE, 8);
ObjectSet("tp", OBJPROP_YDISTANCE, 125);
}
ObjectSetText("tp", "TakeProfit: "+DoubleToString(TakeProfit2,2), 9, "Arial", White);
if(ObjectFind(chart_id,"RiskPersent")==-1)
{
ObjectCreate("RiskPersent", OBJ_LABEL, 0, 0, 0);
ObjectSet("RiskPersent", OBJPROP_CORNER, 4);
ObjectSet("RiskPersent", OBJPROP_XDISTANCE, 8);
ObjectSet("RiskPersent", OBJPROP_YDISTANCE, 165);
}
ObjectSetText("RiskPersent","RiskPercent: " +DoubleToString(RiskPercent,0), 9, "Arial", White);
if(ObjectFind(chart_id,"Lots")==-1)
{
ObjectCreate("Lots", OBJ_LABEL, 0, 0, 0);
ObjectSet("Lots", OBJPROP_CORNER, 4);
ObjectSet("Lots", OBJPROP_XDISTANCE, 8);
ObjectSet("Lots", OBJPROP_YDISTANCE, 180);
}
ObjectSetText("Lots","Lots: " +TradeLot, 9, "Arial", Lime);
if(ObjectFind(chart_id,"max_Lots")==-1)
{
ObjectCreate("max_Lots", OBJ_LABEL, 0, 0, 0);
ObjectSet("max_Lots", OBJPROP_CORNER, 4);
ObjectSet("max_Lots", OBJPROP_XDISTANCE, 8);
ObjectSet("max_Lots", OBJPROP_YDISTANCE, 195);
}
ObjectSetText("max_Lots","Max Lots: " +DoubleToString(max_Lots,3), 9, "Arial", White);
if(ObjectFind(chart_id,"RiskDeposit")==-1)
{
ObjectCreate("RiskDeposit", OBJ_LABEL, 0, 0, 0);
ObjectSet("RiskDeposit", OBJPROP_CORNER, 4);
ObjectSet("RiskDeposit", OBJPROP_XDISTANCE, 8);
ObjectSet("RiskDeposit", OBJPROP_YDISTANCE, 210);
}
ObjectSetText("RiskDeposit","Deposit Stop if Loss: " +DoubleToString(DepositStop,0), 9, "Arial", White);
if(ObjectFind(chart_id,"DepositStopIfProfit")==-1)
{
ObjectCreate("DepositStopIfProfit", OBJ_LABEL, 0, 0, 0);
ObjectSet("DepositStopIfProfit", OBJPROP_CORNER, 4);
ObjectSet("DepositStopIfProfit", OBJPROP_XDISTANCE, 8);
ObjectSet("DepositStopIfProfit", OBJPROP_YDISTANCE, 225);
}
ObjectSetText("DepositStopIfProfit","Deposit Stop If Profit: " +DoubleToString(DepositStopIfProfit,0), 9, "Arial", White);
if(ObjectFind(chart_id,"datafeed")==-1)
{
ObjectCreate("datafeed", OBJ_LABEL, 0, 0, 0);
ObjectSet("datafeed", OBJPROP_CORNER, 4);
ObjectSet("datafeed", OBJPROP_XDISTANCE, 210);
ObjectSet("datafeed", OBJPROP_YDISTANCE, 100);
}
ObjectSetText("datafeed", QText, 9, "Arial", ColorQuotes);
if(ObjectFind(chart_id,"lmaxsymb")==-1)
{
ObjectCreate("lmaxsymb", OBJ_LABEL, 0, 0, 0);
ObjectSet("lmaxsymb", OBJPROP_CORNER, 4);
ObjectSet("lmaxsymb", OBJPROP_XDISTANCE, 210);
ObjectSet("lmaxsymb", OBJPROP_YDISTANCE, 115);
}
ObjectSetText("lmaxsymb", SymbCode, 9, "Arial", White);
if(ObjectFind(chart_id,"dfsymb")==-1)
{
ObjectCreate("dfsymb", OBJ_LABEL, 0, 0, 0);
ObjectSet("dfsymb", OBJPROP_CORNER, 4);
ObjectSet("dfsymb", OBJPROP_XDISTANCE, 210);
ObjectSet("dfsymb", OBJPROP_YDISTANCE, 130);
}
ObjectSetText("dfsymb", "Spread: "+DoubleToString((LmaxAsk-LmaxBid)/pp,2), 9, "Arial", White);
if(ObjectFind(chart_id,"lmaxask")==-1)
{
ObjectCreate("lmaxask", OBJ_LABEL, 0, 0, 0);
ObjectSet("lmaxask", OBJPROP_CORNER, 4);
ObjectSet("lmaxask", OBJPROP_XDISTANCE, 210);
ObjectSet("lmaxask", OBJPROP_YDISTANCE, 145);
}
ObjectSetText("lmaxask", lmaxtexta+" Ask: "+DoubleToString(LmaxAsk,Digits), 9, "Arial", White);
if(ObjectFind(chart_id,"lmaxbid")==-1)
{
ObjectCreate("lmaxbid", OBJ_LABEL, 0, 0, 0);
ObjectSet("lmaxbid", OBJPROP_CORNER, 4);
ObjectSet("lmaxbid", OBJPROP_XDISTANCE, 210);
ObjectSet("lmaxbid", OBJPROP_YDISTANCE, 160);
}
ObjectSetText("lmaxbid", lmaxtexta+" Bid: "+DoubleToString(LmaxBid,Digits), 9, "Arial", White);
if(ObjectFind(chart_id,"broker")==-1)
{
ObjectCreate("broker", OBJ_LABEL, 0, 0, 0);
ObjectSet("broker", OBJPROP_CORNER, 4);
ObjectSet("broker", OBJPROP_XDISTANCE, 360);
ObjectSet("broker", OBJPROP_YDISTANCE, 100);
}
ObjectSetText("broker",AccountInfoString(ACCOUNT_COMPANY), 9, "Arial", Yellow);
if(ObjectFind(chart_id,"mt4symb")==-1)
{
ObjectCreate("mt4symb", OBJ_LABEL, 0, 0, 0);
ObjectSet("mt4symb", OBJPROP_CORNER, 4);
ObjectSet("mt4symb", OBJPROP_XDISTANCE, 360);
ObjectSet("mt4symb", OBJPROP_YDISTANCE, 115);
}
ObjectSetText("mt4symb", Symbol(), 9, "Arial", White);
if(ObjectFind(chart_id,"spread")==-1)
{
ObjectCreate("spread", OBJ_LABEL, 0, 0, 0);
ObjectSet("spread", OBJPROP_CORNER, 4);
ObjectSet("spread", OBJPROP_XDISTANCE, 360);
ObjectSet("spread", OBJPROP_YDISTANCE, 130);
}
ObjectSetText("spread","Spread: " +DoubleToString(spread,2), 9, "Arial", White);
if(ObjectFind(chart_id,"mt4ask")==-1)
{
ObjectCreate("mt4ask", OBJ_LABEL, 0, 0, 0);
ObjectSet("mt4ask", OBJPROP_CORNER, 4);
ObjectSet("mt4ask", OBJPROP_XDISTANCE, 360);
ObjectSet("mt4ask", OBJPROP_YDISTANCE, 145);
}
ObjectSetText("mt4ask", "Mt4 Ask: "+DoubleToString(Mt4Ask,Digits), 9, "Arial", White);
if(ObjectFind(chart_id,"mt4bid")==-1)
{
ObjectCreate("mt4bid", OBJ_LABEL, 0, 0, 0);
ObjectSet("mt4bid", OBJPROP_CORNER, 4);
ObjectSet("mt4bid", OBJPROP_XDISTANCE, 360);
ObjectSet("mt4bid", OBJPROP_YDISTANCE, 160);
}
ObjectSetText("mt4bid", "Mt4 Bid: "+DoubleToString(Mt4Bid,Digits), 9, "Arial", White);
if(ObjectFind(chart_id,"ExOpen")==-1)
{
ObjectCreate("ExOpen", OBJ_LABEL, 0, 0, 0);
ObjectSet("ExOpen", OBJPROP_CORNER, 4);
ObjectSet("ExOpen", OBJPROP_XDISTANCE, 210);
ObjectSet("ExOpen", OBJPROP_YDISTANCE, 220);
}
ObjectSetText("ExOpen", "Open Order Execution Time: "+DoubleToString(LastOpenTime,0)+" ms", 9, "Arial", White);
if(ObjectFind(chart_id,"ExOpen1")==-1)
{
ObjectCreate("ExOpen1", OBJ_LABEL, 0, 0, 0);
ObjectSet("ExOpen1", OBJPROP_CORNER, 4);
Показано первые 50% кода (символов: 104202)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.