hft ea2.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «hft ea2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник предназначен для автоматической торговли на платформе MetaTrader 4. Он анализирует цену на нескольких таймфреймах, оценивая отклонение текущей цены от среднего значения, и использует объёмные индикаторы для подтверждения торговых сигналов.
При обнаружении значительного отклонения цены вверх или вниз с учётом объёмных условий советник открывает сделки. Перед входом проверяется допустимый уровень спреда и комиссии. Открытые позиции закрываются при возврате цены к среднему значению.
Размер позиции рассчитывается исходя из процента риска от баланса счёта с учётом минимального лота, спреда и комиссии. Тейк-прибытие устанавливается на объёмном среднем значении цены.
Настройки программы
| Настройка | Описание |
|---|---|
| risk_percent | Процент риска от баланса счёта, используемый для расчёта размера лота. |
| commision | Комиссия в пунктах, учитываемая при расчёте допустимого спреда и размера позиции. |
| spreadRR | Допустимое соотношение спреда к отклонению цены, при котором допускается вход в сделку. |
| mtf | Количество таймфреймов, используемых для анализа цены и формирования сигналов. |
Поиск по коду файла
#property description "High-Frequency Trading Robot"
extern double risk_percent = 1;
extern double commision = 7;
extern double spreadRR = 0.20;
extern int mtf = 1;
int Ticket;
int i,j;
int timef;
double VOLUME[500];
double CLOSE[500];
double HIGH[500];
double LOW[500];
double OBV[500];
double AD[500];
double sum,sumv, sumh, suml, sumOBV, sumAD;
double mean,meanh,meanl,meanv,meanOBV,meanAD;
double e, eOBV, eAD;
double vol;
int trade=0;
double Lots,distSL,pointsdistSL,spread,spreadpoints,CommisionPoints,lotvaluepoint,minlot,minimumrisk,digits,TP;
int OnInit()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);}
void OnTick()
{
// код доступен только после оплаты
}
if(OrdersTotal()==0)
{
for(timef=1; timef<=mtf; timef++)
{
if(timef*30<Bars)
{
sum=0;
for(i=0; i<20; i++)
{CLOSE[i]=Close[i*timef];
sum=sum+CLOSE[i];}
mean=sum/20;
e=0;
for(i=0; i<20; i++)
{e=e+MathPow(CLOSE[i]-mean,2);}
e=MathSqrt(e/20);
if(CLOSE[0]>mean+2*e)
{
suml=0; sumv=0; vol=0;
for(i=0;i<20;i++)
{
LOW[i]=Low[iLowest(NULL,0,MODE_LOW,timef,i*timef)];
suml=suml+LOW[i];
j=0; VOLUME[i]=0;
while( j<timef )
{VOLUME[i]=VOLUME[i]+Volume[i*timef+j]; j++;}
sumv=sumv+CLOSE[i]*VOLUME[i];
vol=vol+VOLUME[i];
}
meanl=suml/20;
meanv=sumv/vol;
if(meanv<meanl)
{
OBV[20]=0; CLOSE[20]=Close[20*timef]; sumOBV=0;
for(i=19;i>=0; i--)
{
if( CLOSE[i]>CLOSE[i+1] )
{OBV[i]=OBV[i+1]+VOLUME[i];}
else{OBV[i]=OBV[i+1]-VOLUME[i];}
sumOBV=sumOBV+OBV[i];
}
meanOBV=sumOBV/20;
eOBV=0;
for(i=0; i<20; i++)
{eOBV=eOBV+MathPow(OBV[i]-meanOBV,2);}
eOBV=MathSqrt(eOBV/20);
if( OBV[0]<meanOBV )
{
AD[20]=0; sumAD=0;
for(i=19;i>=0; i--)
{
AD[i]=AD[i+1]+VOLUME[i]*(CLOSE[i]-CLOSE[i+1]);
sumAD=sumAD+AD[i];
}
meanAD=sumAD/20;
eAD=0;
for(i=0; i<20; i++)
{eAD=eAD+MathPow(AD[i]-meanAD,2);}
eAD=MathSqrt(eAD/20);
if( AD[0]<meanAD )
{
Alert(Symbol()," Sell Signal ",timef," Spread: ",NormalizeDouble( ((Ask-Bid)+commision*Point)/(Close[0]-meanh),2 ) );
if( (Ask-Bid)+commision*Point<=spreadRR*(Close[0]-meanh) )
{
distSL=Close[0]-meanh;//Alert("distSL ",distSL);
pointsdistSL=distSL/Point;//Alert("pointsdistSL ",pointsdistSL);
spread=Ask-Bid; //Alert("spread ",spread);
spreadpoints=spread/Point;//Alert("spreadpoints ",spreadpoints);
CommisionPoints=commision;//Alert("CommisionPoints ",CommisionPoints);
lotvaluepoint=MarketInfo(NULL,MODE_TICKVALUE);//Alert("lotvaluepoint ",lotvaluepoint);
minlot=MarketInfo(NULL,MODE_MINLOT);//Alert("minlot ",minlot);
minimumrisk=(pointsdistSL+spreadpoints+CommisionPoints)*lotvaluepoint*minlot;//Alert("minimumrisk ",minimumrisk);
if(MarketInfo(NULL,MODE_MINLOT)==0.01){digits=2;}else if(MarketInfo(NULL,MODE_MINLOT)==0.1){digits=1;}else if(MarketInfo(NULL,MODE_MINLOT)==1){digits=0;}//Alert("digits ",digits);
Lots= (((risk_percent/100)*AccountBalance())/minimumrisk)*minlot;//Alert("Lots ",Lots);
if(Lots>=minlot)
{
Lots=NormalizeDouble(Lots,digits);Alert("lots>minlot margin required=",Lots*MarketInfo(NUПоказано первые 50% кода (символов: 5692)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.