WallStreet Forex Robot ver. 3.8.5 FINAL (Pirate Edition)
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «wall street + ozzy èpa¿¡án ïỬá 2012.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
WallStreet Forex Robot — торговый советник для MetaTrader 4, ориентированный на работу с валютными парами в таймфрейме M15. Советник анализирует ценовые данные с помощью набора технических индикаторов и на основе полученных сигналов открывает длинные и короткие позиции. Логика включает проверку волатильности, фильтрацию по спреду и управление ордерами.
Продукт поддерживает несколько режимов управления объёмами: фиксированный лот, автоматическое управление капиталом (AutoMM) и режим восстановления с анализом истории сделок. Есть возможность модификации открытых ордеров, закрытия позиций по различным условиям, а также контроль хеджевых позиций. Советник предоставляет настройки ограничения спреда, количества попыток реквотирования и ведения журналов.
Советник работает на платформе MetaTrader 4, использует стандартные торговые API платформы для открытия, модификации и закрытия позиций. Встроена диагностика ошибок и вывод информации на график.
Настройки программы
| Настройка | Описание |
|---|---|
| Name | Name — Название советника. |
| Copy | Copy — Текстовый параметр, содержащий информацию об авторских правах. |
| Op2 | Op2 — Текстовый параметр с дополнительным описанием операции. |
| Symbol_Op | Symbol_Op — Символ и таймфрейм торговли (например, EURUSD m15). |
| Op | Op — Текстовый параметр с описанием операции. |
| ?????? ????? ??? ????, ????? ?????? ?? ????? ???? ??????????? (???? ?????????? ???????) (Date) | Date — Дата оптимизации, используется для отображения информации на графике. |
| _TP | _TP — Текстовый параметр с описанием настроек тейк-профита. |
| (10 2 60) (TakeProfit) | TakeProfit — Тейк-профит в пунктах для открытых позиций. |
| (100 10 200) (StopLoss) | StopLoss — Стоп-лосс в пунктах для открытых позиций. |
| ????????? ???????? ???????. ???? ?????????, ?? ???????? ?????? ??????????? ????? ? ?????. (UseStopLevels) | UseStopLevels — Использование уровней стоп-лосс и тейк-профит при открытии и модификации ордеров. |
| ????????? ????????? ?????????? ???????? ??????? (??????? ?????????, ????? ????????????) (IsMarketExecution) | IsMarketExecution — Переключатель режима исполнения ордеров (Market Execution или обычный режим с указанием SL/TP при отправке). |
| (0 1 5) ????? ? ????????? (SecureProfit) | SecureProfit — Количество пунктов для фиксации прибыли при модификации ордера. |
| (10 2 30) (SecureProfitTriger) | SecureProfitTriger — Триггер в пунктах для начала модификации ордера в сторону фиксации прибыли. |
| (-200 5 -20) ???????????? ???????? ??? ???????? ??????? Buy ? Sell ??? ????????? ??????? (??? ?????? (MaxLossPoints) | MaxLossPoints — Максимальный убыток в пунктах для закрытия убыточной позиции Buy или Sell. |
| _MM | _MM — Текстовый параметр с описанием настроек управления капиталом. |
| ????????? ?????? ?????????????? ???????? (?????????? ???? ???? ???????? ????-????) (RecoveryMode) | RecoveryMode — Включение режима восстановления с автоматическим пересчётом лота на основе истории сделок. |
| ????????????? ????? ???? (FixedLot) | FixedLot — Фиксированный размер лота при отключённом AutoMM. |
| ?? ?????????? ???? AutoMM > 0. ??????? ?????. ??? RecoveryMode = FALSE, ?????? ????? ?????? ??? ???? (AutoMM) | AutoMM — Автоматическое управление размером лота. При AutoMM > 0 рассчитывается лот на основе свободных средств. При RecoveryMode = FALSE используется фиксированный расчёт. |
| ???????????? ???? (AutoMM_Max) | AutoMM_Max — Максимальное значение AutoMM для ограничения размера лота. |
| ????? ???????? ????? ??????? ??? ???????(???????????? ??? RecoveryMode = True) (MaxAnalizCount) | MaxAnalizCount — Количество исторических ордеров для анализа в режиме RecoveryMode. |
| ???? ?? ???????? (???????????? ??? RecoveryMode = True) (Risk) | Risk — Процент риска, используемый в режиме RecoveryMode. |
| ??????????? ????????? ???? (???????????? ??? RecoveryMode = True) (MultiLotPercent) | MultiLotPercent — Процент множителя лота, используемый в режиме RecoveryMode. |
| _Vola | _Vola — Текстовый параметр с описанием настроек волатильности. |
| (15 1 30) (VolaFilter) | VolaFilter — Фильтр волатильности — пороговое значение разницы между максимумом и минимумом свечи для ограничения торговли. |
| _Periods | _Periods — Текстовый параметр с описанием периодов. |
| (60 5 100) (iMA_Period) | iMA_Period — Период индикатора скользящей средней (MA). |
| (10 2 30) (iCCI_Period) | iCCI_Period — Период индикатора CCI для анализа. |
| (10 2 30) (!) ????? ?? ?????? (iATR_Period) | iATR_Period — Период индикатора ATR для анализа волатильности. |
| (10 1 20) (iWPR_Period) | iWPR_Period — Период индикатора WPR. |
| _Add_Op | _Add_Op — Текстовый параметр для дополнительных настроек операций. |
| _AddOpenFilters | _AddOpenFilters — Текстовый параметр для дополнительных фильтров открытия. |
| (0 1 10) ???????? ?? ???? ?? ATR ??? Buy ? Sell (if (iATR_Signal <= FilterATR * pp) return (0);) (!) (FilterATR) | FilterATR — Фильтр ATR для фильтрации сигналов открытия позиций Buy и Sell. |
| (100 10 400) ?????? ?? iCCI ??? Buy ? Sell. ??? ??????????? ??? JPY ???????????? ?????? ?? ??????? ( (iCCI_OpenFilter) | iCCI_OpenFilter — Пороговое значение iCCI для фильтрации сигналов открытия позиций Buy и Sell. |
| _OpenOrderFilters | _OpenOrderFilters — Текстовый параметр для дополнительных фильтров открытия ордеров. |
| (4 2 20) ?????? ?? ??? ???????? Buy ? Sell (?????) (iMA_Filter_Open_a) | iMA_Filter_Open_a — Первый пороговый параметр фильтра скользящей средней для сигналов открытия Buy и Sell. |
| (14 2 50) ?????? ?? ??? ???????? Buy ? Sell (?????) (iMA_Filter_Open_b) | iMA_Filter_Open_b — Второй пороговый параметр фильтра скользящей средней для сигналов открытия Buy и Sell. |
| (-100 1 0) ?????? WPR ??? ???????? Buy ? Sell (iWPR_Filter_Open_a) | iWPR_Filter_Open_a — Первый пороговый параметр WPR для фильтрации сигналов открытия Buy. |
| (-100 1 0) ?????? WPR ??? ???????? Buy ? Sell (iWPR_Filter_Open_b) | iWPR_Filter_Open_b — Второй пороговый параметр WPR для фильтрации сигналов открытия Buy. |
| _CloseOrderFilters | _CloseOrderFilters — Текстовый параметр для дополнительных фильтров закрытия ордеров. |
| (10 2 20) ?????? ???? ???????? ??? ???????? Buy ? Sell (?????) (Price_Filter_Close) | Price_Filter_Close — Ценовой фильтр для закрытия позиций Buy и Sell. |
| (0 1 -100) ?????? WPR ??? ???????? Buy ? Sell (iWPR_Filter_Close) | iWPR_Filter_Close — Пороговое значение WPR для фильтрации сигналов закрытия позиций. |
| _Add | _Add — Текстовый параметр с дополнительным описанием. |
| ??????????? ??????? ??????? (LongTrade) | LongTrade — Разрешает открытие длинных позиций (Buy). |
| ??????????? ???????? ??????? (ShortTrade) | ShortTrade — Разрешает открытие коротких позиций (Sell). |
| ????????????? ???????? ?????? Buy ? ?????? Sell ??????. ??? True ?? ?????????. (No_Hedge_Trades) | No_Hedge_Trades — Запрет хеджевых сделок. При True запрещает одновременное наличие позиций Buy и Sell. |
| ??? True ???????? ????? ????????? ?????? 1 ????? ? 1 ?????. (? ?????? ?????? ?? ????? ??? 1 ??? ? 15 (OneOrderInBarMode) | OneOrderInBarMode — Ограничение на открытие одного ордера в свече. При True разрешает только один ордер типа Buy или Sell в пределах одной свечи. |
| MagicNumber | MagicNumber — Магический номер для идентификации ордеров советника. |
| MaxSpread | MaxSpread — Максимально допустимый спред для открытия позиций. |
| ??????????????? ??? ???????? ?????? (OpenSlippage) | OpenSlippage — Допустимое проскальзывание при открытии позиций. |
| ??????????????? ??? ???????? ?????? (CloseSlippage) | CloseSlippage — Допустимое проскальзывание при закрытии позиций. |
| ???????????? ????? ?????????? ??? ????????/???????? ?????? ??? ???????? ? ?????? ??????? (RequoteAttempts) | RequoteAttempts — Количество попыток реквотирования при повторном открытии или закрытии ордера. |
| //--- ????????? ??????????? ???? ? ?????????. (WriteLog) | WriteLog — Запись информационного журнала в лог-файл. |
| ????????? ??????????? ???? ?? ??????? ? ?????????. (WriteDebugLog) | WriteDebugLog — Запись отладочного журнала в лог-файл. |
| ????????? ???????????? ?? ??????? (??? ???????????? ??????????? ?????????????) (PrintLogOnChart) | PrintLogOnChart — Вывод информационных сообщений на график. |
Поиск по коду файла
extern string Name = "WallStreet Forex Robot ver. 3.8.5 FINAL (Pirate Edition)";
extern string Copy = "Copyright ? HELLTEAM^Pirat";
extern string Op2 = "??????????? ??? ????";
extern string Symbol_Op = "EURUSD m15";
extern string Op = "???? ???????????";
extern datetime Date = D'12.05.2011'; //--- ?????? ????? ??? ????, ????? ?????? ?? ????? ???? ??????????? (???? ?????????? ???????)
extern string _TP = "???????? ??????? ?????????";
extern int TakeProfit = 15; //--- (10 2 60)
extern int StopLoss = 120; //--- (100 10 200)
extern bool UseStopLevels = TRUE; //--- ????????? ???????? ???????. ???? ?????????, ?? ???????? ?????? ??????????? ????? ? ?????.
extern bool IsMarketExecution = true; //--- ????????? ????????? ?????????? ???????? ??????? (??????? ?????????, ????? ????????????)
extern int SecureProfit = 1; //--- (0 1 5) ????? ? ?????????
extern int SecureProfitTriger =-7; //--- (10 2 30)
extern int MaxLossPoints = 0; //--- (-200 5 -20) ???????????? ???????? ??? ???????? ??????? Buy ? Sell ??? ????????? ??????? (??? ???????? ?????? ?? - MaxLossPoints ??? ?????? (???????? ??????? 0), ????? ?????????)
extern string _MM = "????????? MM";
extern bool RecoveryMode = true; //--- ????????? ?????? ?????????????? ???????? (?????????? ???? ???? ???????? ????-????)
extern double FixedLot = 0.1; //--- ????????????? ????? ????
extern double AutoMM = 20.0; //--- ?? ?????????? ???? AutoMM > 0. ??????? ?????. ??? RecoveryMode = FALSE, ?????? ????? ?????? ??? ????????.
extern double AutoMM_Max = 30.0; //--- ???????????? ????
extern int MaxAnalizCount = 50; //--- ????? ???????? ????? ??????? ??? ???????(???????????? ??? RecoveryMode = True)
extern double Risk = 45.0; //--- ???? ?? ???????? (???????????? ??? RecoveryMode = True)
extern double MultiLotPercent = 1.1; //--- ??????????? ????????? ???? (???????????? ??? RecoveryMode = True)
extern string _Vola = "?????? ?????????????";
extern int VolaFilter = 23; //--- (15 1 30)
extern string _Periods = "??????? ???????????";
extern int iMA_Period = 75; //--- (60 5 100)
extern int iCCI_Period = 18; //--- (10 2 30)
extern int iATR_Period = 14; //--- (10 2 30) (!) ????? ?? ??????
extern int iWPR_Period = 11; //--- (10 1 20)
extern string _Add_Op = "??????????? ????????? ???????????";
extern string _AddOpenFilters = "---";
extern int FilterATR = 6; //--- (0 1 10) ???????? ?? ???? ?? ATR ??? Buy ? Sell (if (iATR_Signal <= FilterATR * pp) return (0);) (!) ????? ?? ??????
extern double iCCI_OpenFilter = 150; //--- (100 10 400) ?????? ?? iCCI ??? Buy ? Sell. ??? ??????????? ??? JPY ???????????? ?????? ?? ??????? (100 50 4000)
extern string _OpenOrderFilters = "---";
extern int iMA_Filter_Open_a = 15; //--- (4 2 20) ?????? ?? ??? ???????? Buy ? Sell (?????)
extern int iMA_Filter_Open_b = 39; //--- (14 2 50) ?????? ?? ??? ???????? Buy ? Sell (?????)
extern int iWPR_Filter_Open_a = -99; //--- (-100 1 0) ?????? WPR ??? ???????? Buy ? Sell
extern int iWPR_Filter_Open_b = -95; //--- (-100 1 0) ?????? WPR ??? ???????? Buy ? Sell
extern string _CloseOrderFilters = "---";
extern int Price_Filter_Close = 14; //--- (10 2 20) ?????? ???? ???????? ??? ???????? Buy ? Sell (?????)
extern int iWPR_Filter_Close = -19; //--- (0 1 -100) ?????? WPR ??? ???????? Buy ? Sell
extern string _Add = "??????????? ?????????";
extern bool LongTrade = TRUE; //--- ??????????? ??????? ???????
extern bool ShortTrade = TRUE; //--- ??????????? ???????? ???????
extern bool No_Hedge_Trades = false; //--- ????????????? ???????? ?????? Buy ? ?????? Sell ??????. ??? True ?? ?????????.
extern bool OneOrderInBarMode = TRUE; //--- ??? True ???????? ????? ????????? ?????? 1 ????? ? 1 ?????. (? ?????? ?????? ?? ????? ??? 1 ??? ? 15 ?????). ? ??????? ?? ????????, ??? ??? ????????? ??? ? 10 ???.
extern int MagicNumber = 777;
extern double MaxSpread = 4;
extern double OpenSlippage = 3; //--- ??????????????? ??? ???????? ??????
extern double CloseSlippage = 5; //--- ??????????????? ??? ???????? ??????
extern int RequoteAttempts = 5; //--- ???????????? ????? ?????????? ??? ????????/???????? ?????? ??? ???????? ? ?????? ???????
extern bool WriteLog = TRUE; //--- //--- ????????? ??????????? ???? ? ?????????.
extern bool WriteDebugLog = TRUE; //--- ????????? ??????????? ???? ?? ??????? ? ?????????.
extern bool PrintLogOnChart = TRUE; //--- ????????? ???????????? ?? ??????? (??? ???????????? ??????????? ?????????????)
double pp;
int pd;
double cf;
string EASymbol; //--- ??????? ??????
int SP;
int CloseSP;
int MaximumTrades = 1;
double NDMaxSpread; //--- ???????????? ????? ????? ???????
bool CheckSpreadRuleBuy; //--- ??????? ??? ???????? ?????? ????? ????????? (????????????? ???????????? ????????? ? ??????????? ??????)
bool CheckSpreadRuleSell;
string OpenOrderComment = "WSFR v3.8.5 FINAL";
int RandomOpenTimePercent = 0; //--- ???????????? ??? ??????? ?????? ??????? ?????????, ??????????? ????????? ?????. ?????????? ? ????????.
double MinLot = 0.01;
double MaxLot = 0.01;
double LotStep = 0.01;
int LotValue = 100000;
double FreeMargin = 1000.0;
double LotPrice = 1;
double LotSize;
int iWPR_Filter_OpenLong_a;
int iWPR_Filter_OpenLong_b;
int iWPR_Filter_OpenShort_a;
int iWPR_Filter_OpenShort_b;
int iWPR_Filter_CloseLong;
int iWPR_Filter_CloseShort;
color OpenBuyColor = Blue;
color OpenSellColor = Red;
color CloseBuyColor = DodgerBlue;
color CloseSellColor = DeepPink;
void init() {
// код доступен только после оплаты
}
int deinit() {
if (ObjectFind("BKGR") >= 0) ObjectDelete("BKGR");
if (ObjectFind("BKGR2") >= 0) ObjectDelete("BKGR2");
if (ObjectFind("BKGR3") >= 0) ObjectDelete("BKGR3");
if (ObjectFind("BKGR4") >= 0) ObjectDelete("BKGR4");
if (ObjectFind("LV") >= 0) ObjectDelete("LV");
return (0);
}
int start() {
// код доступен только после оплаты
}
void Scalper() {
bool OpenBuyRule = TRUE;
bool OpenSellRule = TRUE;
if (No_Hedge_Trades == TRUE && CheckOpenTrade(OP_SELL)) OpenBuyRule = FALSE;
if (No_Hedge_Trades == TRUE && CheckOpenTrade(OP_BUY)) OpenSellRule = FALSE;
if (OpenLongSignal() && !CheckOpenTrade(OP_BUY) && OpenBuyRule && OneOrderInBar(OP_BUY) && LongTrade) {
if (MaxSpreadFilter()) {
if (!CheckSpreadRuleBuy && WriteDebugLog) {
Print("???????? ?????? ?? ??????? ???????? ??-?? ???????? ??????.");
Print("??????? ????? = ", DoubleToStr((Ask - Bid) / pp, 1), ", MaxSpread = ", DoubleToStr(MaxSpread, 1));
Print("??????? WSFR 3.8.5 ????? ????????? ?????, ????? ????? ?????? ??????????.");
}
CheckSpreadRuleBuy = TRUE;
} else {
CheckSpreadRuleBuy = FALSE;
if (CheckVolatility())
{
Print("????????????? ?????????, ??? ???????????? ?????????? ???????? ??????");
}else
{
OpenPosition(OP_BUY);
}
}
}//--- ???????? if (OpenLongSignal()
if (OpenShortSignal()&& !CheckOpenTrade(OP_SELL) && OpenSellRule && OneOrderInBar(OP_SELL) && ShortTrade) {
if (MaxSpreadFilter()) {
if (!CheckSpreadRuleSell && WriteDebugLog) {
Print("???????? ?????? ?? ??????? ???????? ??-?? ???????? ??????.");
Print("??????? ????? = ", DoubleToStr((Ask - Bid) / pp, 1), ", MaxSpread = ", DoubleToStr(MaxSpread, 1));
Print("??????? WSFR 3.8.5 ????? ????????? ?????, ????? ????? ?????? ??????????.");
}
CheckSpreadRuleSell = TRUE;
} else {
CheckSpreadRuleSell = FALSE;
if (CheckVolatility())
{
Print("????????????? ?????????, ??? ???????????? ?????????? ???????? ??????");
}else
{
OpenPosition(OP_SELL);
}
}
} //--- ???????? if (OpenShortSignal()
}
bool CheckVolatility() {
double HeightFilter_a = NormalizeDouble(VolaFilter * pp, pd);
bool restrict = false;
if (NormalizeDouble(iHigh(NULL, PERIOD_M15, 1) - iLow(NULL, PERIOD_M15, 1), pd) > HeightFilter_a) restrict = true;
if (NormalizeDouble(iHigh(NULL, PERIOD_M15, 2) - iLow(NULL, PERIOD_M15, 2), pd) > HeightFilter_a) restrict = true;
return (restrict);
}
int OpenPosition(int OpType) {
int RandomOpenTime; //--- ???????? ?? ??????? ?? ????????
color OpenColor; //--- ???? ???????? ???????. ???? Buy ?? ???????, ???? Sell ?? ???????
int OpenOrder = 0; //--- ???????? ???????
int OpenOrderError; //--- ?????? ????????
string OpTypeString; //--- ?????????????? ???? ??????? ? ????????? ????????
double OpenPrice; //--- ???? ????????
int maxtry = RequoteAttempts;
int lasterror = 0;
double price = 0;
double TP, SL;
double OrderTP = NormalizeDouble (TakeProfit * pp , pd); //--- ??????????? ????-?????? ? ??? Points
double OrderSL = NormalizeDouble (StopLoss * pp , pd); //--- ??????????? ????-???? ? ??? Points
if (RandomOpenTimePercent > 0) {
MathSrand(TimeLocal());
RandomOpenTime = MathRand() % RandomOpenTimePercent;
if (WriteLog) {
Print("DelayRandomiser: ???????? ", RandomOpenTime, " ??????.");
}
Sleep(1000 * RandomOpenTime);
} //--- ???????? if (RandomOpenTimePerc
double OpenLotSize = LotSize; //--- ?????? ?????? ???????
if (AccountFreeMarginCheck(EASymbol, OpType, OpenLotSize) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */) {
if (WriteDebugLog) {
Print("??? ???????? ?????? ???????????? ????????? ?????.");
Comment("??? ???????? ?????? ???????????? ????????? ?????.");
}
return (-1);
} //--- ???????? if (AccountFreeMarginCheck
RefreshRates();
if (OpType == OP_BUY) {
OpenPrice = NormalizeDouble(Ask, Digits);
OpenColor = OpenBuyColor;
if (UseStopLevels) { //--- ???? ???????? ????-?????? (????-???? ? ????-??????)
TP = NormalizeDouble(OpenPrice + OrderTP, Digits); //--- ?? ??????????? ????-??????
SL = NormalizeDouble(OpenPrice - OrderSL, Digits); //--- ? ????-????
} else {TP = 0; SL = 0;}
} else {
OpenPrice = NormalizeDouble(Bid, Digits);
OpenColor = OpenSellColor;
if (UseStopLevels) {
TP = NormalizeDouble(OpenPrice - OrderTP, Digits);
SL = NormalizeDouble(OpenPrice + OrderSL, Digits);
}
else {TP = 0; SL = 0;}
}
if (IsMarketExecution && UseStopLevels)
{
OpenOrder = OrderSend(EASymbol, OpType, OpenLotSize, OpenPrice, SP, 0, 0, OpenOrderComment, MagicNumber, 0, OpenColor);
if (OpenOrder > 0)
{
OrderModify(OpenOrder,OrderOpenPrice(),SL,TP,0);
return(OpenOrder);
}
}
else
{
OpenOrder = OrderSend(EASymbol, OpType, OpenLotSize, OpenPrice, SP, SL, TP, OpenOrderComment, MagicNumber, 0, OpenColor);
if (OpenOrder > 0) return(OpenOrder);
}
if ((OpType != OP_BUY) && (OpType != OP_SELL)) return(OpenOrder);
if (OpenOrder < 0) { //--- ???? ????? ?? ????????, ??
OpenOrderError = GetLastError(); //--- ?????????? ??????
if (WriteDebugLog) {
if (OpType == OP_BUY) OpTypeString = "OP_BUY";
else OpTypeString = "OP_SELL";
Print("????????: OrderSend(", OpTypeString, ") ?????? = ", ErrorDescription(OpenOrderError)); //--- ??? ?????? ?? ???????
} //--- ???????? if (WriteDebugLog)
}
lasterror = GetLastError();
if ((OpenOrder < 0) && ((lasterror == 135) || (lasterror == 138) || (lasterror == 146)))
{
Print("Requote. Error" + lasterror + ". Ticket: " + OpenOrder);
}
else
{
return(OpenOrder);
}
price = OpenPrice;
for (int attempt = 1; attempt <= maxtry; attempt++)
{
RefreshRates();
if (OpType == OP_BUY)
{
if (Ask <= price)
{
if (IsMarketExecution && UseStopLevels)
{
OpenOrder = OrderSend(EASymbol, OpType, OpenLotSize, NormalizeDouble(Ask,Digits), SP, 0, 0, OpenOrderComment, MagicNumber, 0, OpenColor);
if (OpenOrder > 0)
{
OrderModify(OpenOrder,OrderOpenPrice(),SL,TP,0);
return(OpenOrder);
}
}
else
{
OpenOrder = OrderSend(EASymbol, OpType, OpenLotSize, NormalizeDouble(Ask,Digits), SP, SL, TP, OpenOrderComment, MagicNumber, 0, OpenColor);
if (OpenOrder > 0) return(OpenOrder);
}
if ((GetLastError() != 135) && (GetLastError() != 138) && (GetLastError() != 146)) return(OpenOrder);
Print("Requote. " + "Attempt " + (attempt + 1));
continue;
}
}
if (OpType == OP_SELL)
{
if (Bid >= price)
{
if (IsMarketExecution && UseStopLevels)
{
OpenOrder = OrderSend(EASymbol, OpType, OpenLotSize, NormalizeDouble(Bid,Digits), SP, 0, 0, OpenOrderComment, MagicNumber, 0, OpenColor);
if (OpenOrder > 0)
{
OrderModify(OpenOrder,OrderOpenPrice(),SL,TP,0);
return(OpenOrder);
}
}
else
{
OpenOrder = OrderSend(EASymbol, OpType, OpenLotSize, NormalizeDouble(Bid,Digits), SP, SL, TP, OpenOrderComment, MagicNumber, 0, OpenColor);
if (OpenOrder > 0) return(OpenOrder);
}
if ((GetLastError() != 135) && (GetLastError() != 138) && (GetLastError() != 146)) return(OpenOrder);
Print("Requote. " + "Attempt " + (OpenOrder + 1));
}
}
}
return(-1);
}
void ModifyOrders() {
int total = OrdersTotal() - 1;
int ModifyError = GetLastError();
for (int i = total; i >= 0; i--) { //--- ??????? ???????? ???????
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????? ??????. ???????: ", ErrorDescription(ModifyError));
} else {
if (OrderType() == OP_BUY) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == EASymbol) {
if (Bid - OrderOpenPrice() > SecureProfitTriger * pp && MathAbs(OrderOpenPrice() + SecureProfit * pp - OrderStopLoss()) >= Point && OrderOpenPrice()<OrderStopLoss()) {
ModifyOrder(EASymbol, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + SecureProfit * pp, Digits), OrderTakeProfit(), Blue);
}
}
} //--- ???????? if (OrderType() == OP_BUY)
if (OrderType() == OP_SELL) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == EASymbol) {
if (OrderOpenPrice() - Ask > SecureProfitTriger * pp && MathAbs(OrderOpenPrice() - SecureProfit * pp - OrderStopLoss()) >= Point && OrderOpenPrice()>OrderStopLoss()) {
ModifyOrder(EASymbol, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - SecureProfit * pp, Digits), OrderTakeProfit(), Red);
}
}
} //--- ???????? if (OrderType() == OP_SELL)
}
} //--- ???????? for (int i = total - 1; i >= 0; i--)
}
void ModifyOrder(string sy="", double pp=-1, double sl=0, double tp=0, color cl=CLR_NONE) {
int ModifyTicketID = OrderTicket();
if (sy=="") sy=Symbol();
bool fm; //--- ??????????? ??????
double pAsk=MarketInfo(sy, MODE_ASK);
double pBid=MarketInfo(sy, MODE_BID);
int dg, err, it;
int PauseAfterError = 5; //--- ????? ? ???????? ????? ????????? ???????????
int NumberOfTry = 10; //--- ???-?? ??????? ??????????? ??? ????????????? ??????
if (pp<=0) pp=OrderOpenPrice();
if (sl<0) sl=OrderStopLoss();
if (tp<0) tp=OrderTakeProfit();
dg=MarketInfo(sy, MODE_DIGITS);
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
if (pp!=OrderOpenPrice() || sl!=OrderStopLoss() || tp!=OrderTakeProfit()) {
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, 0, cl);
if (!fm) {
err=GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????????? ?????? (", GetNameOP(OrderType()), ",", ModifyTicketID, "). ???????: ", ErrorDescription(err),". ??????? ?",it);
Sleep(1000*PauseAfterError);
} //--- ???????? if (!fm) {
}
}
}
void CloseOrders() {
int total = OrdersTotal() - 1;
int SelectCloseError = GetLastError();
for (int i = total; i >= 0; i--) { //--- ??????? ???????? ???????
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????? ??????. ???????: ", ErrorDescription(SelectCloseError));
} else {
if (OrderType() == OP_BUY) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == EASymbol) {
if (Bid >= OrderOpenPrice() + TakeProfit * pp || Bid <= OrderOpenPrice() - StopLoss * pp || CloseLongSignal(OrderOpenPrice(), ExistPosition())) {
CloseOrder(OrderTicket(),Bid);
}
}
} //--- ???????? if (OrderType() == OP_BUY)
if (OrderType() == OP_SELL) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == EASymbol) {
if (Ask <= OrderOpenPrice() - TakeProfit * pp || Ask >= OrderOpenPrice() + StopLoss * pp || CloseShortSignal(OrderOpenPrice(), ExistPosition())) {
CloseOrder(OrderTicket(),Ask);
}
}
} //--- ???????? if (OrderType() == OP_SELL)
}
} //--- ???????? for (int i = total - 1; i >= 0; i--) {
}
int CloseOrder(int ticket, double prce) {
double price;
int slippage;
double p = prce;
int maxtry = RequoteAttempts;
color CloseColor;
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
int ordtype = OrderType();
if (ordtype == OP_BUY) {price = NormalizeDouble(Bid,Digits); CloseColor = CloseBuyColor;}
if (ordtype == OP_SELL) {price = NormalizeDouble(Ask,Digits); CloseColor = CloseSellColor;}
if (MathAbs(OrderTakeProfit() - price) <= MarketInfo(Symbol(),MODE_FREEZELEVEL) * Point) return(0); //--- ???????? ??????? ????????? ????-???????
if (MathAbs(OrderStopLoss() - price) <= MarketInfo(Symbol(),MODE_FREEZELEVEL) * Point) return(0); //--- ???????? ??????? ????????? ????-?????
if (OrderClose(ticket,OrderLots(),price,CloseSlippage,CloseColor)) return(1); //--- ???? ????? ?????? ???????, ?? ?????????? 1)
if ((GetLastError() != 135) && (GetLastError() != 138) && (GetLastError() != 146)) return(0); //--- ???? ??? ?? 0
Print("Requote");
for (int attempt = 1; attempt <= maxtry; attempt++)
{
RefreshRates();
if (ordtype == OP_BUY)
{
slippage = MathRound((Bid - p) / pp);
if (Bid >= p)
{
Print("Closing order. Attempt " + (attempt + 1));
if (OrderClose(ticket,OrderLots(),NormalizeDouble(Bid,Digits),slippage,CloseColor)) return(1);
if (!((GetLastError() != 135) && (GetLastError() != 138) && (GetLaПоказано первые 50% кода (символов: 32435)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.