Comment j'ai assemblé mon conseiller par essais et erreurs - page 50

 
Alexsandr San:

Ajout de cette fonctionnalité à l'Utilitaire ("Utility Command") #property version "1.004"

en bas, les paramètres de cette fonction

nom de la ligne de tendance ou de la ligne horizontale - pour installer l'indicateur

nom de l'indicateur - l'indicateur que vous voulez installer sur le graphique

nom de la ligne horizontale ou de tendance de l'Indicateur

-------------------------- le principe du travail, devrait être le suivant

----------------------- L'indicateur déplacera la ligne horizontale (bleue) - s'il la franchit, il s'ouvrira en VENTE et supprimera l'indicateur et fixera une ligne jaune, qui sera reprise par un autre indicateur et déplacera la ligne jusqu'au niveau violet de l'indicateur - après, la ligne horizontale jaune, fixera à nouveau l'indicateur


La fonction fonctionne parfaitement - l'utilité, très, pas mal tourné .

Cependant, il est nécessaire d'ajouter à cette fonction, un réglage supplémentaire, qui permettra de fixer l'indicateur, par le nombre de points de la position ouverte.

Photo par

 
Alexsandr San:

Ajout de cette fonctionnalité à l'Utilitaire ("Utility Command") #property version "1.004"

en bas, les paramètres de cette fonction

nom de la ligne de tendance ou de la ligne horizontale - pour installer l'indicateur

nom de l'indicateur - l'indicateur que vous voulez installer sur le graphique

nom de la ligne horizontale ou de tendance de l'Indicateur

-------------------------- le principe du travail, devrait être le suivant

----------------------- L'indicateur déplacera la ligne horizontale (bleue) - si elle est franchie, il s'ouvrira en VENTE et supprimera l'indicateur et fixera la ligne jaune, qui sera reprise par un autre indicateur et déplacera la ligne jusqu'au niveau de l'indicateur violet - après, la ligne horizontale jaune, fixera à nouveau l'indicateur.


corrections mineures dans le code, dans//| Fonction pour vérifier et ajouter un indicateur au graphique |

#propriété version "1.005"

//+------------------------------------------------------------------+
//| Функция проверки и добавления индикатора на график               |
//+------------------------------------------------------------------+
bool AddIndicator()
  {
//--- выводимое сообщение
   string message;
//--- проверим на совпадение символ индикатора и символ графика
   if(_Symbol!=_Symbol)
     {
      message="Демонстрация использования функции Demo_ChartIndicatorAdd():";
      message=message+"\r\n";
      message=message+"Нельзя на график добавить индикатор, рассчитанный на другом символе.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта символ графика - "+_Symbol+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- проверим на совпадение таймфрейм индикатора и таймфрейм графика
   if(_Period!=_Period)
     {
      message="Нельзя на график добавить индикатор, рассчитанный на другом таймфрейме.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта таймфрейм графика - "+EnumToString(_Period)+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- все проверки прошли, символ и период индикатора соответствуют графику
   if(indicator_handle==INVALID_HANDLE)
     {
      Print(__FUNCTION__,"  Создаем индикатор");
      indicator_handle=iCustom(_Symbol,_Period,Inpshort_name);
      if(indicator_handle==INVALID_HANDLE)
        {
         Print("Не удалось создать индикатор. Код ошибки ",GetLastError());
        }
     }
//--- сбросим код ошибки
   ResetLastError();
//--- накладываем индикатор на график
   Print(__FUNCTION__,"  Добавляем индикатор на график");
   Print("Индикатор построен на ",_Symbol,"/",EnumToString(_Period));
//--- получим номер нового подокна, в которое добавим индикатор
   int subwindow=(int)ChartGetInteger(0,-1);
   PrintFormat("Добавляем индикатор на окно %d графика",subwindow);
   if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
     {
      PrintFormat("Не удалось добавить индикатор на окно %d графика. Код ошибки  %d",
                  subwindow,GetLastError());
     }
//--- добавление индикатора на график прошло успешно
   return(true);
  }
//+------------------------------------------------------------------+
Dossiers :
 
Alexsandr San:

corrections mineures dans le code, dans//| Fonction pour vérifier et ajouter l'indicateur au graphique |

#propriété version "1.005"

J'ai légèrement modifié le code

#propriété version "1.006"

input string   t1="----- Trailing Line: 2   -----";              //
input string   InpObjUpNameG                = "POT";             // Obj: TOP (Horizontal Line)
input int      InpStep3                     = 0;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommandG   = close_open_b;      // Obj:  command:
input string   InpObjDownNameG              = "REWOL";           // Obj: LOWER (Horizontal Line)
input int      InpStep4                     = 0;                 // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommandG    = close_open_s;      // Obj:  command:
input ushort   InpObjTrailingStopG          = 0;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStepG          = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   t9="------ ChartIndicatorAdd -----";              //
input bool     InpChartInd                  = false;             // Avto Line Chart Indicators
input string   InpIndiL                     = "AVERAGE 0";       // Line name (ChartIndicatorAdd)
input int      InpStep5                     = 15;                // Obj: Шаг сетки, пунктов("0" -> false)
input string   InpIndi_name                 = "Indicator";       // INDICATOR_SHORTNAME

à partir de"AVERAGE 0"; définira la ligne horizontale "POT"; et "REWOL"; à la distance spécifiée =0;// Obj : Pas de la grille, pips("0" -> false)

if set =true( = false ; // Avto Line Chart Indicators ) sera répété à la distance donnée de la ligne "AVERAGE 0";

Dossiers :
 

Toute la journée et toute la nuit - mais j'ai eu ce que je voulais Merci ! Merci beaucoup ! !! VladimirKarputov

un signal à la fois ! !! Voici une fonction

input string   t="-----  Parameters         -----";              //
input datetime InpMonday_1                  = D'1980.07.19 10:00:00'; // Monday time 1 (use only HH::MM) (00::00 -> off)
//+------------------------------------------------------------------+
long     m_monday_1= 0;

int OnInit()
  {
//---
   MqlDateTime STime;
//--- Monday
   TimeToStruct(InpMonday_1,STime);
   m_monday_1=STime.hour*60*60+STime.min*60;
//---
   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
      TimeSession();

  }


//+------------------------------------------------------------------+
//| Search trading signals                                                                 |
//+------------------------------------------------------------------+
bool TimeSession()
  {
   bool res=false;
//---
   MqlDateTime STimeCurrent;
   TimeToStruct(TimeCurrent(),STimeCurrent);
   long time_current=STimeCurrent.hour*60*60+STimeCurrent.min*60+STimeCurrent.sec;
   if(m_monday_1==0)
      return(true);
//--- Monday time 1
   if(m_monday_1!=0 && (time_current>=m_monday_1 && time_current<m_monday_1+60))
     {
      datetime last_setup=0;
      MqlDateTime SLastSetup;
      TimeToStruct(last_setup,SLastSetup);
      long time_last_setup=SLastSetup.hour*60*60+SLastSetup.min*60+SLastSetup.sec;
      if(SLastSetup.day_of_week==1 && (time_last_setup>=m_monday_1 && time_last_setup<m_monday_1+60))
         return(true);
      if(1>0)
        {
         Sleep(59*1000);
         PlaySound("tick.wav");
        }
      res=true;
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+
Vladimir Karputov
Vladimir Karputov
  • www.mql5.com
Люди. Граждане! Огромная просьба - заполняйте свой профиль на сайте и пользуйтесь стандартными программами - устанавливайте Skype. У Skype есть очень полезная функция - показ рабочего стола. В таком случае можно оперативно подсказать по возникшей проблеме. Помните - время - деньги! Древняя народная мудрость гласит: если хочешь помочь...
 
Alexsandr San:

j'ai modifié le code un peu

#propriété version "1.006"

de"AVERAGE 0"; exposera les lignes horizontales "POT"; et "REWOL"; à une distance donnée = 0;// Obj : Grid Step, pips("0" -> false)

if set =true( = false ; // Avto Line Chart Indicators ) sera répété à la distance définie de la ligne "AVERAGE 0 " ;

#property version "1.007"
Ajouté - par le temps, définir l'indicateur, les lignes horizontales, qui sont fixés à quelle distance, du prix.

ainsi que pour le temps, fermer toutes les positions et supprimer le conseiller expert et changer les graphiques ou simplement, sans supprimer les positions ouvertes, supprimer le conseiller expert et changer le modèle de graphique .

Voici ses paramètres

//+------------------------------------------------------------------+
input string   t="-----  Parameters         -----";              //
input string   Template                     = "ADX";             // Имя шаблона(without '.tpl')
input bool     Inpwithout                   = false;             // Сменить только шаблон (true)
input datetime InpMonday_2                  = D'1970.01.01';     // Dell (00::00 -> off)
input double   TargetProfit                 = 999999.99;         // Цель Баланса(Ваш Баланс + сумма)
input uint     maxLimits                    = 1;                 // Кол-во Позиции Открыть в одну сторону
input double   InpLots                      = 0.01;              // Lots
input int      InpTakeProfit                = 90;                // Take Profit ("0"-No. 5<100)
input string   t0="----- Trailing Line: 1   -----";              //
input string   InpObjUpName                 = "ZTOP";            // Obj: TOP (Horizontal Line)
input int      InpStep1                     = 25;                // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommand    = open_sell;         // Obj:  command:
input string   InpObjDownName               = "ZLOWER";          // Obj: LOWER (Horizontal Line)
input int      InpStep2                     = 25;                // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommand     = open_buy;          // Obj:  command:
input ushort   InpObjTrailingStop           = 0;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStep           = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   t2="----- Indicators: SELL   -----";              //
input string   short_name                   = "LeMan_BrainTrend1Sig";   // Name Indicators "SELL"
input bool     InpIndicators                = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_sell;         // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_sells;       // Trade command: (SellBuffer Indicators)
input string   t3="----- Indicators: BUY    -----";              //
input string   short_name1                  = "LeMan_BrainTrend1Sig";   // Name Indicators "BUY"
input bool     InpIndicators1               = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = close_buys;        // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_buy;          // Trade command: (SellBuffer Indicators)
input string   t4="----- Button:            -----";              //
input ENUM_TRADE_COMMAND InpTradeCommandBut = open_buy;          // Obj(BUY):  command:Button: BUY
input ENUM_TRADE_COMMAND InTradeCommandBut  = open_sell;         // Obj(SELL):  command:Button: SELL
input int      TrailingStop_STOP_LEVEL      = 36;                // Button: Trailing Stop LEVEL
input string   t5="----- Line name: 1       -----";              //
input string   InpNameR                     = "LineR";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = open_buy;          // Trade command:
input string   t6="----- Line name: 2       -----";              //
input string   InpNameS                     = "LineS";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = open_sell;         // Trade command:
input string   t7="----- Revers Buy><Sell   -----";              //
input bool     ObjRevers                    = false;             //  Revers
input string   t8="------ Indicator Delete  -----";              //
input string   Inpshort_name_1              = "Indicator 2";     // INDICATOR_SHORTNAME 2
input bool     Inpres                       = false;             // Delete All Indicators
input string   t1="----- Trailing Line: 2   -----";              //
input string   InpObjUpNameG                = "POT";             // Obj: TOP (Horizontal Line)
input int      InpStep3                     = 20;                // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InpTradeCommandG   = close_open_b;      // Obj:  command:
input string   InpObjDownNameG              = "REWOL";           // Obj: LOWER (Horizontal Line)
input int      InpStep4                     = 20;                // Obj: Шаг сетки, пунктов("0" -> false)
input ENUM_TRADE_COMMAND InTradeCommandG    = close_open_s;      // Obj:  command:
input ushort   InpObjTrailingStopG          = 0;                 // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStepG          = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   t9="------ ChartIndicatorAdd -----";              //
input bool     InpChartInd                  = false;             // Avto Line Chart Indicators
input string   InpIndiL                     = "AVERAGE 0";       // Line name (ChartIndicatorAdd)
input int      InpStep5                     = 15;                // Obj: Шаг сетки, пунктов("0" -> false)
input string   InpIndi_name                 = "Indicator";       // INDICATOR_SHORTNAME
input datetime InpMonday_1                  = D'1970.01.01';     // Indicators(use only HH::MM)(00::00->off)
//+------------------------------------------------------------------+
Dossiers :
 

L'indicateur donne une alerte - à partir de la ligne bleue horizontale, nous en dessinons une en haut, une autre en bas et lorsque la ligne bleue se croise, il déclenche une alerte et supprime la ligne.

- Je vais ajouter, cette fonction dansUtility_Command.mq5225 kb

Photo par

Dossiers :
macd_Line.mq5  21 kb
 

Il n'est pas facile de faire fonctionner les lignes horizontales dans la fenêtre de l'indicateur.

mais j'ai en quelque sorte trouvé une solution. Voici une ébauche. À partir de la ligne null macd (la ligne inférieure VENDRE casse la ligne supérieure ACHETER)

Photo par

Instantané2

-------------------------

Projet d'expert et d'indicateur

Dossiers :
 
Alexsandr San:

Il n'est pas facile de faire fonctionner les lignes horizontales dans la fenêtre de l'indicateur.

mais j'ai en quelque sorte trouvé une solution. Voici une ébauche. À partir de la ligne macd zéro (la ligne inférieure VENDRE casse la ligne supérieure ACHETER)

-------------------------

un projet d'expert et d'indicateur

En fait, le conseiller expert fonctionne dans la fenêtre des indicateurs - si la ligne LOW est horizontale, entre les lignes BUY et SELL, il n'ouvre pas de position, mais dès qu'elle dépasse la ligne BUY, il ouvre une position.

inversement, en dessous de laligne de VENTE, il ouvre une position devente.

AUDCADM1

 
Alexsandr San:

L'indicateur donne une alerte - à partir de la ligne bleue horizontale, nous en dessinons une en haut, une autre en bas et lorsque la ligne bleue se croise, il déclenche une alerte et supprime la ligne.

- Je vais ajouter, cette fonction dansUtility_Command.mq5225 kb

J'ai ajouté cette fonction - elle est très simple, mais j'ai seulement trouvé comment l'implémenter

#propriété version "1.008"

AUDCADM1V 1

AUDCADM1B 2

Photo par 3


Je joins un indicateur pour cette fonction

Dossiers :
 

Oui ! Vous devriez également ajouter ceci à l'Utilitairehttps://www.mql5.com/ru/code/23939.


OBJ_HLINE follows price
OBJ_HLINE follows price
  • www.mql5.com
GannZIGZAG_Fibo_Grand_xN_Din Зигзаг Ганна с графическим объектом "Уровни Фибоначчи", построенными на двух, последних вершинах с расширенными настройками для отображения фибо-уровней. XKPrmSt_NRTR_HTF