FreeScalper
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «freescalper.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
FreeScalper — советник для MetaTrader 4, использующий пользовательский индикатор freescalperindicator для генерации сигналов на открытие и закрытие позиций. При положительном значении зелёного буфера индикатор открывается BUY, при положительном значении красного — SELL. Закрытие позиции происходит при развороте сигнала индикатора.
Советник работает только в заданном временном окне (от StartHour:StartMin до EndHour:EndMin). Вне этого окна, при установленном параметре CloseOn, все открытые позиции закрываются. Дополнительно реализованы функции скользящего стоп-лосса (TrailingStop) и перевода в безубыток (BU).
Управление объёмом предусматривает увеличение лота после убыточной сделки в KLot раз с ограничением до MaxLot. Все ордера идентифицируются магическим числом Magic и допускают настройку стоп-лосса, тейк-профита и проскальпывания.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Базовый объём лота для открытия новых позиций. |
| KLot | Множитель лота, применяемый к объёму после убыточной сделки. Новый лот рассчитывается как предыдущий лот, умноженный на это значение. |
| MaxLot | Максимально допустимый размер лота. Если рассчитанный лот превышает это значение, устанавливается базовый лот Lots. |
| StopLoss | Стоп-лосс в пунктах от цены открытия ордера. Если значение равно 0, стоп-лосс не устанавливается. |
| TakeProfit | Тейк-профит в пунктах от цены открытия ордера. Если значение равно 0, тейк-профит не устанавливается. |
| BULevel | Уровень безубытка — цена в пунктах от открытия, при достижении которой активируется перевод стоп-лосса в безубыток. Если значение равно 0, функция безубытка не работает. |
| BUPoint | Расстояние в пунктах от цены открытия для установки стоп-лосса при переводе позиции в безубыток. |
| TrailingStop | Расстояние в пунктах для скользящего стоп-лосса. При достижении цены указанного расстояния от точки открытия стоп-лосс перемещается следом за ценой. Если значение равно 0, функция не работает. |
| StartHour | Час начала разрешённого торгового окна (в часах серверного времени). |
| StartMin | Минута начала разрешённого торгового окна. |
| EndHour | Час окончания разрешённого торгового окна (в часах серверного времени). |
| EndMin | Минута окончания разрешённого торгового окна. |
| Slip | Допустимое проскальпывание в пунктах при исполнении рыночных ордеров. |
| Shift | Сдвиг индикатора — количество баров назад, с которых берутся значения индикатора для принятия решений. |
| CloseOn | Флаг закрытия позиций вне торгового окна. Значение 1 — все позиции закрываются при выходе за пределы заданного времени торговли. Значение 0 — вне времени позиции не закрываются. |
| Magic | Магическое число для идентификации ордеров, управляемых данным советником. |
| IndName | Имя пользовательского индикатора, используемого для формирования торговых сигналов (зелёный и красный буферы). |
| IndPeriod | Период расчёта пользовательского индикатора, задающий временной горизонт анализа сигналов. |
Поиск по коду файла
#property version "1.00"
#property strict
extern double Lots = 0.1; // ???
extern double KLot = 1; // ????????? ????
extern double MaxLot = 5; // ???????????? ???
extern int StopLoss = 2000; // ????
extern int TakeProfit = 3000; // ???
extern int BULevel = 0; // ??????? ??
extern int BUPoint = 30; // ?????? ??
extern int TrailingStop = 0; // ????
extern int StartHour = 0; // ??? ?????? ????????
extern int StartMin = 30; // ?????? ?????? ????????
extern int EndHour = 23; // ??? ????????? ????????
extern int EndMin = 30; // ?????? ????????? ????????
extern int Slip = 30; // ??????
extern int Shift = 1; // ?? ????? ???? ?????? ??????????
extern int CloseOn = 1; // 1-???????? ? ????? ??????
extern int Magic = 123; // ?????
extern string IndName = "freescalperindicator";
extern int IndPeriod = 14;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
Comment("");
}
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
{
datetime db, de; // ????? ?????? ? ????????? ??????
int hc; // ???? ???????? ??????? ????????? ???????
db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
hc=TimeHour(TimeCurrent());
if(db>=de)
{
if(hc>=he) de+=24*60*60; else db-=24*60*60;
}
if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
else return(False);
}
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
}
r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2) count++;
}
}
}
return(count);
}
void OpenPos()
{
double green = iCustom(NULL,0,IndName,IndPeriod,0,Shift);
double red = iCustom(NULL,0,IndName,IndPeriod,1,Shift);
if(green>0)
{
PutOrder(0,Ask);
}
if(red>0)
{
PutOrder(1,Bid);
}
}
void ClosePos()
{
double green = iCustom(NULL,0,IndName,IndPeriod,0,Shift);
double red = iCustom(NULL,0,IndName,IndPeriod,1,Shift);
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY)
{
if(red>0)
{
if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White))
Print("OrderClose error ",GetLastError());
}
}
if(OrderType()==OP_SELL)
{
if(green>0)
{
if(!OrderClose(OrderTicket(),OrderLots()Показано первые 50% кода (символов: 4811)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.