WSFR v3.8.5.1 FINAL
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «wsfr v3.8.5.1 final.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, работающий на таймфрейме M15. Использует набор технических индикаторов (скользящая средняя, CCI, ATR, WPR) для формирования сигналов на открытие и закрытие позиций. Поддерживает как длинные, так и короткие сделки с настраиваемыми фильтрами входа и выхода. Реализует управление рисками через стоп-лосс, тейк-профит, трейлинг-стоп и защиту прибыли, а также режим восстановления позиции и автоматическое управление лотом.
Настройки программы
| Настройка | Описание |
|---|---|
| _TP | Группа Take Profit — Текстовый разделитель группы параметров Take Profit. |
| (10 2 60) (TakeProfit) | Take Profit — Уровень фиксации прибыли в пунктах. |
| (100 10 200) (StopLoss) | Stop Loss — Уровень стоп-лосса в пунктах. |
| ????????? ???????? ???????. ???? ?????????, ?? ???????? ?????? ??????????? ????? ? ?????. (UseStopLevels) | Use Stop Levels — Включает отдельную обработку стоп-лосса и тейк-профита при модификации ордеров. |
| ????????? ????????? ?????????? ???????? ??????? (??????? ?????????, ????? ????????????) (IsMarketExecution) | Is Market Execution — Использовать режим рыночного исполнения с последующей установкой стоп-лосса и тейк-профита через модификацию ордера. |
| (0 1 5) ????? ? ????????? (SecureProfit) | Secure Profit — Уровень защиты прибыли в пунктах. |
| (10 2 30) ???? 0 - ?? ???????? (SecureProfitTriger) | Secure Profit Trigger — Порог срабатывания защиты прибыли в пунктах; 0 отключает функцию. |
| (-200 5 -20) ???????????? ???????? ??? ???????? ??????? Buy ? Sell ??? ????????? ??????? (??? ?????? (MaxLossPoints) | Max Loss Points — Максимальная допустимая убыточная глубина позиции в пунктах перед принудительным закрытием. |
| _tral | Группа Trailing Stop — Текстовый разделитель группы параметров трейлинг-стопа. |
| (0.04 0.05 0.99 ??? 1 1 30) ???? 0 - ?? ????????, ???? ????? 1 - ?? ? ????? ?? ??????? (???????? 0.2 (TrailingStop) | Trailing Stop — Значение трейлинг-стопа; 0 отключает функцию. |
| (0 1 30) ??? ????? (TrailingStep) | Trailing Step — Шаг сдвига трейлинг-стопа в пунктах. |
| (0 1 30) ???????? ??????? ??? ??????? ?????????? ???? (Utral) | Utral — Параметр, используемый в логике трейлинг-стопа для определения минимального удаления от цены открытия. |
| _MM | Группа Money Management — Текстовый разделитель группы параметров управления денежными средствами. |
| ????????? ?????? ?????????????? ???????? (?????????? ???? ???? ???????? ????-????) (RecoveryMode) | Recovery Mode — Включает режим восстановления позиции после серии убытков с изменением размера лота. |
| ????????????? ????? ???? (FixedLot) | Fixed Lot — Фиксированный размер лота при отключённом автоматическом управлении. |
| ?? ?????????? ???? AutoMM > 0. ??????? ?????. ??? RecoveryMode = FALSE, ?????? ????? ?????? ??? ???? (AutoMM) | Auto MM — Автоматический расчёт лота; значение больше 0 включает функцию. |
| ???????????? ???? (AutoMM_Max) | Auto MM Max — Максимальное значение автоматического расчёта лота. |
| ????? ???????? ????? ??????? ??? ???????(???????????? ??? RecoveryMode = True) (MaxAnalizCount) | Max Analiz Count — Максимальное количество анализируемых исторических ордеров для расчёта лота. |
| ???? ?? ???????? (???????????? ??? RecoveryMode = True) (Risk) | Risk — Параметр риска, используемый при расчёте размера лота в режиме восстановления. |
| ??????????? ????????? ???? (???????????? ??? RecoveryMode = True) (MultiLotPercent) | Multi Lot Percent — Множитель увеличения лота при расчёте в режиме восстановления. |
| _Periods | Группа Периодов индикаторов — Текстовый разделитель группы настроек периодов технических индикаторов. |
| (60 5 100) (iMA_Period) | MA Period — Период скользящей средней. |
| (10 2 30) (iCCI_Period) | CCI Period — Период индикатора CCI. |
| (10 2 30) (!) ????? ?? ?????? (iATR_Period) | ATR Period — Период индикатора ATR. |
| (10 1 20) (iWPR_Period) | WPR Period — Период индикатора WPR. |
| ????? ??????????. ????? ???? ????? ?? ???????? ??????? ??????????? ???????? (Moving Average). (maMethod) | MA Method — Метод расчёта скользящей средней (SMA, EMA, SMMA, LWMA). |
| maPrice | MA Price — Тип цены для расчёта скользящей средней. |
| _Add_Op | Группа дополнительных операций — Текстовый разделитель группы дополнительных операций. |
| _AddOpenFilters | Группа фильтров открытия — Текстовый разделитель группы фильтров открытия сделок. |
| (0 1 10) ???????? ?? ???? ?? ATR ??? Buy ? Sell (if (iATR_Signal <= FilterATR * pp) return (0);) (!) (FilterATR) | Filter ATR — Множитель ATR для фильтрации сигналов открытия; если ATR ниже порога, сигнал отклоняется. |
| (100 10 400) ?????? ?? iCCI ??? Buy ? Sell. ??? ??????????? ??? JPY ???????????? ?????? ?? ??????? ( (iCCI_OpenFilter) | CCI Open Filter — Пороговое значение CCI для фильтрации сигналов открытия. |
| _OpenOrderFilters | Группа фильтров открытия ордеров — Текстовый разделитель группы фильтров открытия ордеров. |
| (4 2 20) ?????? ?? ??? ???????? Buy ? Sell (?????) (iMA_Filter_Open_a) | MA Filter Open a — Пороговое отклонение цены от MA для первого условия фильтра открытия. |
| (14 2 50) ?????? ?? ??? ???????? Buy ? Sell (?????) (iMA_Filter_Open_b) | MA Filter Open b — Пороговое отклонение цены от MA для второго условия фильтра открытия. |
| (-100 1 0) ?????? WPR ??? ???????? Buy ? Sell (iWPR_Filter_Open_a) | WPR Filter Open a — Пороговое значение WPR для фильтрации сигналов открытия в длинную сторону. |
| (-100 1 0) ?????? WPR ??? ???????? Buy ? Sell (iWPR_Filter_Open_b) | WPR Filter Open b — Пороговое значение WPR для фильтрации сигналов открытия в короткую сторону. |
| _CloseOrderFilters | Группа фильтров закрытия ордеров — Текстовый разделитель группы фильтров закрытия ордеров. |
| (10 2 20) ?????? ???? ???????? ??? ???????? Buy ? Sell (?????) (Price_Filter_Close) | Price Filter Close — Минимальное ценовое смещение для условия закрытия позиции по ценовому фильтру. |
| (0 1 -100) ?????? WPR ??? ???????? Buy ? Sell (iWPR_Filter_Close) | WPR Filter Close — Пороговое значение WPR для фильтрации сигналов закрытия позиции. |
| _Add | Группа дополнительных настроек — Текстовый разделитель группы дополнительных параметров. |
| ??????????? ??????? ??????? (LongTrade) | Long Trade — Разрешает открытие длинных (Buy) позиций. |
| ??????????? ???????? ??????? (ShortTrade) | Short Trade — Разрешает открытие коротких (Sell) позиций. |
| ????????????? ???????? ?????? Buy ? ?????? Sell ??????. ??? True ?? ?????????. (No_Hedge_Trades) | No Hedge Trades — Запрещает одновременное открытие позиций Buy и Sell по одному символу. |
| ??? True ???????? ????? ????????? ?????? 1 ????? ? 1 ?????. (? ?????? ?????? ?? ????? ??? 1 ??? ? 15 (OneOrderInBarMode) | One Order In Bar Mode — Ограничивает открытие не более одной позиции в одном баре. |
| ??? ??????????? ???????????? ???????? (???????? ??????????? ? 2 ????) (Optimization) | Optimization — Включает режим оптимизации с ограничением частоты обновления сигналов. |
| MagicNumber | Magic Number — Магический номер для идентификации ордеров советника. |
| MaxSpread | Max Spread — Максимально допустимый спред в пунктах для открытия сделки. |
| ??????????????? ??? ???????? ?????? (OpenSlippage) | Open Slippage — Допустимое проскальзывание при открытии ордера в пунктах. |
| ??????????????? ??? ???????? ?????? (CloseSlippage) | Close Slippage — Допустимое проскальзывание при закрытии ордера в пунктах. |
| ???????????? ????? ?????????? ??? ????????/???????? ?????? ??? ???????? ? ?????? ??????? (RequoteAttempts) | Requote Attempts — Количество попыток повторного отправки ордера при перекотировке. |
| //--- ????????? ??????????? ???? ? ?????????. (WriteLog) | Write Log — Включает запись сообщений в журнал терминала. |
| ????????? ??????????? ???? ?? ??????? ? ?????????. (WriteDebugLog) | Write Debug Log — Включает подробную отладочную запись в журнал. |
| ????????? ???????????? ?? ??????? (??? ???????????? ??????????? ?????????????) (PrintLogOnChart) | Print Log On Chart — Отображает информационный комментарий на графике с текущими параметрами и состоянием. |
Поиск по коду файла
extern string _TP = "???????? ??????? ?????????";
extern int TakeProfit = 26; //--- (10 2 60)
extern int StopLoss = 120; //--- (100 10 200)
extern bool UseStopLevels = TRUE; //--- ????????? ???????? ???????. ???? ?????????, ?? ???????? ?????? ??????????? ????? ? ?????.
extern bool IsMarketExecution = FALSE; //--- ????????? ????????? ?????????? ???????? ??????? (??????? ?????????, ????? ????????????)
extern int SecureProfit = 1; //--- (0 1 5) ????? ? ?????????
extern int SecureProfitTriger = 10; //--- (10 2 30) ???? 0 - ?? ????????
extern int MaxLossPoints = -65; //--- (-200 5 -20) ???????????? ???????? ??? ???????? ??????? Buy ? Sell ??? ????????? ??????? (??? ???????? ?????? ?? - MaxLossPoints ??? ?????? (???????? ??????? 0), ????? ?????????)
extern string _tral = "????????? ?????";
extern double TrailingStop = 0; //--- (0.04 0.05 0.99 ??? 1 1 30) ???? 0 - ?? ????????, ???? ????? 1 - ?? ? ????? ?? ??????? (???????? 0.25), ???? ????? 1 - ?? ???????
extern double TrailingStep = 0; //--- (0 1 30) ??? ?????
extern double Utral = 10; //--- (0 1 30) ???????? ??????? ??? ??????? ?????????? ????
extern string _MM = "????????? MM";
extern bool RecoveryMode = FALSE; //--- ????????? ?????? ?????????????? ???????? (?????????? ???? ???? ???????? ????-????)
extern double FixedLot = 0.1; //--- ????????????? ????? ????
extern double AutoMM = 0.0; //--- ?? ?????????? ???? AutoMM > 0. ??????? ?????. ??? RecoveryMode = FALSE, ?????? ????? ?????? ??? ????????.
extern double AutoMM_Max = 20.0; //--- ???????????? ????
extern int MaxAnalizCount = 50; //--- ????? ???????? ????? ??????? ??? ???????(???????????? ??? RecoveryMode = True)
extern double Risk = 25.0; //--- ???? ?? ???????? (???????????? ??? RecoveryMode = True)
extern double MultiLotPercent = 1.1; //--- ??????????? ????????? ???? (???????????? ??? RecoveryMode = True)
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 int maMethod = 2; //--- ????? ??????????. ????? ???? ????? ?? ???????? ??????? ??????????? ???????? (Moving Average).
/*
{
MODE_SMA 0 ??????? ?????????? ???????
MODE_EMA 1 ???????????????? ?????????? ??????? *
MODE_SMMA 2 ?????????? ?????????? ???????
MODE_LWMA 3 ???????-?????????? ?????????? ???????
}
*/
extern int maPrice = 0;
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 = TRUE; //--- ????????????? ???????? ?????? Buy ? ?????? Sell ??????. ??? True ?? ?????????.
extern bool OneOrderInBarMode = TRUE; //--- ??? True ???????? ????? ????????? ?????? 1 ????? ? 1 ?????. (? ?????? ?????? ?? ????? ??? 1 ??? ? 15 ?????). ? ??????? ?? ????????, ??? ??? ????????? ??? ? 10 ???.
extern bool Optimization = FALSE; //--- ??? ??????????? ???????????? ???????? (???????? ??????????? ? 2 ????)
extern int MagicNumber = 777;
extern double MaxSpread = 2;
extern double OpenSlippage = 2; //--- ??????????????? ??? ???????? ??????
extern double CloseSlippage = 3; //--- ??????????????? ??? ???????? ??????
extern int RequoteAttempts = 3; //--- ???????????? ????? ?????????? ??? ????????/???????? ?????? ??? ???????? ? ?????? ???????
extern bool WriteLog = TRUE; //--- //--- ????????? ??????????? ???? ? ?????????.
extern bool WriteDebugLog = TRUE; //--- ????????? ??????????? ???? ?? ??????? ? ?????????.
extern bool PrintLogOnChart = TRUE; //--- ????????? ???????????? ?? ??????? (??? ???????????? ??????????? ?????????????)
double K;
double pp;
int pd;
double cf;
string EASymbol; //--- ??????? ??????
int SP;
int CloseSP;
int MaximumTrades = 1;
int CountBars;
double NDMaxSpread; //--- ???????????? ????? ????? ???????
bool CheckSpreadRuleBuy; //--- ??????? ??? ???????? ?????? ????? ????????? (????????????? ???????????? ????????? ? ??????????? ??????)
bool CheckSpreadRuleSell;
string OpenOrderComment = "WSFR v3.8.5.1 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() {
// код доступен только после оплаты
}
void 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;
}
void 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 (IsNewBar()) {
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.1 ????? ????????? ?????, ????? ????? ?????? ??????????.");
}
CheckSpreadRuleBuy = TRUE;
} else {
CheckSpreadRuleBuy = FALSE;
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.1 ????? ????????? ?????, ????? ????? ?????? ??????????.");
}
CheckSpreadRuleSell = TRUE;
} else {
CheckSpreadRuleSell = FALSE;
OpenPosition(OP_SELL);}
} //--- ???????? if (OpenShortSignal()
}
return;
}
void 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)
{
ModifyOrder(EASymbol, 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)
{
ModifyOrder(EASymbol, 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)
{
ModifyOrder(EASymbol, 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;
}
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&&SecureProfitTriger>0) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == EASymbol) {
if (Bid - OrderOpenPrice() > SecureProfitTriger * pp && MathAbs(OrderOpenPrice() + SecureProfit * pp - OrderStopLoss()) >= Point
&&NormalizeDouble(OrderOpenPrice() + SecureProfit * pp, Digits)>=OrderStopLoss()+Point) {
ModifyOrder(EASymbol, OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + SecureProfit * pp, Digits), OrderTakeProfit(), Blue);
}
}
} //--- ???????? if (OrderType() == OP_BUY)
if (OrderType() == OP_SELL&&SecureProfitTriger>0) {
if (OrderMagicNumber() == MagicNumber && OrderSymbol() == EASymbol) {
if (OrderOpenPrice() - Ask > SecureProfitTriger * pp && MathAbs(OrderOpenPrice() - SecureProfit * pp - OrderStopLoss()) >= Point
&&NormalizeDouble(OrderOpenPrice() - SecureProfit * pp, Digits)<=OrderStopLoss()-Point) {
ModifyOrder(EASymbol, OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - SecureProfit * pp, Digits), OrderTakeProfit(), Red);
}
}
} //--- ???????? if (OrderType() == OP_SELL)
if(TrailingStop>1&&(OrderMagicNumber()== MagicNumber))
{
if(OrderType() == OP_SELL&&OrderOpenPrice() - Ask > Utral*Point*K)
{
if(TrailingStop> 0&&TrailingStop > 1)
{
if(OrderOpenPrice() - Ask > TrailingStop * Point*K)
{
if(OrderStopLoss()-Point* TrailingStep*K > (Ask + Point* TrailingStop*K)&&Ask + Point * TrailingStop*K<=OrderStopLoss()-Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop*K,
OrderTakeProfit(),0, CLR_NONE);
}
}
}
}
else
if(OrderType() == OP_BUY&&Bid - OrderOpenPrice() > Utral*Point*K)//||OrderMagicNumber()== MAGIC1)
{
if(TrailingStop > 0&&TrailingStop > 1)
{
if(Bid - OrderOpenPrice() > TrailingStop * Point*K)
{
if(OrderStopLoss()+Point* TrailingStep*K < (Bid - Point * TrailingStop*K)&&Bid - Point * TrailingStop*K>=OrderStopLoss()+Point )
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop*K,
OrderTakeProfit() ,0, CLR_NONE);
}
}
}
}
}
if(TrailingStop<1&&(OrderMagicNumber()== MagicNumber))
{
if(OrderType() == OP_SELL&&TrailingStop < 1)
{
if(TrailingStop> 0)
{
if(OrderOpenPrice() - Ask > Utral*Point*K)
{
if(OrderStopLoss()-Point* TrailingStep*K > Ask + (OrderOpenPrice()-Ask)*TrailingStop&& Ask + (OrderOpenPrice()-Ask)*TrailingStop<=OrderStopLoss()-Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + (OrderOpenPrice()-Ask)*TrailingStop,
OrderTakeProfit(),0, CLR_NONE);
}
}
}
}
else
if(OrderType() == OP_BUY)
{
if(TrailingStop > 0&&TrailingStop < 1)
{
if(Bid - OrderOpenPrice() > Utral*Point*K)
{
if(OrderStopLoss()+Point* TrailingStep*K < Bid - (Bid - OrderOpenPrice())*TrailingStop&&Bid - (Bid - OrderOpenPrice())*TrailingStop>=OrderStopLoss()+Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - (Bid - OrderOpenPrice())*TrailingStop ,
OrderTakeProfit() ,0, CLR_NONE);
}
}
}
}
}
}
} //--- ???????? for (int i = total - 1; i >= 0; i--)
return;
}
void ModifyOrder(string sy="", int ticket=0, double pp=-1, double sl=0, double tp=0, color cl=CLR_NONE) {
int ModifyTicketID = OrderTicket();
if (sy=="") sy=Symbol();
bool fm; //--- ??????????? ??????
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(ticket, pp, sl, tp, 0, cl);
if (fm==1) return(1);
else {
err=GetLastError();
if (WriteDebugLog) Print("????????? ?????? ?? ????? ??????????? ?????? (", GetNameOP(OrderType()), ",", ModifyTicketID, "). ???????: ", ErrorDescription(err),". ??????? ?",it);
Sleep(1000*PauseAfterError);
} //--- ???????? if (!fm) {
}
}
return;
}
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--) {
return;
}
void 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 = OrderTypПоказано первые 50% кода (символов: 34102)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.