crypto amazing analysis 2.6.0.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «crypto amazing analysis 2.6.0.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Торговый советник для MetaTrader 4, который анализирует ценовые данные с помощью набора технических индикаторов — RSI, Momentum, MACD, скользящие средние и полосы Боллинджера — и на основании их сигналов открывает сделки. При формировании торгового сигнала проверяется несколько условий одновременно: пересечение скользящих средних, положение цены относительно полос Боллинджера, уровень RSI и показатель Momentum, что обеспечивает многокомпонентную фильтрацию входов в позицию.
Советник включает несколько механизмов управления рисками. Функция stop() закрывает позиции при смене направления скользящих средних. Trail1() реализует трейлинг-стоп, перемещая уровень стоп-лосса по мере движения цены в нужную сторону. MOVETOBREAKEVEN() переводит убыточные ордера в безубыток при достижении заданного числа пунктов прибыли. Функция LotsOptimized() рассчитывает размер лота с учётом риска на маржу и коэффициента уменьшения после серии убытков.
Советник работает на разных таймфреймах, автоматически подбирая расчётные периоды для старших и младших таймфреймов. Перед открытием ордера проверяются минимальное количество баров и минимальное значение TakeProfit, а при модификации уровней учитываются стоп-уровень и заморозка ценовых уровней символа. Торговые операции выполняются через стандартный API OrderSend с нормализацией цен и контролем ошибок.
Настройки программы
| Настройка | Описание |
|---|---|
| Enable "no loss" (USEMOVETOBREAKEVEN) | Включить перевод в безубыток — Переключатель, включающий или отключающий автоматический перевод убыточных ордеров в безубыток. |
| When to move break even (WHENTOMOVETOBE) | Пункты прибыли для перевода в безубыток — Количество пунктов прибыли от цены открытия, при достижении которых ордер перемещается в безубыток. |
| How much pips to move sl (PIPSTOMOVESL) | Пункты для перемещения стоп-лосса — Количество пунктов, на которое перемещается стоп-лосс при переводе ордера в безубыток. |
| Lots size (Lots) | Размер лота — Начальный размер лота, используемый при расчёте оптимального объёма торговой позиции. |
| MaximumRisk | Максимальный риск — Максимальный риск в процентах от свободной маржи, используемый для расчёта размера лота при открытии позиции. |
| DecreaseFactor | Коэффициент уменьшения лота — Коэффициент уменьшения лота при наличии серии убыточных ордеров. Чем больше значение, тем сильнее лот сокращается при последовательных убытках. |
| TrailingStop (TrailingStop) | Трейлинг-стоп в пунктах — Расстояние в пунктах для трейлинг-стопа. При достижении цены заданного отступа от цены открытия стоп-лосс перемещается вслед за ценой. |
| Stop Loss (Stop_Loss) | Стоп-лосс в пунктах — Расстояние в пунктах от цены открытия до уровня стоп-лосса при открытии ордера. |
| MagicNumber (MagicNumber) | Магический номер — Уникальный идентификатор ордеров, позволяющий советнику отличать свои сделки от сделок других советников на счёте. |
| TakeProfit (TakeProfit) | Тейк-профит в пунктах — Расстояние в пунктах от цены открытия до уровня тейк-профита при открытии ордера. |
| FastMA (FastMA) | Период быстрой скользящей средней — Период быстрой скользящей средней, используемой для определения краткосрочного тренда и генерации торговых сигналов. |
| SlowMA (SlowMA) | Период медленной скользящей средней — Период медленной скользящей средней, используемой совместно с быстрой для определения направления тренда. |
| Momentum_Sell (Mom_Sell) | Порог Momentum для продажи — Пороговое значение индикатора Momentum для подтверждения сигнала на продажу (SELL). |
| Momentum_Buy (Mom_Buy) | Порог Momentum для покупки — Пороговое значение индикатора Momentum для подтверждения сигнала на покупку (BUY). |
Поиск по коду файла
#property version "1.00"
#property strict
extern bool USEMOVETOBREAKEVEN=true;//Enable "no loss"
extern double WHENTOMOVETOBE=10; //When to move break even
extern double PIPSTOMOVESL=5; //How much pips to move sl
extern double Lots=0.01; //Lots size
input double MaximumRisk =0.02;
input double DecreaseFactor=3;
extern double TrailingStop=40; //TrailingStop
extern double Stop_Loss=20; //Stop Loss
extern int MagicNumber=1234; //MagicNumber
input double TakeProfit=50; //TakeProfit
extern int FastMA=6; //FastMA
extern int SlowMA=85; //SlowMA
extern double Mom_Sell=0.3; //Momentum_Sell
extern double Mom_Buy=0.3; //Momentum_Buy
int err;
int total=0;
double
Lot,Dmax,Dmin,// Amount of lots in a selected order
Lts, // Amount of lots in an opened order
Min_Lot, // Minimal amount of lots
Step, // Step of lot size change
Free, // Current free margin
One_Lot, // Price of one lot
Price, // Price of a selected order,
pips,
MA_1,MA_2,MA_3,MACD_SIGNAL;
int Type,freeze_level,Spread;
double priceopen,stoploss,takeprofit;
int orderticket;
int
Period_MA_2, Period_MA_3, // Calculation periods of MA for other timefr.
Period_MA_02, Period_MA_03, // Calculation periods of supp. MAs
K2,K3,T,L;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
}
void OnTick(void)
{
// код доступен только после оплаты
}
int stop()
{
total=0;
double MA_1_t=iMA(NULL,0,FastMA,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_1
double MA_2_t=iMA(NULL,0,SlowMA,0,MODE_LWMA,PRICE_TYPICAL,0); // МА_2
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
if(OrderSymbol()==Symbol() || OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(MA_1_t<MA_2_t)
if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
Print(" CLOSE BY STOP STRATEGY ");
}
else // go to short position
{
if(MA_1_t>MA_2_t)
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
Print(" CLOSE BY STOP STRATEGY ");
}
}
}
}
return(0);
}
void Trail1()
{
total=OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>pips*TrailingStop)
{
if(OrderStopLoss()<Bid-pips*TrailingStop)
{
RefreshRates();
stoploss=Bid-(pips*TrailingStop);
takeprofit=OrderTakeProfit() ;
double StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
if(stoploss<StopLevel*pips) stoploss=StopLevel*pips;
string symbol=OrderSymbol();
double point=SymbolInfoDouble(symbol,SYMBOL_POINT);
if(MathAbs(OrderStopLoss()-stoploss)>point)
if((pips*TrailingStop)>(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL)*pips)
if(CheckStopLoss_Takeprofit(OP_BUY,stoploss,takeprofit))
if(OrderModifyCheck(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit,0,Green))
Print("OrderModify error ",GetLastError());
return;
}
}
}
}
else // go to short position
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(pips*TrailingStop))
{
if((OrderStopLoss()>(Ask+pips*TrailingStop)) || (OrderStopLoss()==0))
{
RefrПоказано первые 50% кода (символов: 12129)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.