MFI_R2_EA_v2.3
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mfi_r2_ea_v2.3.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, использующий индикатор Money Flow Index (MFI) и скользящую среднюю для формирования торговых сигналов на покупку и продажу. Открывает позиции при совпадении условий по MFI и MA с возможностью дополнительной фильтрации по углу скользящей средней. Реализует несколько стратегий выхода из позиций, включая проверку по MFI, CCI и SMA 200.
Настройки программы
| Настройка | Описание |
|---|---|
| Expert_Name | Имя эксперта — Идентификатор советника для отображения в комментариях ордеров |
| LotSize | Размер лота — Фиксированный размер лота при отключённом управлении рисками |
| RiskPercent | Процент риска — Процент от средств счёта, используемый для расчёта размера лота при включённом управлении рисками |
| UseMoneyMgmt | Управление рисками — Включает расчёт размера лота на основе процента риска от equity |
| BrokerPermitsFractionalLots | Дробные лоты брокера — Разрешает ли брокер дробные значения лота |
| mi | Настройки скользящей средней — Группа параметров для настройки MA-фильтра тренда |
| MaTrend_Period | Период MA тренда — Период скользящей средней для определения направления тренда |
| ri | Настройки MFI — Группа параметров индикатора Money Flow Index |
| input value to be optimized (MFI_Period) | Период MFI — Период расчёта индикатора Money Flow Index |
| UseDefaultMFI_Period | Стандартный период MFI — Использовать ли общий период MFI или индивидуальный для каждого инструмента |
| BuyWhenMFIBelow | Порог покупки MFI — Значение MFI ниже которого рассматривается сигнал на покупку |
| SellWhenMFIAbove | Порог продажи MFI — Значение MFI выше которого рассматривается сигнал на продажу |
| MFI_Overbought_Value | Уровень перекупленности MFI — Значение MFI, превышение которого считается сигналом к закрытию позиции на покупку |
| MFI_Oversold_Value | Уровень перепроданности MFI — Значение MFI, снижение ниже которого считается сигналом к закрытию позиции на продажу |
| useMFI4BarsBack | Подтверждение MFI по 4 барам — Использовать ли дополнительное подтверждение сигнала по значению MFI на 4 бара ранее |
| BuyWhenAbove | Порог подтверждения покупки — Значение MFI на текущем баре выше которого подтверждается сигнал на покупку |
| SellWhenBelow | Порог подтверждения продажи — Значение MFI на текущем баре ниже которого подтверждается сигнал на продажу |
| useNewExitStrategy | Новая стратегия выхода — Использовать ли расширенные условия выхода на основе текущих значений MFI |
| MFI_High_OverBought_Exit | Выход при высокой перекупленности — Порог MFI для выхода при новой стратегии выхода при перекупленности |
| MFI_Low_OverSold_Exit | Выход при низкой перепроданности — Порог MFI для выхода при новой стратегии выхода при перепроданности |
| use200SMA_Exit | Выход по SMA 200 — Использовать ли выход из позиции при пересечении цены с SMA 200 |
| useMFI14_Exit | Выход по MFI 14 — Использовать ли выход из позиции при пересечении MFI 14 через 50 |
| MFI_Exit_Period | Период MFI для выхода — Период расчёта MFI, используемый в стратегиях выхода |
| useCCI50_Exit | Выход по CCI 50 — Использовать ли выход из позиции при пересечении CCI 50 через ноль |
| CCI_ExitLevel | Уровень CCI для выхода — Пороговое значение CCI для стратегии выхода |
| st1 | Таймфрейм сигнала — Группа параметров таймфрейма для формирования сигналов |
| Signal_TimeFrame | Таймфрейм сигнала — Таймфрейм, на котором рассчитываются индикаторы для формирования сигналов |
| hd | Ограничение сделок — Группа параметров ограничения количества сделок |
| useDelay | Задержка между сделками — Запрещать ли открытие новой сделки в день закрытия предыдущей |
| ai | Фильтр угла MA — Группа параметров фильтра угла скользящей средней |
| a2 | Включение фильтра угла — Текстовая подсказка для включения фильтра угла MA |
| useMaAngleFilter | Фильтр угла MA — Использовать ли дополнительную фильтрацию по углу скользящей средней |
| TrendTimeFrame | Таймфрейм тренда — Таймфрейм для расчёта MA, используемой в фильтре угла |
| Threshold | Порог угла — Пороговое значение угла MA для подтверждения направления тренда |
| PrevShift | Сдвиг предыдущего значения — Сдвиг предыдущего значения MA для расчёта угла |
| CurShift | Сдвиг текущего значения — Сдвиг текущего значения MA для расчёта угла |
| st6 | Прибыль и стопы — Группа параметров управления прибылью и убытками |
| StopLoss | Стоп-лосс — Фиксированный размер стоп-лосса в пунктах |
| TakeProfit | Тейк-профит — Фиксированный размер тейк-профита в пунктах |
| Slippage | Проскальзывание — Допустимое проскальзывание при открытии и закрытии ордеров |
| tsp0 | Типы трейлинг-стопов — Группа описаний типов трейлинг-стопов |
| tsp1 | Тип 1 — Немедленное перемещение стоп-лосса вслед за ценой |
| tsp2 | Тип 2 — Ожидание движения цены на величину трейлинг-стопа перед началом трейлинга |
| tsp3 | Тип 3 — Использование трёх уровней перед началом трейлинга |
| tsp4 | Тип 4 — Перемещение стопа в брейк-эвен с фиксацией прибыли |
| tsp5 | Тип 5 — Пошаговый трейлинг-стоп |
| tsp6 | Тип 6 — Трейлинг-стоп на основе EMA |
| tsp7 | Тип 7 — Трейлинг-стоп на основе параболического SAR |
| tsp8 | Тип 8 — Трейлинг-стоп на основе параболического SAR по автору Bluto |
| UseTrailingStop | Трейлинг-стоп — Включает или отключает трейлинг-стоп |
| TrailingStopType | Тип трейлинг-стопа — Номер типа используемого трейлинг-стопа |
| ts2 | Настройки типа 2 — Группа параметров для типа 2 трейлинг-стопа |
| Change to whatever number of pips you wish to trail your position with. (TrailingStop) | Трейлинг-стоп — Расстояние в пипсах для трейлинга стоп-лосса |
| ts3 | Настройки типа 3 — Группа параметров для трёхуровневого трейлинг-стопа |
| Type 3 first level pip gain (FirstMove) | Первый уровень — Расстояние в пунктах первого уровня для перемещения стопа |
| Move Stop to Breakeven (FirstStopLoss) | Стоп первого уровня — Расстояние стоп-лосса на первом уровне для перехода в брейк-эвен |
| Type 3 second level pip gain (SecondMove) | Второй уровень — Расстояние в пунктах второго уровня для перемещения стопа |
| Move stop to lock is profit (SecondStopLoss) | Стоп второго уровня — Расстояние стоп-лосса на втором уровне для фиксации прибыли |
| type 3 third level pip gain (ThirdMove) | Третий уровень — Расстояние в пунктах третьего уровня для перемещения стопа |
| Move stop and trail from there (TrailingStop3) | Трейлинг-стоп третьего уровня — Расстояние трейлинга после достижения третьего уровня |
| ts4 | Настройки типа 4 — Группа параметров для типа 4 трейлинг-стопа |
| BreakEven | Брейк-эвен — Расстояние в пунктах для перемещения стопа в брейк-эвен |
| Profit Lock in pips (LockInPips) | Фиксация прибыли — Количество пунктов прибыли для фиксации при выходе в брейк-эвен |
| ts5 | Настройки типа 5 — Группа параметров для типа 5 трейлинг-стопа |
| eTrailingStop | Расстояние e-трейлинга — Расстояние в пунктах для e-трейлинг-стопа |
| eTrailingStep | Шаг e-трейлинга — Шаг в пунктах для пошагового e-трейлинг-стопа |
| ts6 | Настройки типа 6 — Группа параметров для типа 6 трейлинг-стопа |
| EMATimeFrame | Таймфрейм EMA — Таймфрейм для расчёта EMA, используемой в трейлинг-стопе |
| Price | Тип цены — Тип цены для расчёта EMA |
| EMAPeriod | Период EMA — Период экспоненциальной скользящей средней для трейлинг-стопа |
| EMAShift | Сдвиг EMA — Сдвиг EMA по барам |
| InitialStop | Начальный стоп — Начальное расстояние стоп-лосса при использовании EMA-трейлинга |
| ts7 | Настройки типа 7 — Группа параметров для типа 7 трейлинг-стопа |
| pi | Настройки pSAR — Группа параметров параболического SAR |
| StepParabolic | Шаг SAR — Шаг изменения параболического SAR |
| MaxParabolic | Максимум SAR — Максимальное значение параболического SAR |
| Interval | Интервал SAR — Интервал в пунктах для трейлинг-стопа на основе SAR |
| ts8 | Настройки типа 8 — Группа параметров для типа 8 трейлинг-стопа |
| pi2 | Настройки pSAR Bluto — Группа параметров параболического SAR по автору Bluto |
| SarStep | Шаг SAR Bluto — Шаг параболического SAR для трейлинг-стопа типа 8 |
| SarMax | Максимум SAR Bluto — Максимальное значение параболического SAR для трейлинг-стопа типа 8 |
Поиск по коду файла
#include <stdlib.mqh>
#define AUDCAD 1
#define AUDJPY 2
#define AUDNZD 3
#define AUDUSD 4
#define CHFJPY 5
#define EURAUD 6
#define EURCAD 7
#define EURCHF 8
#define EURGBP 9
#define EURJPY 10
#define EURUSD 11
#define GBPCHF 12
#define GBPJPY 13
#define GBPUSD 14
#define NZDJPY 15
#define NZDUSD 16
#define USDCAD 17
#define USDCHF 18
#define USDJPY 19
#define UNEXPECTED 999
extern string Expert_Name = "---- MFI_R2_EA_v2.3 ----";
extern double LotSize=0.1;
extern double RiskPercent=2.0;
extern bool UseMoneyMgmt=false;
extern bool BrokerPermitsFractionalLots = true;
extern string mi="--Moving Average settings--";
extern int MaTrend_Period = 200;
extern string ri="--MFI settings--";
extern int MFI_Period = 5; // input value to be optimized
extern bool UseDefaultMFI_Period = true;
extern int BuyWhenMFIBelow = 65;
extern int SellWhenMFIAbove = 35;
extern double MFI_Overbought_Value = 75.0;
extern double MFI_Oversold_Value = 25.0;
extern int useMFI4BarsBack = 0;
extern int BuyWhenAbove = 55;
extern int SellWhenBelow = 45;
extern int useNewExitStrategy = 0;
extern int MFI_High_OverBought_Exit = 98;
extern int MFI_Low_OverSold_Exit = 2;
extern int use200SMA_Exit = 1;
extern int useMFI14_Exit = 1;
extern int MFI_Exit_Period = 14;
extern int useCCI50_Exit = 0;
extern int CCI_ExitLevel = 0;
extern string st1="--Signal_TimeFrame--";
extern int Signal_TimeFrame = 0;
extern string hd = " --Limit 1 trade per day --";
extern int useDelay = 1;
extern string ai="--Moving Average Angle filter settings--";
extern string a2=" Set switch to 1 to use filter";
extern int useMaAngleFilter = 0;
extern int TrendTimeFrame = 0;
extern double Threshold=20;
extern int PrevShift=3;
extern int CurShift=1;
extern string st6 = "--Profit Controls--";
extern double StopLoss=0;
extern double TakeProfit=700;
extern int Slippage=3;
extern string tsp0 = "--Trailing Stop Types--";
extern string tsp1 = " 1 = Trail immediately";
extern string tsp2 = " 2 = Wait to trail";
extern string tsp3 = " 3 = Uses 3 levels before trail";
extern string tsp4 = " 4 = Breakeven + Lockin";
extern string tsp5 = " 5 = Step trail";
extern string tsp6 = " 6 = EMA trail";
extern string tsp7 = " 7 = pSAR trail";
extern string tsp8 = " 8 = Blutos pSar trail";
extern bool UseTrailingStop = true;
extern int TrailingStopType = 8;
extern string ts2 = "Settings for Type 2";
extern double TrailingStop = 15; // Change to whatever number of pips you wish to trail your position with.
extern string ts3 = "Settings for Type 3";
extern double FirstMove = 20; // Type 3 first level pip gain
extern double FirstStopLoss = 50; // Move Stop to Breakeven
extern double SecondMove = 30; // Type 3 second level pip gain
extern double SecondStopLoss = 30; // Move stop to lock is profit
extern double ThirdMove = 40; // type 3 third level pip gain
extern double TrailingStop3 = 20; // Move stop and trail from there
extern string ts4 = "Settings for Type 4";
extern double BreakEven = 30;
extern int LockInPips = 1; // Profit Lock in pips
extern string ts5 = "Settings for Type 5";
extern int eTrailingStop = 10;
extern int eTrailingStep = 2;
extern string ts6 = "Settings for Type 6";
extern int EMATimeFrame = 30;
extern int Price = 0;
extern int EMAPeriod = 13;
extern int EMAShift = 2;
extern int InitialStop = 0;
extern string ts7 = "Settings for Type 7";
extern string pi="--pSAR settings--";
extern double StepParabolic = 0.02;
extern double MaxParabolic = 0.2;
extern int Interval = 5;
extern string ts8 = "Settings for Type 8";
extern string pi2="--pSAR settings--";
extern double SarStep = 0.02;
extern double SarMax = 0.20;
int MagicNumber=0;
string setup;
int SignalCandle = 1;
int TradesInThisSymbol = 0;
double MM_OrderLotSize=0;
datetime StopTime; // Time to wait after a trade is stopped out
bool StoppedOut=false;
int myMFI_Period = 2; // Used by MFI indicator call
double MFI_Day_0 = 0, MFI_Day_1=0, MFI_Day_2=0, MFI_Day_3=0, SMA_Day3=0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int AssignMFI_Period(string symbol)
{
int MFI = 0;
int which = func_Symbol2Val(symbol);
switch (which)
{
case AUDCAD : MFI = 5;
break;
case AUDJPY : MFI = 7;
break;
case AUDNZD : MFI = 6;
break;
case AUDUSD : MFI = 4;
break;
case CHFJPY : MFI = 4;
break;
case EURAUD : MFI = 2;
break;
case EURCAD : MFI = 3;
break;
case EURCHF : MFI = 3;
break;
case EURGBP : MFI = 2;
break;
case EURJPY : MFI = 4; // Optimized value
break;
case EURUSD : MFI = 4;
break;
case GBPCHF : MFI = 6;
break;
case GBPJPY : MFI = 4;
break;
case GBPUSD : MFI = 3;
break;
case NZDJPY : MFI = 6;
break;
case NZDUSD : MFI = 7;
break;
case USDCAD : MFI = 2;
break;
case USDCHF : MFI = 4;
break;
case USDJPY : MFI = 4;
break;
case UNEXPECTED : MFI = 4;
}
if (MFI == 0) MFI = 4;
return (MFI);
}
bool LastTradeClosedToday()
{
int cnt, total;
bool Closed;
total = HistoryTotal();
for (cnt = total - 1; cnt >= 0; cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol()!=Symbol()) continue;
if (OrderMagicNumber() != MagicNumber) continue;
Closed = false;
if (OrderType() == OP_BUY)
{
if (TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()))
{
Closed = true;
}
cnt = 0;
}
if (OrderType() == OP_SELL)
{
if (TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()))
{
Closed = true;
}
cnt = 0;
}
}
return (Closed);
}
double MA_Angle( int iPrevShift, int iCurShift, double fPrevMA, double fCurMA)
{
double fAngle, mFactor;
string Sym;
int ShiftDif;
mFactor = 100000.0;
Sym = StringSubstr(Symbol(),3,3);
if (Sym == "JPY") mFactor = 1000.0;
ShiftDif = iPrevShift-iCurShift;
mFactor /= ShiftDif;
fAngle = mFactor * (fCurMA - fPrevMA)/2.0;
return(fAngle);
}
bool CheckTrend(int cmd)
{
double maAngle;
double MACurrent=iMA(Symbol(),TrendTimeFrame,MaTrend_Period, 0, MODE_SMA, PRICE_CLOSE,CurShift);
double MAPrevious=iMA(Symbol(),TrendTimeFrame,MaTrend_Period, 0, MODE_SMA, PRICE_CLOSE,PrevShift);
maAngle = MA_Angle(PrevShift, CurShift, MAPrevious, MACurrent);
switch (cmd)
{
case OP_BUY : if (maAngle > Threshold) return(true);
break;
case OP_SELL : if (maAngle < -Threshold) return(true);
}
return(false);
}
bool CheckMFI14(int cmd)
{
double MFIcur, MFIprev;
MFIcur = iMFI(Symbol(),Signal_TimeFrame, MFI_Exit_Period, 1);
MFIprev = iMFI(Symbol(),Signal_TimeFrame, MFI_Exit_Period, 2);
switch (cmd)
{
case OP_BUY : if (MFIcur < 50 && MFIprev > 50) return(true);
break;
case OP_SELL : if (MFIcur > 50 && MFIprev < 50) return(true);
}
return(false);
}
bool CheckCCI50(int cmd)
{
double CCIcur, CCIprev;
CCIcur = iCCI(Symbol(), Signal_TimeFrame, 50, PRICE_CLOSE, 1);
CCIprev = iCCI(Symbol(), Signal_TimeFrame, 50, PRICE_CLOSE, 2);
switch (cmd)
{
case OP_BUY : if (CCIcur < 0 && CCIprev > 0) return(true);
break;
case OP_SELL : if (CCIcur > 0 && CCIprev < 0) return(true);
}
return(false);
}
bool CheckExitCondition(int cmd)
{
double MFI, MFI_Cur;
MFI = iMFI(Symbol(), Signal_TimeFrame, myMFI_Period, 1);
MFI_Cur = iMFI(Symbol(), Signal_TimeFrame, myMFI_Period, 0);
switch (cmd)
{
case OP_BUY : if (useMFI14_Exit == 1) return (CheckMFI14(cmd));
if (useCCI50_Exit == 1) return(CheckCCI50(cmd));
if ( MFI > MFI_Overbought_Value)
{
if (useNewExitStrategy == 1)
{
if (MFI_Cur < MFI_Overbought_Value || MFI_Cur >= MFI_High_OverBought_Exit ) return(true); else return(false);
}
else
return(true);
}
else if (use200SMA_Exit == 1)
{
if (CheckMA(OP_SELL)) return(true);
}
break;
case OP_SELL : if (useMFI14_Exit == 1) return (CheckMFI14(cmd));
if (useCCI50_Exit == 1) return(CheckCCI50(cmd));
if (MFI < MFI_Oversold_Value)
{
if (useNewExitStrategy == 1)
{
if (MFI_Cur > MFI_Oversold_Value || MFI_Cur <= MFI_Low_OverSold_Exit ) return(true); else return(false);
}
else
return(true);
}
else if (use200SMA_Exit == 1)
{
if (CheckMA(OP_BUY)) return(true);
}
}
return (false);
}
bool CheckMA(int cmd)
{
SMA_Day3 = iMA(Symbol(),Signal_TimeFrame,MaTrend_Period, 0, MODE_SMA, PRICE_CLOSE, 1);
switch (cmd)
{
case OP_BUY : if (iClose(Symbol(),Signal_TimeFrame,1) > SMA_Day3) return(true);
break;
case OP_SELL : if (iClose(Symbol(),Signal_TimeFrame,1) < SMA_Day3) return (true);
}
return(false);
}
bool CheckMFI(int cmd)
{
MFI_Day_0 = iMFI(Symbol(), Signal_TimeFrame, myMFI_Period, 4);
MFI_Day_1 = iMFI(Symbol(), Signal_TimeFrame, myMFI_Period, 3);
MFI_Day_2 = iMFI(Symbol(), Signal_TimeFrame, myMFI_Period, 2);
MFI_Day_3 = iMFI(Symbol(), Signal_TimeFrame, myMFI_Period, 1);
switch (cmd)
{
case OP_BUY : if (MFI_Day_1 < BuyWhenMFIBelow && MFI_Day_2 < MFI_Day_1 && MFI_Day_3 < MFI_Day_2)
{
if (useMFI4BarsBack == 1)
{
if (MFI_Day_0 > BuyWhenAbove) return(true); else return(false);
}
else
return(true);
}
break;
case OP_SELL : if (MFI_Day_1 > SellWhenMFIAbove && MFI_Day_2 > MFI_Day_1 && MFI_Day_3 > MFI_Day_2)
{
if (useMFI4BarsBack == 1)
{
if (MFI_Day_0 < SellWhenBelow) return(true); else return(false);
}
else
return(true);
}
}
return(false);
}
bool CheckEntryCondition(int cmd)
{
bool rule1, rule2, rule3;
rule1 = true;
rule2 = true;
rule3 = true;
rule1 = CheckMA(cmd);
if (rule1)
{
rule2 = CheckMFI(cmd);
if(rule2)
{
if (useMaAngleFilter == 1) rule3 = CheckTrend(cmd);
if (rule3) return(true);
}
}
return (false);
}
int start()
{
// код доступен только после оплаты
}
double GetLots()
{
double MM_MinLotSize=0;
double MM_MaxLotSize=0;
double MM_LotStep=0;
double MM_Decimals=0;
int MM_AcctLeverage=0;
int MM_CurrencyLotSize=0;
double OrderLotSize;
MM_AcctLeverage = AccountLeverage();
MM_MinLotSize = MarketInfo(Symbol(),MODE_MINLOT);
MM_MaxLotSize = MarketInfo(Symbol(),MODE_MAXLOT);
MM_LotStep = MarketInfo(Symbol(),MODE_LOTSTEP);
MM_CurrencyLotSize = MarketInfo(Symbol(),MODE_LOTSIZE);
if(MM_LotStep == 0.01) {MM_Decimals = 2;}
if(MM_LotStep == 0.1) {MM_Decimals = 1;}
if (UseMoneyMgmt == true)
{
OrderLotSize = AccountEquity() * (RiskPercent * 0.01) / (MM_CurrencyLotSize / MM_AcctLeverage);
if(BrokerPermitsFractionalLots == true)
OrderLotSize = StrToDouble(DoubleToStr(OrderLotSize,MM_Decimals));
else
OrderLotSize = MathRound(MM_OrderLotSize);
}
else
{
OrderLotSize = LotSize;
}
if (OrderLotSize < MM_MinLotSize) {OrderLotSize = MM_MinLotSize;}
if (OrderLotSize > MM_MaxLotSize) {OrderLotSize = MM_MaxLotSize;}
return(OrderLotSize);
}
int OpenBuyOrder(double mLots, double mStopLoss, double mTakeProfit, int mSlippage, string mComment, int mMagic, color mColor)
{
int err,ticket, digits;
double myPrice, myBid, myStopLoss = 0, myTakeProfit = 0;
myPrice = MarketInfo(Symbol(), MODE_ASK);
myBid = MarketInfo(Symbol(), MODE_BID);
myStopLoss = StopLong(myBid,mStopLoss);
myTakeProfit = TakeLong(myBid,mTakeProfit);
digits = MarketInfo(Symbol( ), MODE_DIGITS) ;
if (digits > 0)
{
myPrice = NormalizeDouble( myPrice, digits);
myStopLoss = NormalizeDouble( myStopLoss, digits);
myTakeProfit = NormalizeDouble( myTakeProfit, digits);
}
ticket=OrderSend(Symbol(),OP_BUY,mLots,myPrice,mSlippage,myStopLoss,myTakeProfit,mComment,mMagic,0,mColor);
if (ticket > 0)
{
if (OrderSelect( ticket,SELECT_BY_TICKET, MODE_TRADES) )
{
Print("BUY order opened : ", OrderOpenPrice( ));
}
}
else
{
err = GetLastError();
if(err==0)
{
return(ticket);
}
else
{
if(err==4 || err==137 ||err==146 || err==136) //Busy errors
{
Sleep(5000);
}
else //normal error
{
Print("Error opening BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err));
}
}
}
return(ticket);
}
void OpenSellOrder(double mLots, double mStopLoss, double mTakeProfit, int mSlippage, string mComment, int mMagic, color mColor)
{
int err, ticket, digits;
double myPrice, myAsk, myStopLoss = 0, myTakeProfit = 0;
myPrice = MarketInfo(Symbol( ), MODE_BID);
myAsk = MarketInfo(Symbol( ), MODE_ASK);
myStopLoss = StopShort(myAsk,mStopLoss);
myTakeProfit = TakeShort(myAsk,mTakeProfit);
digits = MarketInfo(Symbol( ), MODE_DIGITS) ;
if (digits > 0)
{
myPrice = NormalizeDouble( myPrice, digits);
myStopLoss = NormalizeDouble( myStopLoss, digits);
myTakeProfit = NormalizeDouble( myTakeProfit, digits);
}
ticket=OrderSend(Symbol(),OP_SELL,mLots,myPrice,mSlippage,myStopLoss,myTakeProfit,mComment,mMagic,0,mColor);
if (ticket > 0)
{
if (OrderSelect( ticket,SELECT_BY_TICKET, MODE_TRADES) )
{
Print("Sell order opened : ", OrderOpenPrice());
}
}
else
{
err = GetLastError();
if(err==0)
{
return(ticket);
}
else
{
if(err==4 || err==137 ||err==146 || err==136) //Busy errors
{
Sleep(5000)Показано первые 50% кода (символов: 24998)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.