на подобных индикаторах только у меня 8 советников. смотрите в базе. если не найдете то что нужно, дайте ссылку на самый близкий вариант и я его подправлю.
также укажите входы выходы на скринах.
//+------------------------------------------------------------------+
//| 4MA11.mq4 |
//| Copyright 2020, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
#property strict
input double lots = 0.1;
extern double TP = 50;
extern double SL = 60;
input int hour1 = 8;
input int hour2 = 23;
input int PeriodMA1 = 10;
input int PeriodMA2 = 20;
input int PeriodMA3 = 30;
input int PeriodMA4 = 40;
input int Slip = 100;
input int MAGICMA = 123;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
if(Digits==3 || Digits==5)
{
TP = 10 * TP;
SL = 10 * SL;
}
return (0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CheckForSell(double dStopLoss, double dTakeProfit)
{
if(Volume[0]>25)
return;
int res=OrderSend(Symbol(),OP_SELL,lots,Bid,Slip,dStopLoss,dTakeProfit,"",MAGICMA,0,Red);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CheckForBuy(double dStopLoss, double dTakeProfit)
{
if(Volume[0]>25)
return;
int res=OrderSend(Symbol(),OP_BUY,lots,Ask,Slip,dStopLoss,dTakeProfit,"",MAGICMA,0,Blue);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
double ma1 = iMA(NULL,PERIOD_CURRENT,PeriodMA1,0,MODE_LWMA,PRICE_OPEN, 0);
double ma2 = iMA(NULL,PERIOD_CURRENT,PeriodMA2,0,MODE_LWMA,PRICE_CLOSE,0);
double ma3 = iMA(NULL,PERIOD_CURRENT,PeriodMA3,0,MODE_SMA, PRICE_CLOSE,0);
double ma4 = iMA(NULL,PERIOD_CURRENT,PeriodMA4,0,MODE_SMA, PRICE_CLOSE,0);
double ma1ma2 = ma1-ma2;
double ma2ma1 = ma2-ma1;
double ma3ma4 = ma3-ma4;
double ma4ma3 = ma4-ma3;
int CountSymbolPositions=0;
for(int trade=OrdersTotal()-1; trade>=0; trade--)
{
if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol()==Symbol())
{
if((OrderType()==OP_SELL||OrderType()==OP_BUY) && OrderMagicNumber()==MAGICMA)
CountSymbolPositions++;
}
}
if((ma3ma4<0.0048) &&
(ma3>ma1) &&
(ma3>ma2) &&
(Close[1]<Close[2]) &&
(Close[2]<Open[2]) &&
(CountSymbolPositions<1) &&
(Hour()>hour1) &&
(Hour()<hour2) &&
(ma1ma2<0.0013) &&
(ma1ma2>0.0004))
{
double dTakeProfit = Bid - (TP*_Point);
double dStopLoss = Ask + (SL*_Point);
CheckForSell(dStopLoss, dTakeProfit);
}
if((ma4ma3<0.0048) &&
(ma3<ma1) &&
(ma3<ma2) &&
(Close[1]>Close[2]) &&
(Close[2]>Open[2]) &&
(CountSymbolPositions<1) &&
(Hour()>hour1) &&
(Hour()<hour2) &&
(ma2ma1<0.0013) &&
(ma2ma1>0.0004))
{
double dTakeProfit = Ask + (TP*_Point);
double dStopLoss = Bid - (SL*_Point);
CheckForBuy(dStopLoss, dTakeProfit);
}
}
//+------------------------------------------------------------------+
Я прошу одно, но в очередной раз получаю совершенно противоположное
extern int TrailingStop = 250; // трал
extern int TrailingStep = 20; // шаг трала
extern int TrailingStart = 300; // старт трала
AM2