Здравствуйте уважаемые! Есть просьба посмотреть и попробовать доработать советник усреднитель он работает по стандартным индикаторам MT. Суть в том что когда цена идет не туда советник открывает ордер в противоположную сторону, можно ли как то сделать чтобы ограничить это число ордеров, может поставить мартин? Еше не плохо было бы добавить трал с шагом который можно выбирать и может быть сетку из отложек. Суть в том сто входы у него очень хорошие в итоге ситуация идет туда куда надо, но бывает что и наоборот. Просьба ограничить открытие число ордеров усреднения, добавить тралл. Еше если не трудно можно ли добафить обычную машку чтобы по ней фильтровался тренд, то есть свое рода фильтр для открытия сделок. Вот в принципе и все, заранее спасибо…
mk.mq4 (16 Kb)
Комментарии (20)
35 AM2 Сообщений: 16430 - Андрей
По поводу тз хорошо порпобую объяснить (просьба сильно не пинать только начинаю во все вникать)
Давайте оставим принцип входа с вышевыложеного советника
но,
1. Добавим треддовую машку если тренд вверх не открывать сел и наоборот если вниз не открывать бай
скрин 1
2.Сделать чтобы был мартин, тоесть сейчас лот 0.01 всегда сделать коэффициент увеличения
3. На скрине видно что сов поставил 3 лота, если получится регулировать эту величину например чтобы он поставил 1 и ждал благоприятного момента для закрытия например, я понимаю но что это будет пересидка, но по моим наблюдением цена возвратится всегда в нужную сторону.
4. Можно ли сделать сопровождение ордеров например трал
7 kostya010 Автор Сообщений: 46
7 kostya010 Автор Сообщений: 46
extern double Lot = 0.01; // Количество лотов
Задумался
8 39mail Сообщений: 48 - fenix74
Советник простой но если правильно подобрать настройки то в меру прибыльный, просо его надо как то обуздать, ограничить количество лотов, сделать трал, возможно добавить фильтр в виде 1 машки хотя бы.
параметры
Редактирован: 28 августа 2019, 09:26
7 kostya010 Автор Сообщений: 46
18 GAWroch Сообщений: 84 - Вячеслав
7 kostya010 Автор Сообщений: 46
//+------------------------------------------------------------------+
//| |
//| MK |
//| |
//+------------------------------------------------------------------+
#property copyright «mk»
#property link ""
#property version «1.00»
#property strict
extern int H = 24; //Кол-во свечей в зоне
extern int k = 50;
extern int TakeProfit = 40;
extern double Lot = 0.01; // Количество лотов
extern int Magic = 180117; // Меджик советника
datetime StartTime = 0;
int aticket;
bool IsTrade = false;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if (StartTime != Time[0])
{
//GetCloseOrder();
StartTime = Time[0];
IsTrade = true;
}
if (IsTrade && MarginCheck(Lot))
{
int ords = 0;
double Sum = 0;
double takeS = NormalizeDouble(Bid — TakeProfit*Point, Digits);
double takeB = NormalizeDouble(Ask + TakeProfit*Point, Digits);
if (Open[0] >= (High[iHighest(NULL,0,MODE_HIGH,H,2)] + k*Point) && Open[0] > Open[1])
{
if (OrdersTotal()>0)
{
for(int i = 1; i <= OrdersTotal(); i++)
{
OrderSelect(i-1,SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderType() == OP_BUY) && (OrderMagicNumber() == Magic))
{
Sum = Sum + OrderOpenPrice();
ords++;
}
}
takeS = (Sum + Bid)/(ords+1) — (TakeProfit*Point);
}
int tick = OrderSend (Symbol(), OP_BUY, Lot, Bid, 3, 0, 0, "", Magic, 0, clrNONE);
if (tick < 0) Print(«OrderSend завершилась с ошибкой #»,GetLastError());
else
{
for (int i = 1; i <= OrdersTotal(); i++)
{
bool ticket = OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES);
if(ticket == false) Print («Ошибка при выборе ордера»);
if ((OrderSymbol() == Symbol()) && (OrderType() == OP_SELL) && (OrderMagicNumber() == Magic))
{
OrderModify(OrderTicket(),OrderOpenPrice(),0,NormalizeDouble(takeS,Digits),0,clrRed);
}
}
}
IsTrade = false;
}
if (Open[0] <= (Low[iLowest(NULL,0,MODE_LOW,H,2)] — k*Point) && Open[0] < Open[1])
{
if (OrdersTotal()>0)
{
for(int i = 1; i <= OrdersTotal(); i++)
{
OrderSelect(i-1,SELECT_BY_POS, MODE_TRADES);
if ((OrderSymbol() == Symbol()) && (OrderType() == OP_SELL) && (OrderMagicNumber() == Magic))
{
Sum = Sum + OrderOpenPrice();
Print («Текущая сумма равна » + DoubleToString(Sum,5));
ords++;
}
}
takeB = (Sum + Ask)/(ords+1) + (TakeProfit*Point);
}
int tick = OrderSend (Symbol(), OP_SELL, Lot, Ask, 3, 0, 0, "", Magic, 0, clrNONE);
if (tick < 0) Print(«OrderSend завершилась с ошибкой #»,GetLastError());
else
{
for (int i = 1; i <= OrdersTotal(); i++)
{
bool ticket = OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES);
if(ticket == false) Print («Ошибка при выборе ордера»);
if ((OrderSymbol() == Symbol()) && (OrderType() == OP_BUY) && (OrderMagicNumber() == Magic))
{
OrderModify(OrderTicket(),OrderOpenPrice(),0,NormalizeDouble(takeB,Digits),0,clrBlue);
}
}
}
IsTrade = false;
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void comment(int n,color c,string s0="",string s1="",string s2="",string s3="",string s4="",string s5="",
string s6="",string s7="",string s8="",string s9="",string s10="",string s11="",
string s12="",string s13="",string s14="",string s15="",string s16="",string s17="",
string s18="",string s19="")
{
string r=s0+s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s14+s15+s16+s17+s18+s19;
string name=«Stata»+IntegerToString(n);//_comment-имя советника или любой идентификатор для маркировки «своих» объектов
int y=15+n*15;
int x=5;
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet(name,OBJPROP_XDISTANCE,x);
ObjectSet(name,OBJPROP_YDISTANCE,y);
ObjectSetText(name,r,9,«Arial black»,c);
}
//----------------------------------------------------------------------
//------------------------------------------------------------------------
bool MarginCheck(double LotX)
{
if(LotX*MarketInfo(Symbol(),MODE_MARGINREQUIRED)<=AccountFreeMargin()) return(True);
else return (False);
}
//-------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void GetCloseOrder()
{
for (int i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == 0) bool Ans = OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrBlue);
if (OrderType() == 1) bool Ans = OrderClose(OrderTicket(), OrderLots(), Ask, 3, clrRed);
}
}
}
}
15 el12EL12 Сообщений: 84 - el12EL12
7 kostya010 Автор Сообщений: 46
35 AM2 Сообщений: 16430 - Андрей
вы в курсе принципа открытия в исходнике? он противоречит вашему. если сделать так как вы просите не откроет ни одной сделки.
вот я переписал исходник на свой лад:
вот работа исходника:
от этого кода уже можно плясать дальше. смотрите и описывайте подробно необходимые входы выходы.
к основе добавил мартин, контроль за числом поз, трал.
www.opentraders.ru/downloads/2401/
35 AM2 Сообщений: 16430 - Андрей
7 kostya010 Автор Сообщений: 46
7 kostya010 Автор Сообщений: 46
7 kostya010 Автор Сообщений: 46
бу и время добавил: www.opentraders.ru/downloads/2401/
35 AM2 Сообщений: 16430 - Андрей
7 kostya010 Автор Сообщений: 46
if(Open[0]<=Low[iLowest(NULL,0,MODE_LOW,Count,2)]-Delta*Point && Open[0]<Open[1]) PutOrder(1,Bid);
if(Open[0]>=High[iHighest(NULL,0,MODE_HIGH,Count,2)]+Delta*Point && Open[0]>Open[1]) PutOrder(0,Ask);
ТУТ АСК И БИД ИЗМЕН МЕСТАМИ И ЦИФРЫ
ПУНКТ 232 МЕСТА ОП БАЙ МЕНЯЛ ОП СЕЛ
ПУНКТ 241 МЕСТА ОП СЕЛ МЕНЯЛ ОП БЙ
МУВИНГИ ТАК ДЛЯ ОРИЕНТИРА ЕСЛИ ИГРАТСЯ КОДОМИ ЧТО ТО ПОЛУЧАЕТСЯ Редактирован: 30 августа 2019, 18:18
15 el12EL12 Сообщений: 84 - el12EL12
8 39mail Сообщений: 48 - fenix74
4 alexzh16 Сообщений: 59
7 kostya010 Автор Сообщений: 46
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий