или как там по МА фильтруют
Это зависит от фантазии пользователя, поэтому и вопрос

Завтра добавлю.
или как там по МА фильтруют
фильтр по МА
Все-таки хотелось бы доделать советник.Самое важное: после открытия любых трех ордеров должна начать сортировка ордеров.Четвертый ордер ( пусть это будет BUY) должен открываться только в том случае, если среди трех имеющихся открытых ордеров хотя бы один ордер имеет противоположное направление (SELL) к четвертому ордеру. Среди SELL-ордеров следует закрыть ордер с самым большом профитом.
Здесь тоже не совсем нормально. Цифры повторяются.
if(StarBBBlue!=BBBlue)
{
if(IsTesting()) Log(DoubleToString(NormalizeDouble(BBBlue,Digits)));
StarBBBlue=BBBlue;
}
if(StarBBBlue!=BBBlue)
{
if(IsTesting()) Log(DoubleToString(NormalizeDouble(BBBlue,Digits)));
StarBBBlue=BBBlue;
}
1.12602000
1.12602000
1.12679000
1.12770000
1.12770000
1.12868000
1.12976000
1.13111000
1.13320000
1.13320000
1.13351000
1.13438000
1.13505000
1.13507000
1.13507000
1.13523000
1.13523000
1.13539000
1.13545000
1.13545000
1.13545000
1.13546000
1.13546000
1.13550000
1.13550000
1.13572000
1.13572000
1.13589000
1.13589000
1.13604000
1.13604000
1.13605000
1.13605000
индикатор показывает максимум и минимум дня, суть в том, чтоб выставлять отложенные ордера за уровнями индикатора бай и селл, стопы и тейки.
особенность выставления отложенного ордера:
если цена прошла допустим 300пп от максимума, то выставляется отложенный ордер, а где 270 пп., там не ставим (значения можно менять от 1пп до 1000+пп) также выставление стопов.
Отложенный ордер должен выставятся на выбранном расстоянии от максимума, минимума(возможность выбирать расстояние)
выбор траллить или нет, перевод в БУ при достижении «N» количества пп, после чего траллить или нет, длина тралла(расстояние тралла от цены)
выбор убирать не сработанный ордер на следующий день или нет
если можно то в пятницу вечером убирать все не сработанные ордера
итак итого:
обязательно пятизнак.
выставление стопов и тейков.
тралл (выбор) длина трала от цены.
перевод в БУ при «N» количестве пп. после чего траллить или нет (выбор).
выбор растояния выставления ордера от максимума, минимума(обязательно).
удаление несработанных ордеров на следующий день или второй (выбор).
возможность удаление несработанных ордеров в пятницу вечером(если возможно).
ордер выставляется 1 раз над максимумом, минимумом или выбор сколько раз (если сработал стоп, а условия снова совпали).
if (old_IND_1 != IND_1) {
if(IsTesting()) Log();
else
return (0);
}
//+------------------------------------------------------------------+
//| ExBB.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "BBands expert advisor"
//--- Inputs
extern double Lots = 0.1; // лот
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int Slip = 30; // слипаж
//----
extern int Length = 20; // период BB
extern double Deviation = 2; // отклонение ВВ
extern int Magic = 20; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int res;
//--- get Ind
double BBBlue=iCustom(Symbol(),0,"BBands_Stop_v1",Length,Deviation,0,1);
double BBRed=iCustom(Symbol(),0,"BBands_Stop_v1",Length,Deviation,1,1);
if(IsTesting()) Log(DoubleToString(NormalizeDouble(BBBlue,Digits)));
//--- sell conditions
if(BBRed>0)
{
res=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),
Slip,NormalizeDouble(Bid+StopLoss*Point,Digits),
NormalizeDouble(Bid-TakeProfit*Point,Digits),"",Magic,0,Red);
return;
}
//--- buy conditions
if(BBBlue>0)
{
res=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),
Slip,NormalizeDouble(Ask-StopLoss*Point,Digits),
NormalizeDouble(Ask+TakeProfit*Point,Digits),"",Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void Log(string s="")
{
//--- Открываем файл лога
int fileHandle=FileOpen("MyLog.csv",FILE_READ|FILE_WRITE|FILE_CSV);
if(FileSeek(fileHandle,FileSize(fileHandle),SEEK_SET))
FileWrite(fileHandle,s);
FileClose(fileHandle); // закрываем файл лога
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1) OpenPos();
}
//+------------------------------------------------------------------+
1.11852000
1.12665000
-1.00000000
-1.00000000
-1.00000000
-1.00000000
1.12273000
1.12810000
1.12810000
1.13004000
1.13815000
-1.00000000
-1.00000000
-1.00000000
-1.00000000
1.11105000
1.11105000
1.11596000
AM2