kg relative strength original and range trading ea v1.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «kg relative strength original and range trading ea v1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник для MetaTrader 4 предназначен для автоматической торговли корзинами позиций на основе показаний пользовательского индикатора относительной силы «KG RS GROUP V1.1». Советник поддерживает два метода торговли: торговля по диапазону и торговля по оригинальному методу. Он отслеживает уровни силы для восьми валютных групп (JPY, USD, GBP, EUR, CHF, AUD, NZD, CAD) и открывает или закрывает корзины сделок в зависимости от текущей ситуации. Включает управление корзинами с уровнями take profit и stop loss, механизм «прыгающего» стоп-лосса, защиту счёта при достижении максимального убытка, закрытие всех позиций при достижении целевой прибыли, фильтрацию по торговым сессиям, проверку спреда и режим наблюдения за открытыми сделками без открытия новых.
Настройки программы
| Настройка | Описание |
|---|---|
| ins25 | Раздел «Торговые методы» — Текстовый разделитель, обозначающий начало блока выбора торгового метода. |
| ins21 | Раздел «Метод диапазонной торговли» — Текстовый разделитель для группы настроек диапазонной торговли. |
| TradeRangeMethod | Метод диапазонной торговли — Включает или выключает диапазонный метод торговли. При включении советник открывает и закрывает корзины на основе уровней силы и отложенных условий. |
| Buy xxxJPY (WeakEntryPending) | Уровень ожидания для слабых корзин — Значение силы, при котором советник выставляет отложенный ордер на открытие слабой корзины (покупка). |
| Sell xxxJPY (StrongEntryPending) | Уровень ожидания для сильных корзин — Значение силы, при котором советник выставляет отложенный ордер на открытие сильной корзины (продажа). |
| RetraceDistance | Расстояние ретрейса — Расстояние в пунктах, используемое для подтверждения сигнала после выставления отложенного ордера перед открытием корзины. |
| ValidatingTimeFilterMins | Время валидации в минутах — Минимальное время ожидания после выставления отложенного ордера перед открытием корзины. |
| EndValidationPoints | Конечные точки валидации — Дополнительное количество пунктов для подтверждения сигнала при открытии корзины. |
| StrengthInProfitClose | Закрытие по прибыли силы — Включает автоматическое закрытие корзины, когда сила достигает заданного уровня прибыли. |
| StrengthProfitDollarTarget | Цель прибыли по силе — Целевая сумма прибыли в долларах для автоматического закрытия корзины по силе. |
| StrengthInLossClose | Закрытие по убытку силы — Включает автоматическое закрытие корзины, когда сила достигает заданного уровня убытка. |
| StrengthInLossDollar | Уровень убытка по силе — Порог убытка в долларах для автоматического закрытия корзины по силе. |
| ins20 | Раздел «Оригинальный метод торговли» — Текстовый разделитель для группы настроек оригинального метода. |
| TradeOriginalMethod | Оригинальный метод торговли — Включает или выключает оригинальный метод торговли на основе разницы между красной и белой линиями индикатора. |
| KG RS GROUP v1.1 (WeakUpperBound) | Верхняя граница слабого уровня — Верхний предел диапазона силы для открытия слабых сделок в оригинальном методе. |
| WeakLowerBound | Нижняя граница слабого уровня — Нижний предел диапазона силы для открытия слабых сделок в оригинальном методе. |
| StrongUpperBound | Верхняя граница сильного уровня — Верхний предел диапазона силы для открытия сильных сделок в оригинальном методе. |
| StrongLowerBound | Нижняя граница сильного уровня — Нижний предел диапазона силы для открытия сильных сделок в оригинальном методе. |
| Difference between red and white lines (MinDiff) | Минимальная разница — Минимальная разница между красной и белой линиями индикатора для подтверждения сигнала в оригинальном методе. |
| bl3 | Разделитель — Текстовый разделитель визуального блока настроек. |
| ins8 | Раздел «Общие входные параметры» — Текстовый разделитель для группы общих настроек. |
| MaxTradesAllowed | Максимальное количество сделок — Общий лимит одновременно открытых сделок в пределах всех корзин. |
| Lot | Размер лота — Стандартный размер лота для каждой сделки в корзине. |
| TradeWeak | Торговля слабыми корзинами — Включает или выключает открытие слабых корзин (покупка). |
| TradeStrong | Торговля сильными корзинами — Включает или выключает открытие сильных корзин (продажа). |
| MinTradesPerBasket | Минимум сделок в корзине — Минимальное количество доступных пар для успешного открытия корзины. |
| PairSuffix | Суффикс пары — Суффикс, добавляемый к имени валютной пары (например, «m» для пары USDJPYm). |
| MaximumSpread | Максимальный спред — Максимально допустимый спред в пунктах для открытия сделки. |
| DisplayGapSize | Размер отступа отображения — Количество пробелов для форматирования отображаемого сообщения на экране. |
| ShowMagicNumbersOnScreen | Показывать магические номера на экране — Включает отображение магических номеров корзин в информационном окне. |
| WatchTradesOnly | Только наблюдение за сделками — Включает режим наблюдения за открытыми сделками без открытия новых позиций. |
| CurrencySymbol | Символ валюты — Символ валюты для отображения в информационных сообщениях (например, «$» или «€»). |
| ins31 | Раздел «Фильтры торгового времени» — Текстовый разделитель для группы настроек временных фильтров. |
| SleepMinsAtStartup | Пауза при запуске в минутах — Время ожидания в минутах после запуска советника перед началом работы. |
| TradeSundayCandle | Торговля воскресной свечи — Включает или выключает торговлю по воскресной свече. |
| MondayStartHour | Час начала в понедельник — Час, с которого начинается торговля в понедельник. |
| StopTradingOnFriday | Остановка торговли в пятницу — Включает автоматическую остановку торговли в пятницу. |
| FridayStopHour | Час остановки в пятницу — Час, после которого торговля прекращается в пятницу. |
| UseAsiaTimeFilter | Использовать фильтр Азиатской сессии — Включает фильтр, запрещающий торговлю определёнными триггерами во время Азиатской сессии. |
| AsiaStartTime | Время начала Азиатской сессии — Час начала Азиатской сессии для фильтрации торговли. |
| AsiaEndTime | Время окончания Азиатской сессии — Час окончания Азиатской сессии для фильтрации торговли. |
| UseLondonTimeFilter | Использовать фильтр Лондонской сессии — Включает фильтр, запрещающий торговлю определёнными триггерами во время Лондонской сессии. |
| LondonStartTime | Время начала Лондонской сессии — Час начала Лондонской сессии для фильтрации торговли. |
| LondonEndTime | Время окончания Лондонской сессии — Час окончания Лондонской сессии для фильтрации торговли. |
| UseNewYorkTimeFilter | Использовать фильтр Нью-Йоркской сессии — Включает фильтр, запрещающий торговлю определёнными триггерами во время Нью-Йоркской сессии. |
| NewYorkStartTime | Время начала Нью-Йоркской сессии — Час начала Нью-Йоркской сессии для фильтрации торговли. |
| NewYorkEndTime | Время окончания Нью-Йоркской сессии — Час окончания Нью-Йоркской сессии для фильтрации торговли. |
| ins30 | Раздел «Индивидуальные фильтры сделок» — Текстовый разделитель для группы индивидуальных настроек фильтрации. |
| UseKgGroupFilter | Использовать фильтр группы KG — Включает фильтрацию отдельных сделок на основе показаний индикатора относительной силы на старшем таймфрейме. |
| ins32 | Подсказка таймфрейма фильтра — Текстовая подсказка с указанием таймфреймов для фильтра (4H=240, D1=1440). |
| KgFilterMins | Таймфрейм фильтра в минутах — Таймфрейм в минутах, на котором берётся показание индикатора относительной силы для фильтрации сделок. |
| BasketReverseNotCancel | Разворот корзины вместо отмены — При включении направление сделки разворачивается при неудачной проверке фильтра, а не отменяется. |
| bl4 | Разделитель — Текстовый разделитель визуального блока настроек. |
| ins22 | Раздел «Параметры управления» — Текстовый разделитель для группы настроек управления позициями. |
| bin5 | Настройки тейк-профита корзины — Текстовый разделитель для группы настроек автоматического закрытия корзины по прибыли. |
| BasketClosureTP | Закрытие корзины по тейк-профиту — Включает автоматическое закрытие корзины при достижении целевой прибыли. |
| BasketStrongDollarTP | Тейк-профит сильной корзины — Целевая сумма прибыли в долларах для автоматического закрытия сильной корзины. |
| BasketWeakDollarTP | Тейк-профит слабой корзины — Целевая сумма прибыли в долларах для автоматического закрытия слабой корзины. |
| bin6 | Настройки стоп-лосса корзины — Текстовый разделитель для группы настроек автоматического закрытия корзины по убытку. |
| BasketClosureSL | Закрытие корзины по стоп-лоссу — Включает автоматическое закрытие корзины при достижении убытка. |
| BasketStrongDollarSL | Стоп-лосс сильной корзины — Порог убытка в долларах для автоматического закрытия сильной корзины. |
| BasketWeakDollarSL | Стоп-лосс слабой корзины — Порог убытка в долларах для автоматического закрытия слабой корзины. |
| bin7 | Настройки прыгающего стоп-лосса — Текстовый разделитель для группы настроек прыгающего стоп-лосса. |
| UseJumpingStop | Использовать прыгающий стоп-лосс — Включает механизм прыгающего стоп-лосса, который перемещается вслед за прибылью корзины. |
| JumpingStopDollars | Шаг прыгающего стоп-лосса — Размер шага в долларах для перемещения прыгающего стоп-лосса. |
| LockInDollars | Фиксация в долларах — Начальное значение фиксации прибыли для прыгающего стоп-лосса. |
| sps | Раздел «Настройки защиты счёта» — Текстовый разделитель для группы настроек защиты счёта. |
| spsi | Подсказка защиты счёта — Текстовая подсказка с описанием функции защиты счёта. |
| ShirtProtectionEnabled | Включить защиту счёта — Включает автоматическое закрытие всех открытых сделок при достижении максимального убытка. |
| MaxLoss | Максимальный убыток — Порог убытка в долларах, при достижении которого все открытые сделки закрываются. |
| IncludePendingInClosure | Включать отложенные ордера в закрытие — Включает удаление отложенных ордеров при закрытии всех позиций. |
| bl5 | Разделитель — Текстовый разделитель визуального блока настроек. |
| GOC | Раздел «Настройки глобального закрытия» — Текстовый разделитель для группы настроек глобального закрытия всех сделок. |
| GlobalOrderClosureEnabled | Включить глобальное закрытие — Включает автоматическое закрытие всех открытых сделок при достижении целевой прибыли. |
| IncludePendingOrdersInClosure | Включать отложенные ордера в глобальное закрытие — Включает удаление отложенных ордеров при глобальном закрытии всех сделок. |
| DollarProfit | Целевая прибыль в долларах — Сумма прибыли в долларах, при достижении которой выполняется глобальное закрытие всех сделок. |
| bl6 | Разделитель — Текстовый разделитель визуального блока настроек. |
| ins1 | Раздел «Параметры конкретных пар» — Текстовый разделитель для группы настроек конкретных валютных пар. |
| ins2 | Раздел «Пары xxxJPY» — Текстовый разделитель для группы настроек пар с JPY. |
| JpyIsTrigger | JPY триггер — Включает или выключает обработку JPY-триггера для открытия корзин. |
| TradeUSDJPY | Торговля USDJPY — Включает или выключает торговлю парой USDJPY в JPY-корзине. |
| TradeCHFJPY | Торговля CHFJPY — Включает или выключает торговлю парой CHFJPY в JPY-корзине. |
| TradeCADJPY | Торговля CADJPY — Включает или выключает торговлю парой CADJPY в JPY-корзине. |
| TradeEURJPY | Торговля EURJPY — Включает или выключает торговлю парой EURJPY в JPY-корзине. |
| TradeGBPJPY | Торговля GBPJPY — Включает или выключает торговлю парой GBPJPY в JPY-корзине. |
| TradeAUDJPY | Торговля AUDJPY — Включает или выключает торговлю парой AUDJPY в JPY-корзине. |
| TradeNZDJPY | Торговля NZDJPY — Включает или выключает торговлю парой NZDJPY в JPY-корзине. |
| JpyWeakMagicNumber | Магический номер слабой JPY-корзины — Уникальный магический номер для слабых JPY-сделок. |
| JpyStrongMagicNumber | Магический номер сильной JPY-корзины — Уникальный магический номер для сильных JPY-сделок. |
| JpyTradeComment | Комментарий JPY-сделок — Текстовый комментарий, добавляемый к JPY-сделкам. |
| JpyManagedByThisEA | JPY управляется этим советником — Включает управление открытыми JPY-корзинами данным советником. |
| bl7 | Разделитель — Текстовый разделитель визуального блока настроек. |
| ins3 | Раздел «Пары xxxUSD и USDxxx» — Текстовый разделитель для группы настроек пар с USD. |
| UsdIsTrigger | USD триггер — Включает или выключает обработку USD-триггера для открытия корзин. |
| TradeUSDJPY1 | Торговля USDJPY — Включает или выключает торговлю парой USDJPY в USD-корзине. |
| TradeUSDCHF | Торговля USDCHF — Включает или выключает торговлю парой USDCHF в USD-корзине. |
| TradeUSDCAD | Торговля USDCAD — Включает или выключает торговлю парой USDCAD в USD-корзине. |
| TradeNZDUSD | Торговля NZDUSD — Включает или выключает торговлю парой NZDUSD в USD-корзине. |
| TradeEURUSD | Торговля EURUSD — Включает или выключает торговлю парой EURUSD в USD-корзине. |
| TradeGBPUSD | Торговля GBPUSD — Включает или выключает торговлю парой GBPUSD в USD-корзине. |
Поиск по коду файла
#include <OrderReliable.mqh>
#define NL "\n"
/*
int start()
void DisplayUserFeedback()
bool CheckIfTradeAlreadyExists(string symbol, int type, int MagicNumber)
void ManageOpenBaskets(int MagicNumber)
bool CloseBasket(int MagicNumber)
int CalculateNoOfAvailableTrades(int MagicNumber)
bool ReturnSpreadDecision(string symbol)
int init()
void ShirtProtection()
string CalaulateDiffForOriginalMethod(string trigger)
void TradeWatcher()
bool StrengthProfitCloseDecision(int MagicNumber)
bool StrengthLossCloseDecision(int MagicNumber)
bool HasPendingWaitingTimePassed(datetime PendingTime)
bool ReturnIndicatorDecision(string symbol, bool TradeAllowed, string BasketType)
bool CciFilter(string symbol, bool TradeAllowed, string BasketType)
void ReadValuesIntoVars()
bool DoesTradeExist(symbol)
void CheckTradingTimes()
bool SendTrade(string symbol, int type, string TradeComment, int MagicNumber)
xxxJPY functions
void xxxJpyTrades()
void JpySendStrongTrades()
void JpySendWeakTrades()
void JpyCountOpenTrades()
xxxUsd functions
void xxxUsdTrades()
void UsdSendWeakTrades()
void UsdSendStrongTrades()
void UsdCountOpenTrades()
xxxGbp functions
void xxxGbpTrades()
void GbpSendWeakTrades()
void GbpSendStrongTrades()
void GbpCountOpenTrades()
EURxxx functions
void EURxxxTrades()
void EurSendWeakTrades()
void EurSendStrongTrades()
void EurCountOpenTrades()
xxxCHF functions
void xxxChfTrades()
void ChfSendWeakTrades()
void ChfSendStrongTrades()
void ChfCountOpenTrades()
Aud functions
void AudxxxTrades()
void AudSendWeakTrades()
void AudSendStrongTrades()
void AudCountOpenTrades()
Nzd functions
void NzdxxxTrades()
void NzdSendWeakTrades()
void NzdSendStrongTrades()
void NzdCountOpenTrades()
Cad functions
void CadxxxTrades()
void CadSendWeakTrades()
void CadSendStrongTrades()
void CadCountOpenTrades()
*/
/*
callmevossle on scaling in
Here is the logic I use in scaling trades... Once a trade gets into profit, I wait until the bar
closes for the period I am trading, and then based either on the number of pips or dollar amount,
I just open another position. I tend to write my EA's to follow some sort of trend so "scaling" turns out to be
very profitable when you hit the trend. Of course, when your are wrong, you have to have solid money management
to get you out.
*/
extern string ins25="-----Trading Methods. Select 1 only.-----";
extern string ins21="-----Range trading method-----";
extern bool TradeRangeMethod=true;
extern double WeakEntryPending=90;// Buy xxxJPY
extern double StrongEntryPending=10;// Sell xxxJPY
extern int RetraceDistance=5;
extern int ValidatingTimeFilterMins=3;
extern int EndValidationPoints=10;
extern bool StrengthInProfitClose=false;
extern double StrengthProfitDollarTarget=0;
extern bool StrengthInLossClose=false;
extern double StrengthInLossDollar=-5;
extern string ins20="-----Original trading method-----";
extern bool TradeOriginalMethod=false;
extern double WeakUpperBound=50;//KG RS GROUP v1.1
extern double WeakLowerBound=35;
extern double StrongUpperBound=65;
extern double StrongLowerBound=50;
extern double MinDiff=8;// Difference between red and white lines
extern string bl3="---------------------------------------------------------------------";
extern string ins8="-----General inputs-----";
extern int MaxTradesAllowed=24;
extern double Lot=0.01;
extern bool TradeWeak=true;
extern bool TradeStrong=true;
extern int MinTradesPerBasket=4;
extern string PairSuffix="m";
extern int MaximumSpread=20;
extern int DisplayGapSize=30;
extern bool ShowMagicNumbersOnScreen=false;
extern bool WatchTradesOnly=false;
extern string CurrencySymbol="$";
extern string ins31="-----Trading time filters-----";
extern int SleepMinsAtStartup=2;
extern bool TradeSundayCandle=false;
extern int MondayStartHour=3;
extern bool StopTradingOnFriday=true;
extern int FridayStopHour=15;
extern bool UseAsiaTimeFilter=false;
extern int AsiaStartTime=22;
extern int AsiaEndTime=8;
extern bool UseLondonTimeFilter=false;
extern int LondonStartTime=8;
extern int LondonEndTime=16;
extern bool UseNewYorkTimeFilter=false;
extern int NewYorkStartTime=13;
extern int NewYorkEndTime=21;
extern string ins30="-----Individual trade filters-----";
extern bool UseKgGroupFilter=true;
extern string ins32="4H=240: D1=1440";
extern int KgFilterMins=240;
extern bool BasketReverseNotCancel=true;
extern string bl4="---------------------------------------------------------------------";
extern string ins22="-----Management inputs-----";
extern string bin5="Basket take profit settings";
extern bool BasketClosureTP=true;
extern double BasketStrongDollarTP=1;
extern double BasketWeakDollarTP=1;
extern string bin6="Basket stop loss settings";
extern bool BasketClosureSL=false;
extern double BasketStrongDollarSL=-1;
extern double BasketWeakDollarSL=-1;
extern string bin7="Basket jumping stop loss settings";
extern bool UseJumpingStop=false;
extern double JumpingStopDollars=2;
extern double LockInDollars=0;
extern string sps="----Shirt-protection settings----";
extern string spsi="Close all open trades at this $ loss";
extern bool ShirtProtectionEnabled=false;
extern double MaxLoss=-10000000;
extern bool IncludePendingInClosure=false;
extern string bl5="---------------------------------------------------------------------";
extern string GOC="----Global order closure settings----";
extern bool GlobalOrderClosureEnabled=false;
extern bool IncludePendingOrdersInClosure=false;
extern double DollarProfit=100000;
extern string bl6="---------------------------------------------------------------------";
extern string ins1="-----Pair-specific inputs-----";
extern string ins2="xxxJPY pairs";
extern bool JpyIsTrigger=true;
extern bool TradeUSDJPY=true;
extern bool TradeCHFJPY=true;
extern bool TradeCADJPY=false;
extern bool TradeEURJPY=true;
extern bool TradeGBPJPY=true;
extern bool TradeAUDJPY=true;
extern bool TradeNZDJPY=true;
extern int JpyWeakMagicNumber=232425;
extern int JpyStrongMagicNumber=232426;
extern string JpyTradeComment="JPY trigger";
extern bool JpyManagedByThisEA=true;
extern string bl7="---------------------------------------------------------------------";
extern string ins3="xxxUSD and USDxxx pairs";
extern bool UsdIsTrigger=true;
extern bool TradeUSDJPY1=true;
extern bool TradeUSDCHF=true;
extern bool TradeUSDCAD=true;
extern bool TradeNZDUSD=true;
extern bool TradeEURUSD=true;
extern bool TradeGBPUSD=true;
extern bool TradeAUDUSD=true;
extern int UsdWeakMagicNumber=232427;
extern int UsdStrongMagicNumber=232428;
extern string UsdTradeComment="USD trigger";
extern bool UsdManagedByThisEA=true;
extern string bl1="---------------------------------------------------------------------";
extern string ins4="xxxGBP and GBPxxx pairs";
extern bool GbpIsTrigger=true;
extern bool TradeGBPUSD1=true;
extern bool TradeGBPCHF=true;
extern bool TradeEURGBP=true;
extern bool TradeGBPJPY1=true;
extern bool TradeGBPNZD=true;
extern bool TradeGBPCAD=true;
extern bool TradeGBPAUD=false;
extern int GbpWeakMagicNumber=232429;
extern int GbpStrongMagicNumber=232430;
extern string GbpTradeComment="GBP trigger";
extern bool GbpManagedByThisEA=true;
extern string bl8="---------------------------------------------------------------------";
extern string ins5="EURxxx pairs";
extern bool EurIsTrigger=true;
extern bool TradeEURUSD1=true;
extern bool TradeEURGBP1=true;
extern bool TradeEURJPY1=true;
extern bool TradeEURCHF=true;
extern bool TradeEURCAD=true;
extern bool TradeEURAUD=true;
extern bool TradeEURNZD=true;
extern int EurWeakMagicNumber=232431;
extern int EurStrongMagicNumber=232432;
extern string EurTradeComment="EUR trigger";
extern bool EurManagedByThisEA=true;
extern string bl30="---------------------------------------------------------------------";
extern string ins6="xxxCHF and CHFxxx pairs";
extern bool ChfIsTrigger=true;
extern bool TradeUSDCHF1=true;
extern bool TradeEURCHF1=true;
extern bool TradeGBPCHF1=true;
extern bool TradeNZDCHF=true;
extern bool TradeAUDCHF=true;
extern bool TradeCADCHF=false;
extern bool TradeCHFJPY1=true;
extern int ChfWeakMagicNumber=232433;
extern int ChfStrongMagicNumber=232434;
extern string ChfTradeComment="CHF trigger";
extern bool ChfManagedByThisEA=true;
extern string bl9="---------------------------------------------------------------------";
extern string ins9="xxxAUD and AUDxxx pairs";
extern bool AudIsTrigger=false;
extern bool TradeAUDUSD1=true;
extern bool TradeAUDCAD=true;
extern bool TradeAUDJPY1=true;
extern bool TradeAUDCHF1=true;
extern bool TradeAUDNZD=true;
extern bool TradeEURAUD1=true;
extern int AudWeakMagicNumber=232435;
extern int AudStrongMagicNumber=232436;
extern string AudTradeComment="Aud trigger";
extern bool AudManagedByThisEA=true;
extern string bl31="---------------------------------------------------------------------";
extern string ins10="xxxNZD and NZDxxx pairs";
extern bool NzdIsTrigger=false;
extern bool TradeGBPNZD1=true;
extern bool TradeNZDUSD1=true;
extern bool TradeNZDJPY1=true;
extern bool TradeEURNZD1=true;
extern bool TradeNZDCHF1=false;
extern int NzdWeakMagicNumber=232437;
extern int NzdStrongMagicNumber=232438;
extern string NzdTradeComment="NZD trigger";
extern bool NzdManagedByThisEA=true;
extern string bl10="---------------------------------------------------------------------";
extern string ins11="xxxCAD and CADxxx pairs";
extern bool CadIsTrigger=false;
extern bool TradeUSDCAD1=true;
extern bool TradeCADCHF1=true;
extern bool TradeCADJPY1=true;
extern bool TradeAUDCAD1=true;
extern int CadWeakMagicNumber=232439;
extern int CadStrongMagicNumber=232440;
extern string CadTradeComment="CAD trigger";
extern bool CadManagedByThisEA=true;
extern bool ShowAlerts=true;
string ScreenMessage; //Display user feedback
string Gap;
bool TradingAllowed=true;// In case user has both trading methods selected
bool IsAsianSession=false;
bool IsLondonSession=false;
bool IsNewYorkSession=false;
double bid, ask; // For storing the Bid\Ask so that one instance of the ea can manage all trades, if required
double point, digits; // Saves the Point and Digits of an order
bool GlobalVariablesExist=false;
string TicketName = "GlobalVariableTicketNo";// For storing ticket numbers in global vars for picking up failed part-closes
int ReturnedTicketNo;//For closing trades on a recross
bool CloseAllDcTrades;// Force closure of all DC trades if there is a failure to close any
int DcTradesOpen;
double DcProfit;
double RedLine;
double WhiteLine;
double Diff;
double JpyVal;//Holds reading from KG RS GROUP indi
bool JpySendStrongTrades=false;// Tell start whether to attempt to send xxxJPY SELL trades
bool JpySendWeakTrades=false;// Tell start whether to attempt to send xxxJPY BUY trades
int JpyStrongTradesSent;// Keep a tally of 'strong' trades opened, so ea knows whether to keep on trying to send them
int JpyWeakTradesSent;// Keep a tally of 'weak' trades opened, so ea knows whether to keep on trying to send them
int JpyMaxTrades;// Maximum number of trades, based on whether TradeUSDJPY etc are set to true or false
bool JpyWeakPending=false;
bool JpyStrongPending=false;
double JpyStrongUpl;
double JpyWeakUpl;
bool JpyCloseStrong=false;
bool JpyCloseWeak=false;
datetime JpyPendingTime;
bool JpyValidatingStrong=false;
bool JpyValidatingWeak=false;
double UsdVal;//Holds reading from KG RS GROUP indi
bool UsdSendStrongTrades=false;
bool UsdSendWeakTrades=false;
int UsdStrongTradesSent;
int UsdWeakTradesSent;
int UsdMaxTrades;
bool UsdWeakPending=false;
bool UsdStrongPending=false;
double UsdStrongUpl;
double UsdWeakUpl;
bool UsdCloseStrong=false;
bool UsdCloseWeak=false;
datetime UsdPendingTime;
bool UsdValidatingStrong=false;
bool UsdValidatingWeak=false;
double GbpVal;//Holds reading from KG RS GROUP indi
bool GbpSendStrongTrades=false;
bool GbpSendWeakTrades=false;
int GbpStrongTradesSent;
int GbpWeakTradesSent;
int GbpMaxTrades;
bool GbpWeakPending=false;
bool GbpStrongPending=false;
double GbpStrongUpl;
double GbpWeakUpl;
bool GbpCloseStrong=false;
bool GbpCloseWeak=false;
datetime GbpPendingTime;
bool GbpValidatingStrong=false;
bool GbpValidatingWeak=false;
double EurVal;//Holds reading from KG RS GROUP indi
bool EurSendStrongTrades=false;
bool EurSendWeakTrades=false;
int EurStrongTradesSent;
int EurWeakTradesSent;
int EurMaxTrades;
bool EurWeakPending=false;
bool EurStrongPending=false;
double EurStrongUpl;
double EurWeakUpl;
bool EurCloseStrong=false;
bool EurCloseWeak=false;
datetime EurPendingTime;
bool EurValidatingStrong=false;
bool EurValidatingWeak=false;
double ChfVal;//Holds reading from KG RS GROUP indi
bool ChfSendStrongTrades=false;
bool ChfSendWeakTrades=false;
int ChfStrongTradesSent;
int ChfWeakTradesSent;
int ChfMaxTrades;
bool ChfWeakPending=false;
bool ChfStrongPending=false;
double ChfStrongUpl;
double ChfWeakUpl;
bool ChfCloseStrong=false;
bool ChfCloseWeak=false;
datetime ChfPendingTime;
bool ChfValidatingStrong=false;
bool ChfValidatingWeak=false;
double AudVal;//Holds reading from KG RS GROUP indi
bool AudSendStrongTrades=false;
bool AudSendWeakTrades=false;
int AudStrongTradesSent;
int AudWeakTradesSent;
int AudMaxTrades;
bool AudWeakPending=false;
bool AudStrongPending=false;
double AudStrongUpl;
double AudWeakUpl;
bool AudCloseStrong=false;
bool AudCloseWeak=false;
datetime AudPendingTime;
bool AudValidatingStrong=false;
bool AudValidatingWeak=false;
double NzdVal;//Holds reading from KG RS GROUP indi
bool NzdSendStrongTrades=false;
bool NzdSendWeakTrades=false;
int NzdStrongTradesSent;
int NzdWeakTradesSent;
int NzdMaxTrades;
bool NzdWeakPending=false;
bool NzdStrongPending=false;
double NzdStrongUpl;
double NzdWeakUpl;
bool NzdCloseStrong=false;
bool NzdCloseWeak=false;
datetime NzdPendingTime;
bool NzdValidatingStrong=false;
bool NzdValidatingWeak=false;
double CadVal;//Holds reading from KG RS GROUP indi
bool CadSendStrongTrades=false;
bool CadSendWeakTrades=false;
int CadStrongTradesSent;
int CadWeakTradesSent;
int CadMaxTrades;
bool CadWeakPending=false;
bool CadStrongPending=false;
double CadStrongUpl;
double CadWeakUpl;
bool CadCloseStrong=false;
bool CadCloseWeak=false;
datetime CadPendingTime;
bool CadValidatingStrong=false;
bool CadValidatingWeak=false;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
Comment("");
return(0);
}
void DisplayUserFeedback()
{
string GvName;//Global variable name
ScreenMessage=StringConcatenate("This Auto-Trader is the copyright of Steve Hopwood. It is available freely at www.forexfactory.com",NL);
if (TradeOriginalMethod)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Trading Original method",NL);
}//if (TradeOriginalMethod)
if (TradeRangeMethod)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Trading Range method",NL);
}//if (TradeRangeMethod)
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Maximum trades allowed = ",MaxTradesAllowed);
ScreenMessage=StringConcatenate(ScreenMessage, ": MinTradesPerBasket = ",MinTradesPerBasket);
ScreenMessage=StringConcatenate(ScreenMessage, ": Lot size = ", Lot);
ScreenMessage=StringConcatenate(ScreenMessage, ": Maximum spread allowed = ", MaximumSpread,NL);
if (ShirtProtectionEnabled) ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Shirt protection enabled at ",CurrencySymbol, MaxLoss,NL);
if (TradeWeak)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Trading Weak baskets: ");
if (TradeRangeMethod)
{
ScreenMessage=StringConcatenate(ScreenMessage, " Trades pending at > ", WeakEntryPending," ");
ScreenMessage=StringConcatenate(ScreenMessage, " Basket validation at ", WeakEntryPending - RetraceDistance);
}//if (TradeRangeMethod)
if (TradeOriginalMethod)
{
ScreenMessage=StringConcatenate(ScreenMessage, " WeakUpperBound = ", WeakUpperBound,": WeakLowerBound = ",WeakLowerBound);
}//if (TradeOriginalMethod
if (BasketClosureTP) ScreenMessage=StringConcatenate(NL, ScreenMessage, " Weak TP ",CurrencySymbol, BasketWeakDollarTP,": ");
else ScreenMessage=StringConcatenate(NL, ScreenMessage, " No Weak TP");
if (BasketClosureSL) ScreenMessage=StringConcatenate(ScreenMessage, " Weak SL ",CurrencySymbol, BasketWeakDollarSL);
else ScreenMessage=StringConcatenate(NL, ScreenMessage, " No Weak SL");
ScreenMessage=StringConcatenate(ScreenMessage,NL);
}//if (TradeWeak)
if (TradeStrong)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Trading Strong baskets: ");
if (TradeRangeMethod)
{
ScreenMessage=StringConcatenate(ScreenMessage, " Trades pending at < ", StrongEntryPending," ");
ScreenMessage=StringConcatenate(ScreenMessage, " Basket validation at ", StrongEntryPending + RetraceDistance);
}//if (TradeRangeMethod)
if (TradeOriginalMethod)
{
ScreenMessage=StringConcatenate(ScreenMessage, " StrongUpperBound = ", StrongUpperBound,": StrongLowerBound = ",StrongLowerBound);
}//if (TradeOriginalMethod
if (BasketClosureTP) ScreenMessage=StringConcatenate(NL, ScreenMessage, " Strong TP ",CurrencySymbol, BasketStrongDollarTP,": ");
else ScreenMessage=StringConcatenate(NL, ScreenMessage, " No Strong TP");
if (BasketClosureSL) ScreenMessage=StringConcatenate(ScreenMessage, " Strong SL ",CurrencySymbol, BasketStrongDollarSL);
else ScreenMessage=StringConcatenate(NL, ScreenMessage, " No Strong SL");
ScreenMessage=StringConcatenate(ScreenMessage,NL);
}//if (TradeWeak)
if (TradeRangeMethod) ScreenMessage=StringConcatenate(ScreenMessage, Gap, "ValidatingTimeFilterMins = ", ValidatingTimeFilterMins, ": Cancelled at ",WeakEntryPending-RetraceDistance-EndValidationPoints,"/",StrongEntryPending+RetraceDistance+EndValidationPoints,NL);
if (TradeSundayCandle) ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Trading the Sunday candle",NL);
else ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Not trading the Sunday candle",NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Trading startss at ",DoubleToStr(MondayStartHour,2), " on Monday");
if (StopTradingOnFriday) ScreenMessage=StringConcatenate(ScreenMessage, ": Trading stops at ",DoubleToStr(FridayStopHour,2), " on Friday" ,NL);
else ScreenMessage=StringConcatenate(ScreenMessage,NL);
if (TradeRangeMethod && StrengthInProfitClose)
{
ScreenMessage=StringConcatenate(ScreenMessage,Gap, "StrengthInProfitClose is enabled. StrengthProfitDollarTarget = ",CurrencySymbol,DoubleToStr(StrengthProfitDollarTarget,2),NL);
}
if (TradeRangeMethod && !StrengthInProfitClose)
{
ScreenMessage=StringConcatenate(ScreenMessage,Gap, "StrengthInProfitClose is disabled.",NL);
}
if (TradeRangeMethod && StrengthInLossClose)
{
ScreenMessage=StringConcatenate(ScreenMessage,Gap, "StrengthInLossClose is enabled. StrengthLossDollar = ",CurrencySymbol,DoubleToStr(StrengthInLossDollar,2),NL);
}
if (TradeRangeMethod && !StrengthInLossClose)
{
ScreenMessage=StringConcatenate(ScreenMessage,Gap, "StrengthInLossClose is disabled.",NL);
}
if (TradeOriginalMethod) ScreenMessage=StringConcatenate(ScreenMessage, Gap, "MinDiff = ",MinDiff,NL);
if (UseJumpingStop)
{
ScreenMessage=StringConcatenate(ScreenMessage,Gap,"Jumping stop activated every ",CurrencySymbol, JumpingStopDollars,": LockInDollars = ", CurrencySymbol, LockInDollars, NL);
}//if (UseJumpingStop)
/*if (UseCCI)
{
ScreenMessage=StringConcatenate(ScreenMessage,Gap,"CCI filter is enabled. Fast=",CciFast," Slow=",CciSlow,NL);
}//if (UseCCI)
else ScreenMessage=StringConcatenate(ScreenMessage,Gap,"CCI filter is disabled",NL);
*/
if (UseKgGroupFilter)
{
ScreenMessage=StringConcatenate(ScreenMessage,Gap,"Using KG RS GROUP to filter individual trades - ", KgFilterMins, " mins time frame",NL);
}//if (UseCCI)
else ScreenMessage=StringConcatenate(ScreenMessage,Gap,"Not using KG RS GROUP to filter individual trades",NL);
if (BasketReverseNotCancel) ScreenMessage=StringConcatenate(ScreenMessage,Gap,"BasketReverseNotCancel is enabled", NL);
else ScreenMessage=StringConcatenate(ScreenMessage,Gap,"BasketReverseNotCancel is disbled", NL);
if (UseAsiaTimeFilter && IsAsianSession) ScreenMessage=StringConcatenate(ScreenMessage, Gap, "Asain session open, so not trading JPY, AUD, NZD triggers",NL);
if (UseLondonTimeFilter && IsLondonSession) ScreenMessage=StringConcatenate(ScreenMessage, Gap, "London session open, so not trading EUR, GBP, CHF, CAD triggers",NL);
if (UseNewYorkTimeFilter && IsNewYorkSession) ScreenMessage=StringConcatenate(ScreenMessage, Gap, "New York session open, so not trading USD trigger",NL);
if (JpyIsTrigger && (!UseAsiaTimeFilter || !IsAsianSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "JpyIsTrigger = true. ");
if (JpyManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
string Strength = CalaulateDiffForOriginalMethod("JPY");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Jpy strength = ", JpyVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Jpy Weak magic number is ", JpyWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Jpy Strong magic number is ", JpyStrongMagicNumber,NL);
}
if (JpyWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", JpyWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(JpyWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(JpyWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (JpyStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", JpyStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(JpyStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(JpyStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (JpyWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (JpyStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (JpyValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (JpyValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (JpyIsTrigger)
if (UsdIsTrigger && (!UseNewYorkTimeFilter || !IsNewYorkSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "UsdIsTrigger = true. ");
if (UsdManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
Strength = CalaulateDiffForOriginalMethod("USD");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Usd strength = ", UsdVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Usd Weak magic number is ", UsdWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Usd Strong magic number is ", UsdStrongMagicNumber,NL);
}
if (UsdWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", UsdWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(UsdWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(UsdWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (UsdStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", UsdStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(UsdStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(UsdStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (UsdWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (UsdStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (UsdValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (UsdValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (UsdIsTrigger)
if (GbpIsTrigger && (!UseLondonTimeFilter || !IsLondonSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "GbpIsTrigger = true. ");
if (GbpManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
Strength = CalaulateDiffForOriginalMethod("GBP");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Gbp strength = ", GbpVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Gbp Weak magic number is ", GbpWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Gbp Strong magic number is ", GbpStrongMagicNumber,NL);
}
if (GbpWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", GbpWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(GbpWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(GbpWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (GbpStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", GbpStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(GbpStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(GbpStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (GbpWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (GbpStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (GbpValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (GbpValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (GbpIsTrigger)
if (EurIsTrigger && (!UseLondonTimeFilter || !IsLondonSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "EurIsTrigger = true. ");
if (EurManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
Strength = CalaulateDiffForOriginalMethod("EUR");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Eur strength = ", EurVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Eur Weak magic number is ", EurWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Eur Strong magic number is ", EurStrongMagicNumber,NL);
}
if (EurWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", EurWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(EurWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(EurWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (EurStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", EurStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(EurStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(EurStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (EurWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (EurStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (EurValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (EurValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (EurIsTrigger)
if (ChfIsTrigger && (!UseLondonTimeFilter || !IsLondonSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "ChfIsTrigger = true. ");
if (ChfManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
Strength = CalaulateDiffForOriginalMethod("CHF");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Chf strength = ", ChfVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Chf Weak magic number is ", ChfWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Chf Strong magic number is ", ChfStrongMagicNumber,NL);
}
if (ChfWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", ChfWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(ChfWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(ChfWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (ChfStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", ChfStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(ChfStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(ChfStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (ChfWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (ChfStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (ChfValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (ChfValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (ChfIsTrigger)
if (AudIsTrigger && (!UseAsiaTimeFilter || !IsAsianSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "AudIsTrigger = true. ");
if (AudManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
Strength = CalaulateDiffForOriginalMethod("AUD");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Aud strength = ", AudVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Aud Weak magic number is ", AudWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Aud Strong magic number is ", AudStrongMagicNumber,NL);
}
if (AudWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", AudWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(AudWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(AudWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (AudStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", AudStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(AudStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(AudStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (AudWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (AudStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (AudValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (AudValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (AudIsTrigger)
if (NzdIsTrigger && (!UseAsiaTimeFilter || !IsAsianSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "NzdIsTrigger = true. ");
if (NzdManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
Strength = CalaulateDiffForOriginalMethod("NZD");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Nzd strength = ", NzdVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Nzd Weak magic number is ", NzdWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Nzd Strong magic number is ", NzdStrongMagicNumber,NL);
}
if (NzdWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", NzdWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(NzdWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(NzdWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (NzdStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", NzdStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(NzdStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(NzdStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (NzdWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (NzdStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (NzdValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (NzdValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (NzdIsTrigger)
if (CadIsTrigger && (!UseLondonTimeFilter || !IsLondonSession))
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, "CadIsTrigger = true. ");
if (CadManagedByThisEA) ScreenMessage=StringConcatenate(ScreenMessage, "Trades managed by this EA.");
ScreenMessage=StringConcatenate(ScreenMessage, NL);
if (TradeOriginalMethod)
{
Strength = CalaulateDiffForOriginalMethod("CAD");
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Red line = ",DoubleToStr(RedLine,2), ": White line = ", DoubleToStr(WhiteLine,2),": Direction = ", Strength, ": Diff = ", DoubleToStr(Diff,2), NL);
}//
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Cad strength = ", CadVal, NL);
if (ShowMagicNumbersOnScreen)
{
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Cad Weak magic number is ", CadWeakMagicNumber,NL);
ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Cad Strong magic number is ", CadStrongMagicNumber,NL);
}
if (CadWeakTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", CadWeakTradesSent, " Weak trades open. Upl is ",CurrencySymbol, DoubleToStr(CadWeakUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(CadWeakMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (CadStrongTradesSent > 0) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " ", CadStrongTradesSent, " Strong trades open. Upl is ",CurrencySymbol, DoubleToStr(CadStrongUpl,2), NL);
if (UseJumpingStop)
{
GvName=DoubleToStr(CadStrongMagicNumber,0);
if(GlobalVariableCheck(GvName)) ScreenMessage=StringConcatenate(ScreenMessage,Gap," Locked profits = ",CurrencySymbol, GlobalVariableGet(GvName),NL);
}//if (UseJumpingStop)
if (CadWeakPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Weak basket pending",NL);
if (CadStrongPending) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Strong basket pending",NL);
if (CadValidatingStrong) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Strong basket",NL);
if (CadValidatingWeak) ScreenMessage=StringConcatenate(ScreenMessage, Gap, " Validating Weak basket",NL);
}// if (CadIsTrigger)
Comment(ScreenMessage);
}// End void DisplayUserFeedback()
bool CloseBasket(int MagicNumber)
{
bool result=true;// Set to false if a closure fails
for (int cc = OrdersTotal(); cc >= 0 ; cc--)
{
if (!OrderSelect(cc,SELECT_BY_POS)) continue;
if (OrderMagicNumber()==MagicNumber)
{
if (OrderType()==OP_BUY)
{
bool ticket =OrderCloseReliable(OrderTicket(),OrderLots(), MarketInfo(OrderSymbol(), MODE_BID),10,CLR_NONE);
if (!ticket) result=false;
else cc++;
}//if (OrderType()==OP_BUY)
if (OrderType()==OP_SELL)
{
ticket=OrderCloseReliable(OrderTicket(),OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK),10,CLR_NONE);
if (!ticket) result=false;
else cc++;
}//if (OrderType()==OP_SELL)
}//if (OrderMagicNumber()==MagicNumber)
}//for (int cc=0; cc<OrdersTotal(); cc++)
return(result);
}// End void CloseBasket(MagicNumber)
void ManageOpenBaskets(int MagicNumber)
{
double StrongSL=BasketStrongDollarSL;
double WeakSL=BasketWeakDollarSL;
if (BasketClosureSL)
{
if (StrongSL > 0) StrongSL = -StrongSL;
if (WeakSL > 0) WeakSL = -WeakSL;
}//if (BasketClosureSL)
string GvName; // Holds name of global variables
if (MagicNumber == JpyStrongMagicNumber)
{
if (JpyCloseStrong)
{
bool ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseStrong=false;
JpyStrongPending=false;
return;
}//if (ClosureSucceeded)
}//if (JpyCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) bool CloseNeeded = StrengthProfitCloseDecision(JpyStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(JpyStrongMagicNumber);
if (CloseNeeded)
{
JpyCloseStrong=true;
if (ShowAlerts) Alert("JPY Strong basket is being closed by the StrengthInProfitClose method ",JpyVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseStrong=false;
JpyStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (JpyStrongUpl >= BasketStrongDollarTP)
{
JpyCloseStrong=true;
if (ShowAlerts) Alert("JPY Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseStrong=false;
JpyStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (JpyStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (JpyStrongUpl <= StrongSL)
{
JpyCloseStrong=true;
if (ShowAlerts) Alert("JPY Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseStrong=false;
JpyStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (JpyStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(JpyStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
double JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (JpyStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
JpyCloseStrong=true;
if (ShowAlerts) Alert("JPY Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseStrong=false;
JpyStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (JpyStrongUpl <= JsValue)
if (JpyStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("JPY Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (JpyStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (JpyStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("JPY Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (JpyStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == JpyStrongMagicNumber)
if (MagicNumber == JpyWeakMagicNumber)
{
if (JpyCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseWeak=false;
JpyWeakPending=false;
return;
}//if (ClosureSucceeded)
}//if (JpyCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(JpyWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(JpyWeakMagicNumber);
if (CloseNeeded)
{
JpyCloseWeak=true;
if (ShowAlerts) Alert("JPY Weak basket is being closed by the StrengthInProfitClose method ",JpyVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseWeak=false;
JpyWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (JpyWeakUpl >= BasketWeakDollarTP)
{
JpyCloseWeak=true;
if (ShowAlerts) Alert("Jpy Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseWeak=false;
JpyWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (JpyWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (JpyWeakUpl <= WeakSL)
{
JpyCloseWeak=true;
if (ShowAlerts) Alert("JPY Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseWeak=false;
JpyWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (JpyWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(JpyWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (JpyWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
JpyCloseWeak=true;
if (ShowAlerts) Alert("JPY Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
JpyCloseWeak=false;
JpyWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (JpyWeakUpl <= JsValue)
if (JpyWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("JPY Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (JpyWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (JpyWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("JPY Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (JpyWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == JpyWeakMagicNumber)
if (MagicNumber == UsdStrongMagicNumber)
{
if (UsdCloseStrong)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseStrong=false;
UsdStrongPending=false;
return;
}//if (ClosureSucceeded)
} //if (JpyCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(UsdStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(UsdStrongMagicNumber);
if (CloseNeeded)
{
UsdCloseStrong=true;
if (ShowAlerts) Alert("USD Strong basket is being closed by the StrengthInProfitClose method ",UsdVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseStrong=false;
UsdStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (UsdStrongUpl >= BasketStrongDollarTP)
{
UsdCloseStrong=true;
if (ShowAlerts) Alert("Usd Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseStrong=false;
UsdStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (UsdStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (UsdStrongUpl <= StrongSL)
{
UsdCloseStrong=true;
if (ShowAlerts) Alert("USD Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseStrong=false;
UsdStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (UsdStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(UsdStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (UsdStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
UsdCloseStrong=true;
if (ShowAlerts) Alert("USD Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseStrong=false;
UsdStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (UsdStrongUpl <= JsValue)
if (UsdStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("USD Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (UsdStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (UsdStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("USD Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (UsdStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == UsdStrongMagicNumber)
if (MagicNumber == UsdWeakMagicNumber)
{
if (UsdCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseWeak=false;
UsdWeakPending=false;
return;
}//if (ClosureSucceeded)
}//if (UsdCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(UsdWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(UsdWeakMagicNumber);
if (CloseNeeded)
{
UsdCloseWeak=true;
if (ShowAlerts) Alert("USD Weak basket is being closed by the StrengthInProfitClose method ",UsdVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseWeak=false;
UsdWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (UsdWeakUpl >= BasketWeakDollarTP)
{
UsdCloseWeak=true;
if (ShowAlerts) Alert("Usd Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseWeak=false;
UsdWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (UsdWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (UsdWeakUpl <= WeakSL)
{
UsdCloseWeak=true;
if (ShowAlerts) Alert("USD Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseWeak=false;
UsdWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (UsdWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(UsdWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (UsdWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
UsdCloseWeak=true;
if (ShowAlerts) Alert("USD Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
UsdCloseWeak=false;
UsdWeakPending=false;
return;
}//if (ClosureSucceeded) return;
}//if (UsdWeakUpl <= JsValue)
if (UsdWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("USD Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (UsdWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (UsdWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("USD Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (UsdWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == UsdWeakMagicNumber)
if (MagicNumber == GbpStrongMagicNumber)
{
if (GbpCloseStrong)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseStrong=false;
GbpStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (GbpCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(GbpStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(GbpStrongMagicNumber);
if (CloseNeeded)
{
GbpCloseStrong=true;
if (ShowAlerts) Alert("GBP Strong basket is being closed by the StrengthInProfitClose method ",GbpVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseStrong=false;
GbpStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (GbpStrongUpl >= BasketStrongDollarTP)
{
GbpCloseStrong=true;
if (ShowAlerts) Alert("Gbp Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseStrong=false;
GbpStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (GbpStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (GbpStrongUpl <= StrongSL)
{
GbpCloseStrong=true;
if (ShowAlerts) Alert("GBP Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseStrong=false;
GbpStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (GbpStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(GbpStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (GbpStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
GbpCloseStrong=true;
if (ShowAlerts) Alert("GBP Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseStrong=false;
GbpStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (GbpStrongUpl <= JsValue)
if (GbpStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("GBP Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (GbpStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (GbpStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("GBP Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (GbpStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == GbpStrongMagicNumber)
if (MagicNumber == GbpWeakMagicNumber)
{
if (GbpCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseWeak=false;
GbpWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (GbpCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(GbpWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(GbpWeakMagicNumber);
if (CloseNeeded)
{
GbpCloseWeak=true;
if (ShowAlerts) Alert("GBP Weak basket is being closed by the StrengthInProfitClose method ",GbpVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseWeak=false;
GbpWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (GbpWeakUpl >= BasketWeakDollarTP)
{
GbpCloseWeak=true;
if (ShowAlerts) Alert("Gbp Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseWeak=false;
GbpWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (GbpWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (GbpWeakUpl <= WeakSL)
{
GbpCloseWeak=true;
if (ShowAlerts) Alert("GBP Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseWeak=false;
GbpWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (GbpWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(GbpWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (GbpWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
GbpCloseWeak=true;
if (ShowAlerts) Alert("GBP Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
GbpCloseWeak=false;
GbpWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (GbpWeakUpl <= JsValue)
if (GbpWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("GBP Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (GbpWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (GbpWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("GBP Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (GbpWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == GbpWeakMagicNumber)
if (MagicNumber == EurStrongMagicNumber)
{
if (EurCloseStrong)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseStrong=false;
EurStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (EurCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(EurStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(EurStrongMagicNumber);
if (CloseNeeded)
{
EurCloseStrong=true;
if (ShowAlerts) Alert("EUR Strong basket is being closed by the StrengthInProfitClose method ",EurVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseStrong=false;
EurStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (EurStrongUpl >= BasketStrongDollarTP)
{
EurCloseStrong=true;
if (ShowAlerts) Alert("Eur Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseStrong=false;
EurStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (EurStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (EurStrongUpl <= StrongSL)
{
EurCloseStrong=true;
if (ShowAlerts) Alert("EUR Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseStrong=false;
EurStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (EurStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(EurStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (EurStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
EurCloseStrong=true;
if (ShowAlerts) Alert("EUR Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseStrong=false;
EurStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (EurStrongUpl <= JsValue)
if (EurStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("EUR Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (EurStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (EurStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("EUR Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (EurStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == EurStrongMagicNumber)
if (MagicNumber == EurWeakMagicNumber)
{
if (EurCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseWeak=false;
EurWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (EurCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(EurWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(EurWeakMagicNumber);
if (CloseNeeded)
{
EurCloseWeak=true;
if (ShowAlerts) Alert("EUR Weak basket is being closed by the StrengthInProfitClose method ",EurVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseWeak=false;
EurWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (EurWeakUpl >= BasketWeakDollarTP)
{
EurCloseWeak=true;
if (ShowAlerts) Alert("Eur Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseWeak=false;
EurWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (EurWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (EurWeakUpl <= WeakSL)
{
EurCloseWeak=true;
if (ShowAlerts) Alert("EUR Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseWeak=false;
EurWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (EurWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(EurWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (EurWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
EurCloseWeak=true;
if (ShowAlerts) Alert("EUR Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
EurCloseWeak=false;
EurWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (EurWeakUpl <= JsValue)
if (EurWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("EUR Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (EurWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (EurWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("EUR Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (EurWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == EurWeakMagicNumber)
if (MagicNumber == ChfStrongMagicNumber)
{
if (ChfCloseStrong)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseStrong=false;
ChfStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}// if (ChfCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(ChfStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(ChfStrongMagicNumber);
if (CloseNeeded)
{
ChfCloseStrong=true;
if (ShowAlerts) Alert("CHF Strong basket is being closed by the StrengthInProfitClose method ",ChfVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseStrong=false;
ChfStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (ChfStrongUpl >= BasketStrongDollarTP)
{
ChfCloseStrong=true;
if (ShowAlerts) Alert("Chf Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseStrong=false;
ChfStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (ChfStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (ChfStrongUpl <= StrongSL)
{
ChfCloseStrong=true;
if (ShowAlerts) Alert("CHF Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseStrong=false;
ChfStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (ChfStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(ChfStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (ChfStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
ChfCloseStrong=true;
if (ShowAlerts) Alert("CHF Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseStrong=false;
ChfStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (ChfStrongUpl <= JsValue)
if (ChfStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("CHF Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (ChfStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (ChfStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("CHF Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (ChfStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == ChfStrongMagicNumber)
if (MagicNumber == ChfWeakMagicNumber)
{
if (ChfCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseWeak=false;
ChfWeakPending=false;
return;
}//if (ClosureSucceeded)
}//if (ChfCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(ChfWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(ChfWeakMagicNumber);
if (CloseNeeded)
{
ChfCloseWeak=true;
if (ShowAlerts) Alert("CHF Weak basket is being closed by the StrengthInProfitClose method ",ChfVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseWeak=false;
ChfWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (ChfWeakUpl >= BasketWeakDollarTP)
{
ChfCloseWeak=true;
if (ShowAlerts) Alert("Chf Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseWeak=false;
ChfWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (ChfWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (ChfWeakUpl <= WeakSL)
{
ChfCloseWeak=true;
if (ShowAlerts) Alert("CHF Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseWeak=false;
ChfWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (ChfWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(ChfWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (ChfWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
ChfCloseWeak=true;
if (ShowAlerts) Alert("CHF Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
ChfCloseWeak=false;
ChfWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (ChfWeakUpl <= JsValue)
if (ChfWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("CHF Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (ChfWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (ChfWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("CHF Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (ChfWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == ChfWeakMagicNumber)
if (MagicNumber == AudStrongMagicNumber)
{
if (AudCloseStrong)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseStrong=false;
AudStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}// if (AudCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(AudStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(AudStrongMagicNumber);
if (CloseNeeded)
{
AudCloseStrong=true;
if (ShowAlerts) Alert("AUD Strong basket is being closed by the StrengthInProfitClose method ",AudVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseStrong=false;
AudStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (AudStrongUpl >= BasketStrongDollarTP)
{
AudCloseStrong=true;
if (ShowAlerts) Alert("Aud Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseStrong=false;
AudStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (AudStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (AudStrongUpl <= StrongSL)
{
AudCloseStrong=true;
if (ShowAlerts) Alert("Aud Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseStrong=false;
AudStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (AudStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(AudStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (AudStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
AudCloseStrong=true;
if (ShowAlerts) Alert("Aud Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseStrong=false;
AudStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (AudStrongUpl <= JsValue)
if (AudStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Aud Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (AudStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (AudStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Aud Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (AudStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == AudStrongMagicNumber)
if (MagicNumber == AudWeakMagicNumber)
{
if (AudCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseWeak=false;
AudWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (AudCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(AudWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(AudWeakMagicNumber);
if (CloseNeeded)
{
AudCloseWeak=true;
if (ShowAlerts) Alert("AUD Weak basket is being closed by the StrengthInProfitClose method ",AudVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseWeak=false;
AudWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (AudWeakUpl >= BasketWeakDollarTP)
{
AudCloseWeak=true;
if (ShowAlerts) Alert("Aud Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseWeak=false;
AudWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (AudWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (AudWeakUpl <= WeakSL)
{
AudCloseWeak=true;
if (ShowAlerts) Alert("Aud Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseWeak=false;
AudWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (AudWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(AudWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (AudWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
AudCloseWeak=true;
if (ShowAlerts) Alert("Aud Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
AudCloseWeak=false;
AudWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (AudWeakUpl <= JsValue)
if (AudWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Aud Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (AudWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (AudWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Aud Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (AudWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == AudWeakMagicNumber)
if (MagicNumber == NzdStrongMagicNumber)
{
if (NzdCloseStrong)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseStrong=false;
NzdStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}// if (NzdCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(NzdStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(NzdStrongMagicNumber);
if (CloseNeeded)
{
NzdCloseStrong=true;
if (ShowAlerts) Alert("NZD Strong basket is being closed by the StrengthInProfitClose method ",NzdVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseStrong=false;
NzdStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (NzdStrongUpl >= BasketStrongDollarTP)
{
NzdCloseStrong=true;
if (ShowAlerts) Alert("Nzd Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseStrong=false;
NzdStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (NzdStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (NzdStrongUpl <= StrongSL)
{
NzdCloseStrong=true;
if (ShowAlerts) Alert("Nzd Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseStrong=false;
NzdStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (NzdStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(NzdStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (NzdStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
NzdCloseStrong=true;
if (ShowAlerts) Alert("Nzd Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseStrong=false;
NzdStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (NzdStrongUpl <= JsValue)
if (NzdStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Nzd Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (NzdStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (NzdStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Nzd Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (NzdStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == NzdStrongMagicNumber)
if (MagicNumber == NzdWeakMagicNumber)
{
if (NzdCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseWeak=false;
NzdWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (NzdCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(NzdWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(NzdWeakMagicNumber);
if (CloseNeeded)
{
NzdCloseWeak=true;
if (ShowAlerts) Alert("NZD Weak basket is being closed by the StrengthInProfitClose method ",NzdVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseWeak=false;
NzdWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (NzdWeakUpl >= BasketWeakDollarTP)
{
NzdCloseWeak=true;
if (ShowAlerts) Alert("Nzd Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseWeak=false;
NzdWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (NzdWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (NzdWeakUpl <= WeakSL)
{
NzdCloseWeak=true;
if (ShowAlerts) Alert("Nzd Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseWeak=false;
NzdWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (NzdWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(NzdWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (NzdWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
NzdCloseWeak=true;
if (ShowAlerts) Alert("Nzd Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
NzdCloseWeak=false;
NzdWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (NzdWeakUpl <= JsValue)
if (NzdWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Nzd Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (NzdWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (NzdWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Nzd Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (NzdWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == NzdWeakMagicNumber)
if (MagicNumber == CadStrongMagicNumber)
{
if (CadCloseStrong)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseStrong=false;
CadStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}// if (CadCloseStrong)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(CadStrongMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(CadStrongMagicNumber);
if (CloseNeeded)
{
CadCloseStrong=true;
if (ShowAlerts) Alert("CAD Strong basket is being closed by the StrengthInProfitClose method ",CadVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseStrong=false;
CadStrongPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (CadStrongUpl >= BasketStrongDollarTP)
{
CadCloseStrong=true;
if (ShowAlerts) Alert("Cad Strong basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseStrong=false;
CadStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (CadStrongUpl >= BasketStrongDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (CadStrongUpl <= StrongSL)
{
CadCloseStrong=true;
if (ShowAlerts) Alert("Cad Strong basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseStrong=false;
CadStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (CadStrongUpl <= StrongSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(CadStrongMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (CadStrongUpl <= JsValue)
{
GlobalVariableDel(GvName);
CadCloseStrong=true;
if (ShowAlerts) Alert("Cad Strong basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseStrong=false;
CadStrongPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (CadStrongUpl <= JsValue)
if (CadStrongUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Cad Strong basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (CadStrongUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (CadStrongUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Cad Strong basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (CadStrongUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == CadStrongMagicNumber)
if (MagicNumber == CadWeakMagicNumber)
{
if (CadCloseWeak)
{
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseWeak=false;
CadWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (CadCloseWeak)
if (TradeRangeMethod)
{
if (StrengthInProfitClose) CloseNeeded = StrengthProfitCloseDecision(CadWeakMagicNumber);
if (StrengthInLossClose) CloseNeeded = StrengthLossCloseDecision(CadWeakMagicNumber);
if (CloseNeeded)
{
CadCloseWeak=true;
if (ShowAlerts) Alert("CAD Weak basket is being closed by the StrengthInProfitClose method ",CadVal);
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseWeak=false;
CadWeakPending=false;
return;
}//if (ClosureSucceeded)
}// if (CloseNeeded)
}//if (TradeRangeMethod)
if (BasketClosureTP)
{
if (CadWeakUpl >= BasketWeakDollarTP)
{
CadCloseWeak=true;
if (ShowAlerts) Alert("CAD Weak basket hit TP. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseWeak=false;
CadWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (CadWeakUpl >= BasketWeakDollarTP)
}//if (BasketClosureTP)
if (BasketClosureSL)
{
if (CadWeakUpl <= WeakSL)
{
CadCloseWeak=true;
if (ShowAlerts) Alert("CAD Weak basket hit SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseWeak=false;
CadWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (CadWeakUpl <= WeakSL)
}//if (BasketClosureSL)
if (UseJumpingStop)
{
GvName = DoubleToStr(CadWeakMagicNumber, 0);
if (GlobalVariableCheck(GvName))
{
JsValue = GlobalVariableGet(GvName);// JumpingStopValue
if (CadWeakUpl <= JsValue)
{
GlobalVariableDel(GvName);
CadCloseWeak=true;
if (ShowAlerts) Alert("Cad Weak basket hit jumping SL. Closing the basket.");
ClosureSucceeded = CloseBasket(MagicNumber);
if (ClosureSucceeded)
{
CadCloseWeak=false;
CadWeakPending=false;
return;
}//if (ClosureSucceeded)
return;
}//if (CadWeakUpl <= JsValue)
if (CadWeakUpl >= JsValue + (JumpingStopDollars * 2))
{
JsValue = JsValue + JumpingStopDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Cad Weak basket jumping stop moved to ",CurrencySymbol,JsValue);
}//if (CadWeakUpl >= JsValue + (JumpingStopDollars * 2))
}//if (GlobalVariableCheck(GvName))
if (!GlobalVariableCheck(GvName))
{
if (CadWeakUpl >= JumpingStopDollars)
{
JsValue = LockInDollars;
GlobalVariableSet(GvName, JsValue);
if (ShowAlerts) Alert("Cad Weak basket jumping stop set at ",CurrencySymbol,JsValue);
}//if (CadWeakUpl <= JumpingStopDollars)
}//if (!GlobalVariableCheck(GvName))
}//if (UseJumpingStop)
}// if (MagicNumber == CadWeakMagicNumber)
}// End void ManageOpenBaskets(int MagicNumber)
bool CheckIfTradeAlreadyExists(string symbol, int type, int MagicNumber)
{
if (OrdersTotal()==0) return(false);
for (int cc = OrdersTotal(); cc > 0; cc--)
{
if (!OrderSelect(cc, SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol()==symbol && OrderMagicNumber()==MagicNumber && OrderType()==type) return(true);
}
return(false);
}// end bool CheckIfTradeAlreadyExists(string symbol, int type)
void JpySendStrongTrades()
{
string symbol;
string TradeComment = JpyTradeComment;
int MagicNumber = JpyStrongMagicNumber;
JpyStrongPending=false;
symbol = StringConcatenate("USDJPY", PairSuffix);
bool TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeUSDJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
bool result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) JpyStrongTradesSent++;
}
symbol = StringConcatenate("EURJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeEURJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) JpyStrongTradesSent++;
}
symbol = StringConcatenate("GBPJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeGBPJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) JpyStrongTradesSent++;
}
symbol = StringConcatenate("CHFJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeCHFJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) JpyStrongTradesSent++;
}
symbol = StringConcatenate("AUDJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeAUDJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) JpyStrongTradesSent++;
}
symbol = StringConcatenate("NZDJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeNZDJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) JpyStrongTradesSent++;
}
symbol = StringConcatenate("CADJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeCADJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) JpyStrongTradesSent++;
}
}// End void JpySendStrongTrades()
void JpySendWeakTrades()
{
string symbol;
string TradeComment = JpyTradeComment;
int MagicNumber = JpyWeakMagicNumber;
JpyWeakPending=false;
symbol = StringConcatenate("USDJPY", PairSuffix);
bool TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeUSDJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
bool result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) JpyWeakTradesSent++;
}
symbol = StringConcatenate("EURJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeEURJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) JpyWeakTradesSent++;
}
symbol = StringConcatenate("GBPJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeGBPJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) JpyWeakTradesSent++;
}
symbol = StringConcatenate("CHFJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeCHFJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) JpyWeakTradesSent++;
}
symbol = StringConcatenate("AUDJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeAUDJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) JpyWeakTradesSent++;
}
symbol = StringConcatenate("NZDJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeNZDJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) JpyWeakTradesSent++;
}
symbol = StringConcatenate("CADJPY", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeCADJPY && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) JpyWeakTradesSent++;
}
}// End void JpySendStrongTrades()
void JpyCountOpenTrades()
{
JpyStrongTradesSent=0;
JpyWeakTradesSent=0;
JpyWeakUpl=0;
JpyStrongUpl=0;
if (OrdersTotal() == 0) return(0);
for (int cc = 0; cc < OrdersTotal(); cc++)
{
OrderSelect(cc, SELECT_BY_POS);
if (OrderMagicNumber()== JpyWeakMagicNumber)
{
JpyWeakTradesSent++;
JpyWeakUpl=JpyWeakUpl + OrderProfit();
}
if (OrderMagicNumber()== JpyStrongMagicNumber)
{
JpyStrongTradesSent++;
JpyStrongUpl = JpyStrongUpl + OrderProfit();
}
}//for (int cc = 0; cc < OrdersTotal(); cc++)
}// End void JpyCountOpenTrades()
void xxxJpyTrades()
{
JpyCountOpenTrades();
string GvName;
if (JpyStrongTradesSent == 0)
{
GvName = DoubleToStr(JpyStrongMagicNumber,0);
if (GlobalVariableCheck(GvName)) GlobalVariableDel(GvName);
}//if (JpyStrongTradesSent == 0)
if (JpyWeakTradesSent == 0)
{
GvName = DoubleToStr(JpyWeakMagicNumber,0);
if (GlobalVariableCheck(GvName)) GlobalVariableDel(GvName);
}//if (JpyWeakTradesSent == 0)
if (JpyStrongTradesSent >= JpyMaxTrades)
{
JpySendStrongTrades=false;
JpyStrongPending=false;
}//if (NoOfTradesOpened >= JpyMaxTrades)
if (JpyStrongTradesSent > 0 && JpyManagedByThisEA)
{
ManageOpenBaskets(JpyStrongMagicNumber);
}//if (JpyStrongTradesSent > 0 && JpyManagedByThisEA)
if (JpyWeakTradesSent >= JpyMaxTrades)
{
JpySendWeakTrades=false;
JpyWeakPending=false;
}//if (NoOfTradesOpened >= JpyMaxTrades)
if (JpyWeakTradesSent > 0 && JpyManagedByThisEA)
{
ManageOpenBaskets(JpyWeakMagicNumber);
}//if (JpyWeakTradesSent > 0 && JpyManagedByThisEA)
JpyVal = iCustom(NULL,0, "KG RS GROUP V1.1",1,0);
DisplayUserFeedback();
if (JpySendStrongTrades && OrdersTotal() < MaxTradesAllowed)
{
JpySendStrongTrades();
if (JpyStrongTradesSent >= JpyMaxTrades)// Basket opening has succeeded
{
JpySendStrongTrades=false;
JpyStrongPending=false;
return;
}//if (NoOfTradesOpened >= JpyMaxTrades)
}//if (JpyStrongTradesSent)
if (JpySendWeakTrades && OrdersTotal() < MaxTradesAllowed)
{
JpySendWeakTrades();
if (JpyWeakTradesSent >= JpyMaxTrades)// Basket opening has succeeded
{
JpySendWeakTrades=false;
JpyWeakPending=false;
return;
}//if (NoOfTradesOpened >= JpyMaxTrades)
}//if (JpyStrongTradesSent)
if (UseAsiaTimeFilter && IsAsianSession)
{
JpyStrongPending = false;
JpyValidatingStrong=false;
JpyWeakPending = false;
JpyValidatingWeak=false;
return;
}//if (UseAsiaTimeFilter && IsAsianSession)
if (TradeRangeMethod)
{
if (JpyVal < StrongEntryPending && JpyStrongTradesSent==0 && TradeStrong && !JpyValidatingStrong)
{
JpyStrongPending=true;
return;
}//if (JpyVal < StrongEntryPending && JpyStrongTradesSent==0 && TradeStrong)
if (JpyStrongPending && JpyVal >= (StrongEntryPending+RetraceDistance))
{
JpyValidatingStrong=true;
JpyPendingTime=TimeCurrent();
JpyStrongPending=false;
return;
}//if (JpyStrongPending && JpyVal > StrongEntryPending)
if (JpyValidatingStrong)
{
bool TimeUp = HasPendingWaitingTimePassed(JpyPendingTime); // Returns true if so
if ((TimeUp && JpyVal >= (StrongEntryPending+RetraceDistance)) || JpyVal >= StrongEntryPending+RetraceDistance+EndValidationPoints)
{
int TradesAvailable = CalculateNoOfAvailableTrades(JpyStrongMagicNumber);
if (TradesAvailable < MinTradesPerBasket)
{
JpyStrongPending=false;
JpyValidatingStrong=false;
return;
}
if (ShowAlerts) Alert("Opening Strong JPY basket");
JpyStrongTradesSent=true;
JpySendStrongTrades();
JpyStrongPending=false;
JpyValidatingStrong=false;
} //if (TimeUp && JpyVal >= (StrongEntryPending+RetraceDistance))
if ((TimeUp && JpyVal < (StrongEntryPending+RetraceDistance)) || (!TimeUp && JpyVal < (StrongEntryPending+RetraceDistance)))
{
JpyValidatingStrong=false;
}//if (TimeUp && JpyVal < (StrongEntryPending+RetraceDistance))
}//if (JpyValidatingStrong)
if (JpyVal > WeakEntryPending && JpyWeakTradesSent==0 && TradeWeak && !JpyValidatingWeak)
{
JpyWeakPending=true;
return;
}//if (JpyVal < WeakEntryPending && JpyWeakTradesSent==0 && TradeWeak)
if (JpyWeakPending && JpyVal <= (WeakEntryPending-RetraceDistance))
{
JpyValidatingWeak=true;
JpyPendingTime=TimeCurrent();
JpyWeakPending=false;
return;
}//if (JpyWeakPending && JpyVal > WeakEntryPending)
if (JpyValidatingWeak)
{
TimeUp = HasPendingWaitingTimePassed(JpyPendingTime); // Returns true if so
if ((TimeUp && JpyVal <= (WeakEntryPending-RetraceDistance)) || JpyVal <= WeakEntryPending-RetraceDistance-RetraceDistance)
{
TradesAvailable = CalculateNoOfAvailableTrades(JpyWeakMagicNumber);
if (TradesAvailable < MinTradesPerBasket)
{
JpyWeakPending=false;
JpyValidatingWeak=false;
return;
}
if (ShowAlerts) Alert("Opening Weak JPY basket");
JpyWeakTradesSent=true;
JpySendWeakTrades();
JpyWeakPending=false;
JpyValidatingWeak=false;
} //if (TimeUp && JpyVal >= (WeakEntryPending+RetraceDistance))
if ((TimeUp && JpyVal > (WeakEntryPending-RetraceDistance)) || (!TimeUp && JpyVal > (WeakEntryPending-RetraceDistance)))
{
JpyValidatingWeak=false;
}//if (TimeUp && JpyVal < (WeakEntryPending+RetraceDistance))
}//if (JpyValidatingWeak)
}//if (TradeRangeMethod)
if (TradeOriginalMethod)
{
string Strength = CalaulateDiffForOriginalMethod("JPY");
if (Strength == "Weak")
{
if ((JpyVal <= WeakUpperBound && JpyVal >= WeakLowerBound) && Diff >= MinDiff && JpyWeakTradesSent ==0 && OrdersTotal() < MaxTradesAllowed)
{
TradesAvailable = CalculateNoOfAvailableTrades(JpyWeakMagicNumber);
if (TradesAvailable < MinTradesPerBasket)
{
return;
}//if (TradesAvailable < MinTradesPerBasket)
if (ShowAlerts) Alert("Opening Weak JPY basket");
JpySendWeakTrades=true;
JpySendWeakTrades();
}// if ((JpyVal <= WeakUpperBound && JpyVal >= WeakLowerBound)&& Diff >= MinDiff)
} // if (Strength == "Weak")
if (Strength == "Strong")
{
if ((JpyVal <= StrongUpperBound && JpyVal >= StrongLowerBound) && Diff >= MinDiff && JpyStrongTradesSent == 0 && OrdersTotal() < MaxTradesAllowed)
{
TradesAvailable = CalculateNoOfAvailableTrades(JpyStrongMagicNumber);
if (TradesAvailable < MinTradesPerBasket)
{
return;
}//if (TradesAvailable < MinTradesPerBasket)
if (ShowAlerts) Alert("Opening Strong JPY basket");
JpySendStrongTrades=true;
JpySendStrongTrades();
}// if ((JpyVal <= WeakUpperBound && JpyVal >= WeakLowerBound)&& Diff >= MinDiff)
} // if (Strength == "Strong")
}//if (TradeOriginalMethod)
}// void xxxJpyTrades()
void UsdSendStrongTrades()
{
string symbol;
string TradeComment = UsdTradeComment;
int MagicNumber = UsdStrongMagicNumber;
UsdStrongPending=false;
symbol = StringConcatenate("USDJPY", PairSuffix);
bool TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeUSDJPY1 && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
bool result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) UsdStrongTradesSent++;
}
symbol = StringConcatenate("USDCHF", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeUSDCHF && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) UsdStrongTradesSent++;
}
symbol = StringConcatenate("USDCAD", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_BUY, MagicNumber);
if (!TradeExists && TradeUSDCAD && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_BUY, TradeComment, MagicNumber);
if (result) UsdStrongTradesSent++;
}
symbol = StringConcatenate("NZDUSD", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeNZDUSD && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) UsdStrongTradesSent++;
}
symbol = StringConcatenate("EURUSD", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeEURUSD && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) UsdStrongTradesSent++;
}
symbol = StringConcatenate("GBPUSD", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeGBPUSD && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) UsdStrongTradesSent++;
}
symbol = StringConcatenate("AUDUSD", PairSuffix);
TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeAUDUSD && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) UsdStrongTradesSent++;
}
}// End void UsdSendStrongTrades()
void UsdSendWeakTrades()
{
string symbol;
string TradeComment = UsdTradeComment;
int MagicNumber = UsdWeakMagicNumber;
UsdWeakPending=false;
symbol = StringConcatenate("USDJPY", PairSuffix);
bool TradeExists = CheckIfTradeAlreadyExists(symbol, OP_SELL, MagicNumber);
if (!TradeExists && TradeUSDJPY1 && MarketInfo(symbol,MODE_SPREAD) <= MaximumSpread)
{
bool result = SendTrade(symbol, OP_SELL, TradeComment, MagicNumber);
if (result) UsdWeakTradesSent++;
}
symbol = StringConcatenate("USDCHF", PairSuffiПоказано первые 50% кода (символов: 187211)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.