SnowRoller_1_008
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ikonikrobot.(ea).mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для MetaTrader 4, реализующий трендовую торговую логику на основе сравнения цен закрытия на разных временных интервалах. Отслеживает текущие позиции по символу, управляет открытием новых сделок с учётом спреда, максимального количества ордеров и допустимого отклонения от начальной цены. Поддерживает групповое закрытие позиций по достижении заданных процентов прибыли или убытка как по отдельному символу, так и по всему портфелю.
Настройки программы
| Настройка | Описание |
|---|---|
| version number (version) | Версия — Текстовый идентификатор версии советника |
| LotSizeNormalized | Нормализация лота — Текстовый разделитель для группы настроек лотности |
| lotsize | Размер лота — Базовый размер лота для открытия сделок |
| TP in pips (xTP) | Тейк-профит — Тейк-профит в пунктах для стандартной позиции |
| SL in pips (xSL) | Стоп-лосс — Стоп-лосс в пунктах для стандартной позиции |
| amount of $$ in account balance to trade the lotsize entered (BalancePerlotsize) | Баланс на лот — Сумма на балансе, приходящаяся на один лот для автоматического масштабирования |
| number of minutes to look back for trend pattern (TrendLookbackMins) | Период анализа тренда 1 — Количество минут для определения первого трендового паттерна |
| number of minutes to look back for trend pattern2 (TrendLookbackMins2) | Период анализа тренда 2 — Количество минут для определения второго трендового паттерна |
| used for "CloseAllLossPercent/CloseAllProfitPercent" (MagicNumber) | Магический номер — Идентификатор ордеров для групповых операций закрытия |
| take opposite trades to the trend pattern? (doOpposite) | Обратные сделки — Открывать сделки в противоположном направлении тренда |
| maximum lots that can be opened for this symbol (MaxTradesThis) | Макс. сделок по символу — Максимальное количество открытых лотов по текущему символу |
| maximum losing trades in lots that can be opened for this symbol (MaxTradesThisLoss) | Макс. убыточных сделок — Максимальное количество убыточных лотов, разрешённых по символу |
| comment to your broker when trade is initiated (comment) | Комментарий — Комментарий, добавляемый к ордерам при открытии |
| ValsInPercent | Процентные значения — Текстовый разделитель для группы настроек в процентах |
| basket closure - profit (CloseAllProfitPercent) | Прибыль для закрытия всех — Процент прибыли от баланса для закрытия всех позиций |
| basket closure - loss (CloseAllLossPercent) | Убыток для закрытия всех — Процент убытка от баланса для закрытия всех позиций |
| profit closure for this symbol only (CloseThisProfitPercent) | Прибыль для закрытия символа — Процент прибыли для закрытия позиций по текущему символу |
| loss closure for this symbol only (CloseThisLossPercent) | Убыток для закрытия символа — Процент убытка для закрытия позиций по текущему символу |
| ValueInPips | Значения в пипсах — Текстовый разделитель для группы настроек в пипсах |
| set this to an appropriate level for your broker (Slippage) | Допустимый проскальзывание — Максимальное допустимое проскальзывание в пунктах |
| Single position take profit in pips - only applies to half the positions! (takeprofit) | Тейк-профит (пипсы) — Тейк-профит в пипсах для отдельных позиций |
| Single position stop loss in pips (stoploss) | Стоп-лосс (пипсы) — Стоп-лосс в пипсах для отдельных позиций |
| 10 pip step - should automatically adjust for 3/5 or 2/4 digit brokers (buysellstep) | Шаг открытия — Минимальное ценовое отклонение для нового открытия в пипсах |
| number of pips to allow for accumulation against initial anchor (MaxNegExcursion) | Макс. негативное отклонение — Допустимое отклонение цены от начальной точки в пипсах |
| max spread in pips to allow opening a new trade (MaxSpread) | Макс. спред — Максимальный допустимый спред в пипсах для открытия сделки |
| TimeTrading | Время торговли — Текстовый разделитель для группы настроек времени |
| useTime1Trading | Использовать временное окно — Включает ограничение торговли по времени |
| Time1Start | Время начала — Начало торгового окна в формате ЧЧММ |
| Time1Stop | Время окончания — Окончание торгового окна в формате ЧЧММ |
Поиск по коду файла
#property strict
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <
If you need a commercial license, please send me an email:
m*********a*@gmail.com
*/
extern string version = "---Snow Roller 1.008---"; // version number
extern string LotSizeNormalized = "----lotsize:----";
extern double lotsize = 0.01; //
extern double xTP = 30; //TP in pips
extern double xSL = 30; //SL in pips
extern double BalancePerlotsize = 1000.0; // amount of $$ in account balance to trade the lotsize entered
extern int TrendLookbackMins = 5; // number of minutes to look back for trend pattern
extern int TrendLookbackMins2 = 100; // number of minutes to look back for trend pattern2
extern int MagicNumber = 0; // used for "CloseAllLossPercent/CloseAllProfitPercent"
extern bool doOpposite = false; // take opposite trades to the trend pattern?
extern int MaxTradesThis = 20; // maximum lots that can be opened for this symbol
extern int MaxTradesThisLoss = 4; // maximum losing trades in lots that can be opened for this symbol
extern string comment = "Snow Roller"; // comment to your broker when trade is initiated
extern string ValsInPercent= "----Values below in percent----";
extern double CloseAllProfitPercent = 10.0; // basket closure - profit
extern double CloseAllLossPercent = 10.0; // basket closure - loss
extern double CloseThisProfitPercent = 1.0; // profit closure for this symbol only
extern double CloseThisLossPercent = 2.0; // loss closure for this symbol only
extern string ValueInPips= "----Values below in pips----";
extern int Slippage = 7; // set this to an appropriate level for your broker
extern int takeprofit = 30; // Single position take profit in pips - only applies to half the positions!
extern int stoploss = 30; // Single position stop loss in pips
extern int buysellstep = 5; // 10 pip step - should automatically adjust for 3/5 or 2/4 digit brokers
extern int MaxNegExcursion = 0; // number of pips to allow for accumulation against initial anchor
extern int MaxSpread = 10; // max spread in pips to allow opening a new trade
extern string TimeTrading = "----Trading Times HHMM format----";
extern bool useTime1Trading = false;
extern int Time1Start = 200;
extern int Time1Stop = 430;
int ThisBarTrade = 0;
bool ClosingAll = false;
bool ClosingThis = false;
int OpenTrades = 0;
double HighestTrade = 0.0;
double LowestTrade = 0.0;
double AvgTrade = 0.0;
double lPrevPosition = 0; // 1 for above the stack of orders, -1 for below, 0 to reset.
int Position = 0;
double MaxEquity = 0.0;
double CurrentPnL = 0.0;
double dAnchor = 0.0;
double BeginningBalance = 0.0;
double MinLotSize = 0.0;
int NormalizeLots = 1;
int Trend = 0;
int LotMultiplier = 1; // Used for position sizing
int BarTrend = 0;
double BarAnchor = 0.0;
int BarTrendBar = 0;
int MN = 0;
double initialAnchor = 0.0;
int ordernumber = 0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
bool ModifyOrder(int ticket) {
if(ticket == -1) return(false);
bool dotp = false;
double sl = 0.0, tp = 0.0;
int repeats = 0;
ordernumber +=1;
if (MathMod(ordernumber,2) == 0) {
dotp =true;
}
bool result = false;
RefreshRates();
while(!IsTradeAllowed()) Sleep(100);
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true) {
Print("Order Selected " + IntegerToString(ticket));
if(OrderType() == OP_BUY) {
sl = NormalizeDouble(OrderOpenPrice() - stoploss * Point * NormalizeLots, Digits);
if (takeprofit > 0 && dotp == true ) {
tp = NormalizeDouble(takeprofit * Point * NormalizeLots + OrderOpenPrice(), Digits);
} else {
tp = 0.0;
}
}
if(OrderType() == OP_SELL) {
sl = NormalizeDouble(stoploss * Point * NormalizeLots + OrderOpenPrice(), Digits);
if (takeprofit > 0 && dotp == true) {
tp = NormalizeDouble(-takeprofit * Point * NormalizeLots + OrderOpenPrice(), Digits);
} else {
tp = 0.0;
}
}
Print("minimum: " + DoubleToStr(MarketInfo(Symbol() , MODE_STOPLEVEL)) + " Order Type: " + IntegerToString(OrderType()) + " Entry Price: " + DoubleToStr(OrderOpenPrice(),_Digits) + " Moving SL to: " + DoubleToStr(sl,_Digits) + " and TP to " + DoubleToStr(tp,_Digits));
result = OrderModify(ticket, NormalizeDouble(OrderOpenPrice(), Digits), sl, tp, OrderExpiration(), CLR_NONE);
if (result == true) return (true);
} else
repeats += 1;
if (repeats > 5) {
Print("Unable to select ticket # " + IntegerToString(ticket));
return(false); // failure
}
return(true);
}
bool EvaluateTime() {
if(useTime1Trading == false ) return(false);
int t = TimeHour(TimeLocal()) * 100 + TimeMinute(TimeLocal());
if(t < Time1Start && useTime1Trading == true) {
return(true);
}
if(t >= Time1Stop && t >= Time1Stop) {
if(OpenTrades > 0) CloseThis();
return(true);
}
return(false); // allow trading
}
void EvaluateStopAndTarget()
{
if (takeprofit !=0 || stoploss != 0)
{
int i =0;
double tgt = 0.0;
double stp = 0.0;
double PN = Point * NormalizeLots;
bool closed = false;
for(i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
if(OrderMagicNumber() == MN && OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY)
{
tgt = takeprofit * PN;
stp = - stoploss * PN;
if(Bid >= tgt + OrderOpenPrice() && tgt != 0 && MathMod(i, 2) == 0) {
closed = OrderClose( OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),Digits),Slippage * NormalizeLots,White);
Print(Symbol(), " Closing single Target Buy order # ", i, " ", NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)));
}
if(Ask <= stp + OrderOpenPrice() && stp != 0)
{
closed = OrderClose( OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),Digits),Slippage * NormalizeLots,White);
Показано первые 50% кода (символов: 13245)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.