pcs-02.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pcs-02.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, работающий на валютной паре EURAUD. Использует метод анализа канала цены для формирования сигналов на покупку и продажу, а также управляет позициями с фиксированными уровнями стоп-лосс и тейк-профит.
Советник отслеживает текущее состояние рынка через встроенный индикатор канала, определяя направление тренда на основе пробоя границ канала. При появлении сигнала на вход в позицию советник проверяет отсутствие открытых ордеров с тем же магическим номером и открывает новую сделку.
При закрытии позиции или открытии новой используется механизм повторных попыток с задержкой между попытками в случае ошибок торгового сервера. Все ордера идентифицируются уникальным магическим номером, что позволяет советнику управлять только своими позициями.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Объём сделки — Объём позиции в лотах для открытия новой сделки. |
| StopLoss | Стоп-лосс — Размер стоп-лосса в пунктах от цены входа. |
| TakeProfit | Тейк-профит — Размер тейк-профита в пунктах от цены входа. |
| MagicNumber | Магический номер — Уникальный идентификатор ордеров советника для их отслеживания и управления. |
| PCP | Название индикатора — Текстовая строка, отображаемая в комментарии или на графике для идентификации используемого индикатора. |
| Risk | Коэффициент риска — Множитель, определяющий ширину зоны канала для расчёта уровней стопов. |
| Price Channel Period (ChannelPeriod) | Период канала — Количество баров, используемое для построения ценового канала. |
Поиск по коду файла
#include <stdlib.mqh>
#include <stderror.mqh>
extern double Lots = 0.1;
extern int StopLoss = 1000;
extern int TakeProfit = 1000;
extern int MagicNumber = 6540123;
extern string PCP = " --- ????????? PriceChannel_Stop_v6 --- ";
extern double Risk = 0.30;
extern int ChannelPeriod = 9; //Price Channel Period
int Slippage = 3;
double SL,TP;
int i,j,CBar,CTicket=0;
string S;
double UpTrendSignal[];
double DownTrendSignal[];
void init()
{
// код доступен только после оплаты
}
void PriceChannel_Stop_v6()
{
double UpTrendBuffer[];
double DownTrendBuffer[];
double UpTrendLine[];
double DownTrendLine[];
double UpTrendBar[];
double DownTrendBar[];
int Signal=1; //Display signals mode: 1-Signals & Stops; 0-only Stops; 2-only Signals;
int Line=1; //Display line mode: 0-no,1-yes
int ColorBar=1; //Display color bars mode: 0-no,1-yes
int TimeFrame=0;
int Nbars=100;
datetime TimeArray[];
int i,shift,trend,y=0;
double high, low, price, sum, VolAverage,UpBar,DnBar;
double smax[25000],smin[25000],bsmax[25000],bsmin[25000],Mid[25000],Vol[25000];
double LowArray[],HighArray[];
for (shift=Nbars-1;shift>=0;shift--)
{
UpTrendBuffer[shift]=0.0;
DownTrendBuffer[shift]=0.0;
UpTrendSignal[shift]=0.0;
DownTrendSignal[shift]=0.0;
UpTrendLine[shift]=EMPTY_VALUE;
DownTrendLine[shift]=EMPTY_VALUE;
UpTrendBar[shift]=0.0;
DownTrendBar[shift]=0.0;
}
ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
ArrayCopySeries(LowArray,MODE_LOW,Symbol(),TimeFrame);
ArrayCopySeries(HighArray,MODE_HIGH,Symbol(),TimeFrame);
for(i=0,y=0;i<Nbars;i++)
{
if (Time[i]<TimeArray[y]) y++;
smin[i]=LowArray[Lowest(NULL,TimeFrame,MODE_LOW,ChannelPeriod,y)];
smax[i]=HighArray[Highest(NULL,TimeFrame,MODE_HIGH,ChannelPeriod,y)];
Mid[i]=0.5*(smin[i]+smax[i]);
}
for (shift=Nbars-ChannelPeriod-1;shift>=0;shift--)
{
bsmax[shift]=smax[shift]-(smax[shift]-smin[shift])*Risk;
bsmin[shift]=smin[shift]+(smax[shift]-smin[shift])*Risk;
if(Risk>0)
{
if(Close[shift]>bsmax[shift]) trend=1;
if(Close[shift]<bsmin[shift]) trend=-1;
}
else
{
if(Close[shift]>bsmax[shift+1]) trend=1;
if(Close[shift]<bsmin[shift+1]) trend=-1;
}
if(trend>0)
{
if(Risk>0 && Close[shift]<bsmin[shift]) bsmin[shift]=bsmin[shift+1];
if(bsmin[shift]<bsmin[shift+1]) bsmin[shift]=bsmin[shift+1];
}
if(trend<0)
{
if(Risk>0 && Close[shift]>bsmax[shift]) bsmax[shift]=bsmax[shift+1];
if(bsmax[shift]>bsmax[shift+1]) bsmax[shift]=bsmax[shift+1];
}
UpBar=bsmax[shift];
DnBar=bsmin[shift];
if ( Risk == 0 ){UpBar=Mid[shift];DnBar=Mid[shift];}
if (trend>0)
{
if (Signal>0 && UpTrendBuffer[shift+1]==-1.0)
{
UpTrendSignal[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
}
else
{
UpTrendBuffer[shift]=bsmin[shift];
if(Line>0) UpTrendLine[shift]=bsmin[shift];
UpTrendSignal[shift]=-1;
}
if(ColorBar>0)
{
if(Close[shift]>UpBar)
{
UpTrendBar[shift]=High[shift];
DownTrendBar[shift]=Low[shift];
}
else
{
UpTrendBar[shift]=EMPTY_VALUE;
DoПоказано первые 50% кода (символов: 5132)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.