Little Martingale EA
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «unnomguaiv1.132.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот советник для MetaTrader 4 представляет собой торговую систему, которая открывает и управляет рыночными ордерами на основе выбранных условий входа. Вход может определяться либо по комбинации скользящей средней и Parabolic SAR, либо по индексу CCI, в зависимости от настроек. Советник поддерживает управление капиталом, включая фиксированный лот и расчёт лота от риска, а также сеточное добавление ордеров с настраиваемыми шагами и объёмами.
Советник имеет встроенную панель отображения статистики на графике, показывающую баланс, эквити, открытые позиции, прибыль за день и общую статистику. Управление ордерами включает закрытие всех ордеров по достижении заданного уровня прибыли или убытка, как по текущему символу, так и по всем парам. Также доступны ручные переключатели для немедленного закрытия позиций и приостановки торговли.
Настройки позволяют ограничивать торговлю по времени, количеству сделок в день и использовать магические номера для разделения ордеров на покупку и продажу. Советник работает только на текущем символе, но может управлять ордерами на всех парах при достижении глобальных целей по прибыли или убытку.
Настройки программы
| Настройка | Описание |
|---|---|
| __c1 | Разделитель: Управление капиталом — Разделитель для группировки параметров управления капиталом. |
| __c11 | Заголовок: Управление капиталом — Заголовок группы параметров управления капиталом. |
| MM | Управление капиталом — Включает автоматический расчёт размера лота на основе риска и свободной маржи. |
| Risk | Риск, % — Процент риска от свободной маржи, используемый при включённом управлении капиталом. |
| Lots | Размер лота — Фиксированный размер лота для торговли, если управление капиталом отключено. |
| __c2 | Разделитель: Прибыль и убыток — Разделитель для группировки параметров прибыли и убытка. |
| multiplier | Множитель лота — Множитель для увеличения размера лота при добавлении ордеров в сетке. Если 0, используется фиксированный размер из параметров spaceLots. |
| profit | Целевая прибыль — Целевой уровень прибыли для закрытия всех ордеров на покупку или продажу по отдельности. |
| globalprofit | Глобальная прибыль — Целевой уровень общей прибыли по всем парам для закрытия всех ордеров и остановки торговли. |
| pairglobalprofit | Прибыль по паре — Целевой уровень общей прибыли по текущему символу для закрытия всех ордеров по нему. |
| maximaloss | Максимальный убыток — Максимально допустимый убыток по всем парам для закрытия всех ордеров и остановки торговли. |
| tradesperday | Сделок в день — Максимальное количество сделок в день. |
| openonnewcandle | Открывать на новой свече — Разрешает открытие новых ордеров только при появлении новой свечи. |
| __c3 | Разделитель: Сетка ордеров — Разделитель для группировки параметров сеточных ордеров. |
| spacePips | Отступ в пунктах для диапазона 0 — Расстояние в пунктах для первого диапазона сетки. |
| spaceOrders | Количество ордеров в диапазоне 0 — Количество ордеров в первом диапазоне сетки. |
| spaceLots | Лот для диапазона 0 — Размер лота для ордеров в первом диапазоне сетки. |
| space1Pips | Отступ в пунктах для диапазона 1 — Расстояние в пунктах для второго диапазона сетки. |
| space1Orders | Количество ордеров в диапазоне 1 — Количество ордеров во втором диапазоне сетки. |
| space1Lots | Лот для диапазона 1 — Размер лота для ордеров во втором диапазоне сетки. |
| space2Pips | Отступ в пунктах для диапазона 2 — Расстояние в пунктах для третьего диапазона сетки. |
| space2Orders | Количество ордеров в диапазоне 2 — Количество ордеров в третьем диапазоне сетки. |
| space2Lots | Лот для диапазона 2 — Размер лота для ордеров в третьем диапазоне сетки. |
| space3Pips | Отступ в пунктах для диапазона 3 — Расстояние в пунктах для четвёртого диапазона сетки. |
| space3Orders | Количество ордеров в диапазоне 3 — Количество ордеров в четвёртом диапазоне сетки. |
| space3Lots | Лот для диапазона 3 — Размер лота для ордеров в четвёртом диапазоне сетки. |
| __c4 | Разделитель: Магические номера и комментарии — Разделитель для группировки параметров магических номеров и комментариев. |
| magicbuy | Магический номер покупок — Магический номер для идентификации ордеров на покупку. |
| buycomment | Комментарий для покупок — Комментарий, добавляемый к ордерам на покупку. |
| magicsell | Магический номер продаж — Магический номер для идентификации ордеров на продажу. |
| sellcomment | Комментарий для продаж — Комментарий, добавляемый к ордерам на продажу. |
| __c5 | Разделитель: Временной фильтр — Разделитель для группировки параметров временного фильтра. |
| __c51 | Заголовок: Временной фильтр — Заголовок группы параметров временного фильтра. |
| Start_Hour | Час начала торговли — Час начала торгового периода (0-24). |
| Start_Minute | Минута начала торговли — Минута начала торгового периода (0-59). |
| Finish_Hour | Час окончания торговли — Час окончания торгового периода (0-24). |
| Finish_Minute | Минута окончания торговли — Минута окончания торгового периода (0-59). |
| __c6 | Разделитель: Определение входа — Разделитель для группировки параметров определения входа. |
| __c61 | Заголовок: Вход по SMA/Parabolic — Заголовок группы параметров определения входа по SMA/Parabolic. |
| UseSmaParabolicEntry | Использовать вход по SMA/Parabolic — Включает определение входа на основе скользящей средней и Parabolic SAR. |
| __entry2 | Заголовок: Вход по CCI — Заголовок группы параметров определения входа по CCI. |
| cciperiod | Период CCI — Период индикатора CCI для определения входа. Если 0, вход по CCI отключён. |
| ccimax | Максимум CCI — Верхний порог CCI для определения сигнала на покупку. |
| ccimin | Минимум CCI — Нижний порог CCI для определения сигнала на продажу. |
| __c7 | Разделитель: Управление торговлей — Разделитель для группировки параметров управления торговлей. |
| suspendtrades | Приостановить торговлю — Приостанавливает открытие новых ордеров. |
| closeallsellsnow | Закрыть все продажи сейчас — Немедленно закрыть все открытые ордера на продажу по текущему символу. |
| closeallbuysnow | Закрыть все покупки сейчас — Немедленно закрыть все открытые ордера на покупку по текущему символу. |
| closeallnow | Закрыть все сейчас — Запрещает открытие новых ордеров и инициирует закрытие всех ордеров. |
| __c8 | Разделитель: Отображение — Разделитель для группировки параметров отображения. |
| Disable the chart in foreground CrapTx setting so the candles do not obscure the text (KeepTextOnTop) | Текст поверх графика — Отключает настройку графика 'Chart on foreground', чтобы свечи не перекрывали текст панели. |
| DisplayX | Позиция панели по X — Горизонтальная координата для размещения информационной панели на графике. |
| DisplayY | Позиция панели по Y — Вертикальная координата для размещения информационной панели на графике. |
| fontSise | Размер шрифта — Размер шрифта для текста на информационной панели. |
| fontName | Шрифт — Название шрифта для текста на информационной панели. |
| colour | Цвет текста — Цвет текста на информационной панели. |
Поиск по коду файла
#property version "1.13"
#property strict
extern string __c1="----------------------------------";
extern string __c11 = "Money management";
extern bool MM = false;
extern double Risk = 2;
extern double Lots = 0.01;
extern string __c2="----------------------------------";
extern double multiplier = 0;
extern double profit = 0;
extern double globalprofit = 0;
extern double pairglobalprofit= 8;
extern double maximaloss = 0;
extern int tradesperday = 99;
extern bool openonnewcandle = true;
extern string __c3="----------------------------------";
extern double spacePips = 5;
extern int spaceOrders = 1;
extern double spaceLots = 0.02;
extern double space1Pips = 10;
extern int space1Orders = 9;
extern double space1Lots = 0.03;
extern double space2Pips = 5;
extern int space2Orders = 14;
extern double space2Lots = 0.05;
extern double space3Pips = 10;
extern int space3Orders = 99;
extern double space3Lots = 0.07;
extern string __c4="----------------------------------";
extern int magicbuy = 1;
extern string buycomment = "buy";
extern int magicsell = 2;
extern string sellcomment = "sell";
extern string __c5="----------------------------------";
extern string __c51="Timer filter (Hour 0-24 Minute 0-59)";
extern int Start_Hour = 00;
extern int Start_Minute = 00;
extern int Finish_Hour = 24;
extern int Finish_Minute = 0;
extern string __c6="----------------------------------";
extern string __c61="Determine entry based on SMA/parabolic";
extern bool UseSmaParabolicEntry = true;
extern string __entry2="Determine entry based on CCI";
extern int cciperiod = 0;
extern double ccimax = 100;
extern double ccimin = -100;
extern string __c7="----------------------------------";
extern bool suspendtrades = false;
extern bool closeallsellsnow = false;
extern bool closeallbuysnow = false;
extern bool closeallnow = false;
extern string __c8="----------------------------------";
extern bool KeepTextOnTop = true;//Disable the chart in foreground CrapTx setting so the candles do not obscure the text
extern int DisplayX = 50;
extern int DisplayY = 50;
extern int fontSise = 8;
extern string fontName = "Courier New";
extern color colour = Yellow;
double totalprofit;
bool sellallowed=false;
bool buyallowed=false;
bool firebuy=true;
bool firesell=true;
string stoptrading="0";
bool validSetup=true;
string error;
int DisplayCount = 0;
int LotDigits = 2;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
void RemoveAllObjects()
{
for(int i = ObjectsTotal() - 1; i >= 0; i--)
{
if (StringFind(ObjectName(i),"EA-",0) > -1) ObjectDelete(ObjectName(i));
}
}
void Display(string text, color textColor)
{
string lab_str = "EA-" + IntegerToString(DisplayCount);
double ofset = 0;
ObjectCreate("EA-BG",OBJ_RECTANGLE_LABEL,0,0,0);
ObjectSet("EA-BG", OBJPROP_XDISTANCE, DisplayX-20);
ObjectSet("EA-BG", OBJPROP_YDISTANCE, DisplayY-20);
ObjectSet("EA-BG", OBJPROP_XSIZE,700);
ObjectSet("EA-BG", OBJPROP_YSIZE,500);
ObjectSet("EA-BG", OBJPROP_BGCOLOR,C'50,50,50');
ObjectSet("EA-BG", OBJPROP_BORDER_TYPE,BORDER_SUNKEN);
ObjectSet("EA-BG", OBJPROP_CORNER,CORNER_LEFT_UPPER);
ObjectSet("EA-BG", OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("EA-BG", OBJPROP_COLOR,clrWhite);
ObjectSet("EA-BG", OBJPROP_WIDTH,1);
ObjectSet("EA-BG", OBJPROP_BACK,false);
ObjectCreate(lab_str, OBJ_LABEL, 0, 0, 0);
ObjectSet(lab_str, OBJPROP_CORNER, 0);
ObjectSet(lab_str, OBJPROP_XDISTANCE, DisplayX + ofset);
ObjectSet(lab_str, OBJPROP_YDISTANCE, DisplayY + DisplayCount*(fontSise+9));
ObjectSet(lab_str, OBJPROP_BACK, false);
ObjectSetText(lab_str, text, fontSise, fontName, textColor);
}
void SM(string message)
{
DisplayCount++;
Display(message, colour);
}//End void SM()
void DisplayErrors()
{
DisplayCount=0;
colour=Red;
SM("Trading turned OFF");
SM("");
SM("Invalid settings:");
SM(error);
}
void ShowStatus()
{
DisplayCount = 0;
int openBuyOrders = 0;
int openSellOrders = 0;
double lotsTrading = 0;
int openTrades = 0;
double profitLoss=0;
for (int k = OrdersTotal();k >=0 ;k--)
{
if (OrderSelect(k, SELECT_BY_POS))
{
if ( OrderSymbol() == Symbol() )
{
if (OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell)
{
lotsTrading += OrderLots();
openTrades = openTrades + 1;
profitLoss += (OrderProfit() + OrderSwap() + OrderCommission());
if (OrderType() == OP_SELL) openSellOrders++;
else openBuyOrders++;
}
}
}
}
int wonTrades=0;
int lostTrades=0;
double profitToday=0;
double profitYesterday=0;
double profitTotal=0;
double totalLotsTraded=0;
double maxLotsizeUsed=0;
double profitFactor=-1;
double totalAmountWon=0;
double totalAmountLost=0;
datetime today = TimeCurrent() ;
datetime yesterday = TimeCurrent() - (60 * 60 * 24);
for (int l=OrdersHistoryTotal();l >= 0;l--)
{
if(OrderSelect(l, SELECT_BY_POS,MODE_HISTORY))
{
if ( OrderSymbol() == Symbol() )
{
if ( OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell )
{
totalLotsTraded += OrderLots();
maxLotsizeUsed = MathMax(maxLotsizeUsed, OrderLots());
if (OrderProfit() > 0) wonTrades++;
else lostTrades++;
double orderProfit = (OrderProfit() + OrderSwap() + OrderCommission());
if (orderProfit<0) totalAmountLost += orderProfit;
else totalAmountWon += orderProfit;
profitTotal += orderProfit;
if( TimeDay (OrderCloseTime()) == TimeDay(today) &&
TimeMonth(OrderCloseTime()) == TimeMonth(today) &&
TimeYear (OrderCloseTime()) == TimeYear(today) )
{
profitToday += orderProfit;
}
if( TimeDay (OrderCloseTime()) == TimeDay(yesterday) &&
TimeMonth(OrderCloseTime()) == TimeMonth(yesterday) &&
TimeYear (OrderCloseTime()) == TimeYear(yesterday) )
{
profitYesterday += orderProfit;
}
}
}
}
}
if (totalAmountWon!=0 && totalAmountLost!=0)
{
profitFactor=MathAbs(totalAmountWon / totalAmountLost);
}
double totalTradeCount=(wonTrades+lostTrades);
SM("--- Little Martingale EA v1.132 ---");
SM("");
SM("Account balance : " + DoubleToString(AccountBalance(),2) +" " + AccountCurrency());
SM("Account equity : " + DoubleToString(AccountEquity(),2) +" " + AccountCurrency());
SM("Account free margin : " + DoubleToString(AccountFreeMargin(),2) +" " + AccountCurrency());
SM("Account margin : " + DoubleToString(AccountMargin(),2) +" " + AccountCurrency());
SM("");
SM("Open trades : " + IntegerToString(openBuyOrders + openSellOrders) + " ( "+DoubleToString(profitLoss,2)+" "+AccountCurrency()+" )" );
SM(" buy trades : " + IntegerToString(openBuyOrders));
SM(" sell trades : " + IntegerToString(openSellOrders));
SM(" lots in trades : " + DoubleToString(lotsTrading, 2) + " lots");
SM("");
SM("Total trades today : " + IntegerToString(TradesToday())+" / "+IntegerToString(tradesperday));
SM("Total trades all time : " + IntegerToString((wonTrades+lostTrades)) + ", Won:"+IntegerToString(wonTrades)+" / Lost:"+IntegerToString(lostTrades));
double percentage=0;
if (totalTradeCount >0) percentage=(wonTrades / totalTradeCount) * 100;
SM(" winrate : " + DoubleToString( percentage, 2)+"%");
SM("");
SM("Profit today : " + DoubleToString(profitToday, 2)+ " " + AccountCurrency() );
SM("Profit yesterday : " + DoubleToString(profitYesterday,2 )+ " " + AccountCurrency() );
SM("Profit all time : " + DoubleToString(profitTotal, 2)+ " " + AccountCurrency() );
double payoff=0;
if (totalTradeCount > 0 ) payoff=profitTotal / totalTradeCount;
SM("Payoff expectancy/trade : " + DoubleToString(payoff, 2)+ " " + AccountCurrency() );
if (profitFactor>=0)
SM("Profit factor : " + DoubleToString(profitFactor, 2));
else SM("");
SM("");
double averageLots=0;
if (totalTradeCount >0) averageLots = totalLotsTraded / totalTradeCount;
SM("Overall volume traded : " + DoubleToString(totalLotsTraded, 2) +" lots");
SM("Average volume/trade : " + DoubleToString(averageLots, 2) +" lots");
SM("Max volume traded : " + DoubleToString(maxLotsizeUsed, 2) +" lots");
}
double GetLotSize()
{
double leverage = AccountLeverage();
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
double lotsize = MarketInfo(Symbol(), MODE_LOTSIZE);
double stoplevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
double MinLots = 0.01;
double MaximalLots = 50.0;
double lots = Lots;
if(MM)
{
double amountToRisk = AccountFreeMargin() * Risk / 100.0;
lots = NormalizeDouble( amountToRisk / 1000.0, LotDigits);
if(lots < minlot) lots = minlot;
if (lots > MaximalLots) lots = MaximalLots;
if (AccountFreeMargin() < Ask * lots * lotsize / leverage)
{
Print("We have no money. Lots = ", lots, " , Free Margin = ", AccountFreeMargin());
Comment("We hПоказано первые 50% кода (символов: 17884)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.