Как начать работу с MQL5 - страница 9

 
Vladimir Karputov:

Является ли heiken ashi индикатором? Где находится ссылка на индикатор?

Он встроен в mt5 в разделе пользовательских индикаторов, у меня проблемы с вызовом его в советнике и доступом к его значениям
 
GeorgeReji :
он встроен в mt5 в разделе пользовательских индикаторов, у меня проблемы с вызовом его в советнике и доступом к его значениям

Пример: получить данные индикатора "Simple Heiken_Ashi.mq5"

Код: Simple Heiken_Ashi.mq5

//+------------------------------------------------------------------+
//|                                           Simple Heiken_Ashi.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.025
*/
int    handle_iCustom;              // variable for storing the handle of the iCustom indicator 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Period(),"Examples\\Heiken_Ashi");
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double heiken_ashi_open[],heiken_ashi_high[],heiken_ashi_low[],heiken_ashi_close[];
   ArraySetAsSeries(heiken_ashi_open,true);
   ArraySetAsSeries(heiken_ashi_high,true);
   ArraySetAsSeries(heiken_ashi_low,true);
   ArraySetAsSeries(heiken_ashi_close,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,0,start_pos,count,heiken_ashi_open) || 
      !iGetArray(handle_iCustom,1,start_pos,count,heiken_ashi_high) || 
      !iGetArray(handle_iCustom,2,start_pos,count,heiken_ashi_low) || 
      !iGetArray(handle_iCustom,3,start_pos,count,heiken_ashi_close))
     {
      return;
     }
   Comment(DoubleToString(heiken_ashi_open[0],Digits()),"\n",
           DoubleToString(heiken_ashi_high[0],Digits()),"\n",
           DoubleToString(heiken_ashi_low[0],Digits()),"\n",
           DoubleToString(heiken_ashi_close[0],Digits()));
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- 

  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray(const int handle,const int buffer,const int start_pos,
                 const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+
Файлы:
 
Vladimir Karputov:

Пример: получить данные индикатора "Simple Heiken_Ashi.mq5"

Код: Simple Heiken_Ashi.mq5

Спасибо за быстрые ответы и за то, что всегда находите решения.
 
Я хочу использовать пользовательский шаблон с ChartOpen(), но я не понимаю, как это сделать, он открывает только шаблон по умолчанию при использовании функции ChartOpen, пожалуйста, помогите
 
Ahmad861 :
Я хочу использовать пользовательский шаблон с ChartOpen(), но не понимаю как это сделать, при использовании функции ChartOpen открывается только шаблон по умолчанию, помогите пожалуйста

Алгоритм: выдать команду 'ChartOpen' -> проверить значение, если значение больше '0' -> попробовать шаблон с помощью команды 'ChartApplyTemplate'.

Код: ChartOpen ChartApplyTemplate.mq5

//+------------------------------------------------------------------+
//|                                 ChartOpen ChartApplyTemplate.mq5 |
//|                              Copyright © 2020, Vladimir Karputov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Vladimir Karputov"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input string            InpSymbol   = "EURUSD";          // Chart Symbol name
input ENUM_TIMEFRAMES   Inp_period  = PERIOD_D1;         // Chart TimeFrame
input string            InpTemplate = "my_template.tpl"; // Template name
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long chart_ID=ChartOpen(InpSymbol,Inp_period);
   if(chart_ID>0)
      ChartApplyTemplate(chart_ID,InpTemplate);
  }
//+------------------------------------------------------------------+
 
Можете ли вы помочь мне, как работает логика бычьих и медвежьих свечных паттернов "вращающаяся вершина"?
 
GeorgeReji :
Подскажите, пожалуйста, как работает логика бычьей и медвежьей свечной модели "вращающаяся вершина"?

Уточните (нарисуйте картинку) ваш вопрос.

 
Vladimir Karputov:

Уточните (нарисуйте картинку) свой вопрос.

Я приложил изображение свечного паттерна
Файлы:
 
GeorgeReji :
Я приложил картинку свечного паттерна.

В какой программе вы хотите определить тип свечи: в индикаторе или в эксперте?

 
Vladimir Karputov:

В какой программе вы хотите определить тип свечи: в индикаторе или в эксперте?

Эксперт