b l u e 2.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «b l u e 2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Он автоматически рассчитывает индикаторы TWAP (средневзвешенная цена по времени) и VWAP (средневзвешенная цена по объёму) на заданном диапазоне баров, формируя динамические каналы вокруг них.
Советник обрабатывает событие OnTick и при изменении ценовых условий автоматически открывает короткие и длинные позиции с использованием торговых функций MetaTrader (OrderSend, OrderClose). Позиции закрываются при достижении ценой определённых уровней, рассчитанных на основе ширины канала.
Внутренняя логика включает пересчёт индикаторов на каждом тике, отслеживание направления скользящего среднего TWAP и проверку условий для управления торговыми операциями. Все параметры торговли задаются через настраиваемые переменные.
Настройки программы
| Настройка | Описание |
|---|---|
| DP | Множитель для расчёта ширины канала на основе средних ценовых отклонений от TWAP |
| Lots | Объём сделки в лотах при открытии позиции |
| commision | Комиссия, учитываемая при оценке условий открытия позиции через спред |
| spreadRR | Коэффициент соотношения спреда и ценового диапазона для фильтрации условий открытия сделки |
Поиск по коду файла
#property description "High-Frequency Trading Robot"
extern double DP = 4;
extern double Lots = 0.01;
extern double commision = 7;
extern double spreadRR = 0.20;
int begin = 60;
int finish = 1440;
double price, high, low, volume, add=0;
double TWAP[],VWAP[],TWAPh[],TWAPl[],TWAPHH[],TWAPHL[],TWAPLL[],TWAPLH[],SLOPE[];
double Twap,Vwap,Twaph,Twapl,TwapHH,TwapLL,TwapHL,TwapLH;
double twap[],vwap[],twaph[],twapl[],twapHH[],twapHL[],twapLH[],twapLL[];
double count[],count2[],sum[],sum2[],sumh[],suml[],sumE[],sumE2[];
double sumAnt[],sum2Ant[],sumhAnt[],sumlAnt[],countAnt[],count2Ant[],sumEAnt[],sumE2Ant[];
double OPEN,HIGH,LOW,CLOSE;
int Ticket,trade=0,n,i,j,Reload=0,INIC=0,orders;
datetime TimeBar;
int OnInit()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);}
void OnTick()
{
// код доступен только после оплаты
}
RefreshRates();
if(IsConnected()==0 && Reload==0){Reload=1;}
else if (IsConnected()==1 && Reload==1){Reload=0;INIC=0;}
if(Bars>1500)
{
if(INIC==0)
{
j=2; TwapHH=0;TwapLL=0;TwapHL=0;TwapLH=0;Twap=0;Vwap=0;Twaph=0;Twapl=0;
for(n = begin-1; n<=finish; n++)
{
for(i = n-1; i>=0; i--)
{
price=(High[j+i]+Close[j+i]+Low[j+i]+Open[j+i])/4;
high=High[j+i];
low=Low[j+i];
volume=Volume[j+i];
if(i==n-1)
{
sum[n]=price;
sum2[n]=price*volume;
sumh[n]=high;
suml[n]=low;
count[n]=1;
count2[n]=volume;
twap[n]=sum[n]/count[n];
vwap[n]=sum2[n]/count2[n];
twaph[n]=sumh[n]/count[n];
twapl[n]=suml[n]/count[n];
if(high>=twap[n] && low<=twap[n])
{sumE[n]=0;
sumE2[n]=MathMax(high-twap[n],twap[n]-low);}
else
{sumE[n]=MathMax(low-twap[n],twap[n]-high);
sumE2[n]=MathMax(high-twap[n],twap[n]-low);}
}
else
{
sum[n]=sum[n]+price;
sum2[n]=sum2[n]+price*volume;
sumh[n]=sumh[n]+high;
suml[n]=suml[n]+low;
count[n]=count[n]+1;
count2[n]=count2[n]+volume;
twap[n]=sum[n]/count[n];
vwap[n]=sum2[n]/count2[n];
twaph[n]=sumh[n]/count[n];
twapl[n]=suml[n]/count[n];
if(high>=twap[n] && low<=twap[n])
{sumE[n]=sumE[n]+0;
sumE2[n]=sumE2[n]+MathMax(high-twap[n],twap[n]-low);}
else
{sumE[n]=sumE[n]+MathMax(low-twap[n],twap[n]-high);
sumE2[n]=sumE2[n]+MathMax(high-twap[n],twap[n]-low);}
}
}
twapHL[n]=twap[n]+DP*(sumE[n]/count[n]);
twapLH[n]=twap[n]-DP*(sumE[n]/count[n]);
twapHH[n]=twap[n]+DP*(sumE2[n]/count[n]);
twapLL[n]=twap[n]-DP*(sumE2[n]/count[n]);
if(n==60||
n==67 ||
n==75 ||
n==83 ||
n==93 ||
n==104 ||
n==116 ||
n==129 ||
n==144 ||
n==161 ||
n==180 ||
n==200 ||
n==224 ||
n==249 ||
n==278 ||
n==311 ||
n==347 ||
n==387 ||
n==431 ||
n==481 ||
n==537 ||
n==599 ||
n==669 ||
n==746 ||
n==833 ||
n==929 ||
n==1037 ||
n==1157 ||
n==1291 ||
n==1440)
{
Twap=Twap+twap[n];
Vwap=Vwap+vwap[n];
Twaph=Twaph+twaph[n];
Twapl=Twapl+twapl[n];
TwapHH=TwapHH+twapHH[n];
TwapLL=TwapLL+twapLL[n];
TwapHL=TwapHL+twapHL[n];
TwapLH=TwapLH+twapLH[n];
}
}
TWAP[1]=Twap/30;
VWAP[1]=Vwap/30;
TWAPHH[1]=TwapHH/30;
TWAPHL[1]=TwapHL/30;
TWAPLL[1]=TwapLL/30;
TWAPLH[1]=TwapLH/30;
TWAPh[1]=Twaph/30;
TWAPl[1]=Twapl/30;
}
if(Time[0]!=TimeBar)
{
j=1;
TwapHH=0;TwapLL=0;TwapHL=0;TwapLH=0;Twap=0;Vwap=0;Twaph=0;Twapl=0;
TWAP[2]=TWAP[1];
VWAP[2]=VWAP[1];
TWAPHH[2]=TWAPHH[1];
TWAPHL[2]=TWAPHL[1];
TWAPLL[2]=TWAPLL[1];
TWAPLH[2]=TWAPLH[1];
TWAPh[2]=TWAPh[1];
TWAPl[2]=TWAPl[1];
for(n = finish; n>=begin; n--)
{
price=(High[j]+Close[j]+Low[j]+Open[j])/4;
high=High[j];
low=Low[j];
volume=Volume[j];
sum[n]=sum[n-1];
sum2[n]=sum2[n-1];
sumh[n]=sПоказано первые 50% кода (символов: 9644)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.