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

Рейтинг 2087



РЕКОМЕНДУЮ



Заменить индикатор в рабочем советнике.

Здравствуйте, Андрей!
1. По возможности, прошу заменить индикатор TrendWave в Вашем советнике «Усреднитель на индикаторе TrendWave» www.opentraders.ru/downloads/3286/ на индикатор ma_bbands.

Красные стрелки — сигнал на продажу. Синие — на покупку.

2. В советник прописать настройки индикатора:
MoveShift 12
MAPeriod 9
OsMA 3
Dist2 20
Std 0.4
ВPeriod 20

Наполнение советника оставить прежним, Но:
3. по обратному сигналу индикатора, добавить возможность закрытия ордеров предыдущего направления.
4. В случае закрытия ордера (серии ордеров) по тейк профиту (тралу) и наличии прежнего сигнала индикатора – тут же, не дожидаясь закрытия бара, снова открыть ордер в этом направлении до закрытия по Тейк профиту или при смене сигнала на противоположный.

ma_bbands.mq4 (8 Kb)
  • 0
  • Просмотров: 1776
  • 5 июля 2022, 10:55
  • Felice
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Доработка советника.
Следующая запись в группе  
Доработка индюка спустя 3 года
04 июля 2022
05 июля 2022

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

+
0
посмотрю сегодня
avatar

  34  AM2 Сообщений: 15878 - Андрей

  • 5 июля 2022, 17:30
+
0
… Спасибо, Андрей!
avatar

  10  Felice Автор Сообщений: 43

  • 5 июля 2022, 18:10
+
0
avatar

  34  AM2 Сообщений: 15878 - Андрей

  • 5 июля 2022, 20:05
+
0
… Огромное Спасибо, Андрей! Иду настраивать.
avatar

  10  Felice Автор Сообщений: 43

  • 5 июля 2022, 20:46
комментарий был удален 2022-07-06 22:56:34 Felice

комментарий был удален 2022-07-06 23:11:04 Felice

+
0
Андрей, в тестере такой результат: стрелки есть, но ордера не всегда выставляются.
За сегодня на демо на Н1 не открыл ни одного ордера. Хотя в тестере из четырёх сигналов всё же один ордер бай выставился. EUR-USD
Прошу помощи!

Редактирован: 6 июля 2022, 23:16
avatar

  10  Felice Автор Сообщений: 43

  • 6 июля 2022, 23:12
+
0
… Андрей, возможно ли подправить советник, чтобы реагировал на каждый сигнал? Без пропусков. :) 
avatar

  10  Felice Автор Сообщений: 43

  • 8 июля 2022, 16:19
+
0
возможно ли подправить советник, чтобы реагировал на каждый сигнал? Без пропусков


советник это машина, если есть сигнал от индикатора, есть сделка
avatar

  34  AM2 Сообщений: 15878 - Андрей

  • 8 июля 2022, 16:42
+
0


… Вчера пропущенные сигналы на селл. сегодня пропущен сигнал на бай…
avatar

  10  Felice Автор Сообщений: 43

  • 8 июля 2022, 17:00
+
0
он стрелку дорисовывает после, вот и нет ордера
avatar

  8  vadimltd Сообщений: 192 - Вадим

  • 8 июля 2022, 19:30
+
0
… и возможно ли разрешить советнику открывать ордер даже если сигнал появился спустя какое-то время?

avatar

  10  Felice Автор Сообщений: 43

  • 8 июля 2022, 20:24
+
0
… на Вашем скрине, также видим не выставленные по сигналу индикатора ордера:

avatar

  10  Felice Автор Сообщений: 43

  • 8 июля 2022, 17:11
+
0
… понял. Спасибо, Андрей!
Пожалуйста, добавьте вариант расчёта лота в % от депозита (Risk).
avatar

  10  Felice Автор Сообщений: 43

  • 8 июля 2022, 20:10
+
0
Андрей, добавьте, пожалуйста к имеющемуся постоянному лоту альтернативный вариант расчёта лота в % от депозита.
Ранее озвученное выставление ордеров по запоздалым сигналам не делайте.
avatar

  10  Felice Автор Сообщений: 43

  • 10 июля 2022, 21:15
+
0
… Андрей, вариант расчёта лота в % от депозита. Никак?..
avatar

  10  Felice Автор Сообщений: 43

  • 13 июля 2022, 18:39
+
0
Из zakaz.opentraders.ru/85564.html#comment163827
<code>
//--- Inputs
extern double Lots       = 0.1;      // торговый объем ордера
extern double Risk       = 1;        // риск
.
.
.
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;
   datetime expiration=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,Comm,Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(Risk>0)
      lot=NormalizeDouble(AccountEquity()*Risk/100000,2);

   return(lot);
  }
//+------------------------------------------------------------------+
</code>

Редактирован: 13 июля 2022, 19:07
avatar

  16  ssg Сообщений: 817

  • 13 июля 2022, 19:06
+
0
… где-то не правильно вставляю. Прошу помощи!
//--- Inputs
extern double Lots = 0.1; // лот
extern double Risk = 1; // риск
.
.
.
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
datetime expiration=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,Comm,Magic,0,clr);
return;
}
double Lot()
{
double lot=Lots;

if(Risk>0)
lot=NormalizeDouble(AccountEquity()*Risk/100000,2);

return(lot);
}
//+------------------------------------------------------------------+
avatar

  10  Felice Автор Сообщений: 43

  • 13 июля 2022, 20:47
+
0
Сначала покажите что и куда «вставляете»…
avatar

  16  ssg Сообщений: 817

  • 13 июля 2022, 20:59
+
0
SSG, вот так у меня:
//+------------------------------------------------------------------+
//| MABands.mq4 |
//| Copyright 2022, AM2 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright 2022, AM2»
#property link «www.forexsystems.biz»
#property version «1.00»
#property strict

//--- Inputs
extern double Lots = 0.1; // лот
extern double Risk = 1; // риск
extern double KLot = 2; // умножение лота
extern double MaxLot = 5; // максимальный лот

extern int StopLoss = 2000; // лось
extern int TakeProfit = 3000; // язь
extern int Profit = 30; // язь в валюте
extern int BuyProfit = 30; // язь в валюте на бай
extern int SellProfit = 30; // язь в валюте на селл

extern int BULevel = 0; // уровень БУ
extern int BU_Point = 30; // пункты БУ
extern int TrailingStop = 0; // трал

extern int StartHour = 0; // час начала торговли
extern int StartMin = 30; // минута начала торговли
extern int EndHour = 23; // час окончания торговли
extern int EndMin = 30; // минута окончания торговли

extern int CloseSig = 1; // закрытие по сигналу
extern int Shift = 1; // бар индикатора
extern int Slip = 30; // проскальзывание цены
extern int Reverce = 0; // 1-реверс
extern int Magic = 123; // магик

extern string IndName = «ma_bbands»;
extern int MoveShift = 12;
extern int MAPeriod = 9;
extern int OsMA = 3;
extern int Dist2 = 20;
extern double Std = 0.4; //0.5
extern int BPeriod = 20;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
if(!IsTradeAllowed())
Alert(«Для нормальной работы советника необходимо\n»+
«Разрешить советнику торговать»);

if(!IsLibrariesAllowed())
Alert(«Для нормальной работы советника необходимо\n»+
«Разрешить импорт из внешних библиотек»);

if(!IsExpertEnabled())
Alert(«Отжата кнопка \»Разрешить запуск советников\"");

Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
datetime expiration=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,Comm,Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot()
{
double lot=Lots;

if(Risk>0)
lot=NormalizeDouble(AccountEquity()*Risk/100000,2);

return(lot);
}
//+------------------------------------------------------------------+
avatar

  10  Felice Автор Сообщений: 43

  • 13 июля 2022, 20:59
+
0
… дальше остальной код…
avatar

  10  Felice Автор Сообщений: 43

  • 13 июля 2022, 21:00
+
0
И что не так?
avatar

  16  ssg Сообщений: 817

  • 13 июля 2022, 21:10
+
0
в 103 строке видит ошибку:
avatar

  10  Felice Автор Сообщений: 43

  • 13 июля 2022, 21:47
+
0
Ну ребята, включайте сами мозги.
Есть ошибка-переведите текст-устраните причину.
В данном случае: советник нашёл не объявленный параметр -Comm.
Это значит, что в коде есть что-то, что редактор не знает что это такое, не может его ни с чем сопоставить, сравнить.
Не знаете если что это такое — посмотрите структуру функции OrderSend(...) лучше в учебнике или хотя бы в другом советнике, что это за параметр.
В структуре этой функции на этом месте стоит параметр — комментарии ордера.
Этот параметр можно записать как:
— просто не заполненные "",
— заполненные «бла-бла»,
— просто объявленным заранее текстом например:
extern string Comm = «Felice »;// коммент
Выбирайте любой из вариантов.
Уверен, что всё это вы знаете.Просто поторопились расписаться в беспомощности из-за не внимательности.
avatar

  16  ssg Сообщений: 817

  • 14 июля 2022, 04:20

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