Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Советник на основе двух мувингов.

Доброго времени суток!
Прошу автоматизировать мою торговую стратегию. Использую два стандартных мувинга с разными настройками.
Алгоритм торговли следующий. Для открытия ордера на buy — пример на скриншоте.
В верху медленный мувинг, ниже быстрый мувинг, еще ниже сама цена. Между ценой и медленным мувингом заданное в параметрах отклонение в пунктах. Между ценой и быстрым мувингом также заданное в параметрах отклонение в пунктах.Например, мы прописываем в параметрах отклонение между ценой и медленным мувингом 400, отклонение между ценой и быстрым мувингом 200. Это значит, что для открытия ордера на повышение отклонение цены от медленного мувинга должно быть не менее 400 пунктов, отклонение цены от быстрого мувинга не менее 200 пунктов. Если оба условия соблюдены, открывается ордер на buy.
Для открытия ордера на sell, условия зеркально противоположные. А именно, внизу медленный мувинг, выше быстрый мувинг, еще выше сама цена. Пример на скриншоте.
Если условия, заданные в параметрах соблюдены, открывается ордер на sell.

Параметры советника:
прописываются параметры обоих мувингов.
Минимальный лот для открытия ордера 0.01( по умолчанию ).
Отклонение цены от быстрого мувинга( по умолчанию 200 пунктов пятизнак).
Отклонение цены от медленного мувинга ( по умолчанию 400 пунктов пятизнак ).
Усреднение: расстояние между ордерами 100 пунктов пятизнак ( по умолчанию).
Тейк профит 100 пунктов пятизнак( по умолчанию ).
Коэффициент увеличение величины лота 1 ( по умолчанию)
Максимальное одновременно открытых ордеров на данной паре 5( по умолчанию)
Открытие ордера — соблюдение заданных в параметрах двух условий( отклонение цены от медленного мувинга не менее 400 пунктов, отклонение цены от быстрого мувинга не менее 200 пунктов).
Закрытие ордера — закрытие усредненных ордеров по заданному тейк профиту.
Если нет усредненных ордеров, закрытие ордера происходит при касании ценой медленного мувинга.
Должен быть magic.
Советник должен уметь торговать как на 4-х знаке, так и на 5-знаке.

Кажется все, ничего не забыл.
  • +1
  • Просмотров: 3358
  • 1 ноября 2019, 04:28
  • marattmb
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Небольшая доработка советника
Следующая запись в группе  
Советник на одной МА
31 октября 2019
01 ноября 2019

Брокер для ваших роботов, 15 лет на рынке

Комментарии (24)

+
0
входы показали, теперь покажите усреднение и выходы
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 1 ноября 2019, 18:00
+
0
Усреднение:
LotExponent=1
Default Pips = 100
Take Profit = 100
Max Trades = 5
Выход при отсутствии усреднения:

цена возвращается к медленному мувингу.
Редактирован: 1 ноября 2019, 18:21
avatar

  12  marattmb Автор Сообщений: 739

  • 1 ноября 2019, 18:20
+
0
на 8-е
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 1 ноября 2019, 18:55
+
0
Хорошо.
avatar

  12  marattmb Автор Сообщений: 739

  • 1 ноября 2019, 22:03
+
0
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 ноября 2019, 12:57
+
0
Спасибо.
avatar

  12  marattmb Автор Сообщений: 739

  • 2 ноября 2019, 13:01
+
0
Спасибо.
В параметрах МА1 — быстрый мувинг, МА2 — медленный мувинг?
avatar

  12  marattmb Автор Сообщений: 739

  • 2 ноября 2019, 13:58
+
0
да
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 2 ноября 2019, 14:09
+
0
*good* Результаты супер.
Редактирован: 2 ноября 2019, 14:05
avatar

  12  Slava78 Сообщений: 598

  • 2 ноября 2019, 13:59
+
0
УВАЖАЕМЫЙ АНДРЕЙ МОЖНО В ЭТУ СОВЕТНИКУ РЕВЕРС ДОБАВИТ СПАСИБО.
avatar

  15  el12EL12 Сообщений: 84 - el12EL12

  • 2 ноября 2019, 17:24
+
0
РЕВЕРС??? Интересно, для чего*fool* 
Редактирован: 3 ноября 2019, 11:26
avatar

  9  volondai Сообщений: 155

  • 3 ноября 2019, 11:25
+
0
все время против ветра не лучше ли по тренду
avatar

  15  el12EL12 Сообщений: 84 - el12EL12

  • 3 ноября 2019, 12:51
+
0
Скрины выложи, чтоб понятно было*???* 
avatar

  12  Slava78 Сообщений: 598

  • 3 ноября 2019, 13:11
+
0


МЕСТА БАЯ СЕЛ, МЕСТА СЕЛА БАЙ ПО ТРЕНДУ ВСЕГО ЛИШЬ МЕСТАМИ ПОМЕНЯТЬ
avatar

  15  el12EL12 Сообщений: 84 - el12EL12

  • 3 ноября 2019, 14:17
+
0
Caps умеете отключать?
avatar

  18  Boris54 Сообщений: 810 - ПенSионер

  • 4 ноября 2019, 06:17
+
0
НЕТ УВАЖАЕМЫЙ, ДОЛГО СМОТРЕЛ В КОД, НИЧЕГО НЕ ПОНЯЛ, ГДЕ И В КАКАОМ МЕСТЕ ОТКЛЮЧАТЬ.

//+------------------------------------------------------------------+
//| 2MA4.mq4 |
//| Copyright 2019, AM2 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright 2019, AM2»
#property link «www.forexsystems.biz»
#property version «1.00»
#property strict

//--- Inputs
extern double Lots = 0.1; // торговый объем ордера
extern double MaxLot = 5; // максимальный торговый объем
extern double KLot = 2; // увеличение лота
extern int StopLoss = 444; // лось
extern int TakeProfit = 333; // язь
extern int Delta1 = 100; // расстояние от быстрой МА
extern int Delta2 = 200; // расстояние от медленной МА
extern int Step = 200; // шаг усреднения
extern int Count = 5; // число поз
extern int Slip = 30; // реквот
extern int Shift = 1; // на каком баре сигнал индикатора
extern int Magic = 123; // магик
extern bool CloseSig = 1; // закрытие по сигналу

extern int MA1Period = 12; // период МА1
extern int MA2Period = 44; // период МА2

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=clrNONE;
double sl=0,tp=0;

if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0)
sl=NormalizeDouble(price+StopLoss*Point,Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price-TakeProfit*Point,Digits);
}

if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0)
sl=NormalizeDouble(price-StopLoss*Point,Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price+TakeProfit*Point,Digits);
}

r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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()<2)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int FindOrderType()
{
int oticket,ticketNumber=0,type=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
oticket=OrderTicket();
if(oticket>ticketNumber)
{
ticketNumber=oticket;
type=OrderType();
}
}
}
}
return(type);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double FindLastBuyPrice()
{
int oticket,ticketNumber=0;
double oprice=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==Magic)
{
oticket=OrderTicket();
if(oticket>ticketNumber)
{
ticketNumber=oticket;
oprice=OrderOpenPrice();
}
}
}
}
return(oprice);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double FindLastSellPrice()
{
int oticket,ticketNumber=0;
double oprice=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==Magic)
{
oticket=OrderTicket();
if(oticket>ticketNumber)
{
ticketNumber=oticket;
oprice=OrderOpenPrice();
}
}
}
}
return(oprice);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ModifyOrders()
{
double all=0,count=0,sl=0,tp=0;

for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()<2)
{
all+=OrderOpenPrice()*OrderLots();
count+=OrderLots();
}
}
}
}
if(count>0)
all=NormalizeDouble(all/count,Digits);

for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
tp=NormalizeDouble(all+TakeProfit*Point,Digits);
sl=NormalizeDouble(all-StopLoss*Point,Digits);
if(OrderTakeProfit()!=tp || OrderStopLoss()!=sl)
bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);

}
else
if(OrderType()==OP_SELL)
{
tp=NormalizeDouble(all-TakeProfit*Point,Digits);
sl=NormalizeDouble(all+StopLoss*Point,Digits);
if(OrderTakeProfit()!=tp || OrderStopLoss()!=sl)
bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Yellow);
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot()
{
double lot=Lots;
if(CountTrades()>0)
lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
if(lot>MaxLot)
lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
{
bool cl;

for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0 && (ot==0 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера |
//+------------------------------------------------------------------+
double AllProfit()
{
double pr=0;

for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0)
{
pr+=OrderProfit()+OrderCommission()+OrderSwap();
}

if(OrderType()==1)
{
pr+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(pr);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double ma1=iMA(NULL,0,MA1Period,0,0,0,Shift);
double ma2=iMA(NULL,0,MA2Period,0,0,0,Shift);

if(CloseSig)
{
if(Bid>ma2)
CloseAll(0);
if(Bid<ma2)
CloseAll(1);
}

// первый ордер
if(CountTrades()<1)
{
if(ma1-Ask>Delta1*_Point && ma2-Ask>Delta2*_Point)
{
PutOrder(0,Ask);
ModifyOrders();
}
if(Bid-ma1>Delta1*_Point && Bid-ma2>Delta2*_Point)
{
PutOrder(1,Bid);
ModifyOrders();
}
}

// усреднение
if(CountTrades()>0 && CountTrades()<Count)
{
if(FindOrderType()==0 && (FindLastBuyPrice()-Ask)/_Point>=Step)
{
PutOrder(0,Ask);
ModifyOrders();
}
if(FindOrderType()==1 && (Bid-FindLastSellPrice())/_Point>=Step)
{
PutOrder(1,Bid);
ModifyOrders();
}
}

Comment("\n Lot: ",Lot(),
"\n Trades: ",CountTrades(),
"\n Profit: ",AllProfit());
}
//+------------------------------------------------------------------+

avatar

  15  el12EL12 Сообщений: 84 - el12EL12

  • 4 ноября 2019, 07:10
+
0
Отключать тут :) 
avatar

  18  Boris54 Сообщений: 810 - ПенSионер

  • 4 ноября 2019, 07:18
+
0
А как этот Caps может влиять?*fool* 
avatar

  11  Kuzimich Сообщений: 246 - Андрей

  • 4 ноября 2019, 07:26
+
0
*wall* 
avatar

  15  el12EL12 Сообщений: 84 - el12EL12

  • 4 ноября 2019, 07:38
+
0
Я то про культуру общения, а не о программировании :) 
avatar

  18  Boris54 Сообщений: 810 - ПенSионер

  • 4 ноября 2019, 08:04
+
0
Я ИЗВИНЯЮСЬ КАКОЙ МОМЕНТ В ТЕСТЕРЕ НАЖИМАЮ БЕЗ ИЗМЕНЕНИЕ ЭТО КАК СТРАННО КАК ТО
avatar

  15  el12EL12 Сообщений: 84 - el12EL12

  • 4 ноября 2019, 07:34
+
0
Нашел этот zakaz.opentraders.ru/48535.html
avatar

  12  Slava78 Сообщений: 598

  • 3 ноября 2019, 21:05
+
0
НУ ВСЕ ТАКИ КТО НИ БУДЬ МОЖЕТ ПОМОЧЬ ВМЕСТО БАЯ СЕЛ, А ВМЕСТО СЕЛА БАЙ ПО ТРЕНДУ, ВСЕГО ЛИШЬ, МЕСТАМИ ПОМЕНЯТЬ
avatar

  15  el12EL12 Сообщений: 84 - el12EL12

  • 4 ноября 2019, 07:56
+
0
Научитесь пользоваться прописными буквами — может кто и обратит внимание.
Редактирован: 4 ноября 2019, 08:11
avatar

  18  Boris54 Сообщений: 810 - ПенSионер

  • 4 ноября 2019, 08:04

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий