Лента последних комментариев


0
Нет. Условия простые когда +DI > -DI на предредыдущем быре и +DI < -DI на текущем баре то покупка.
avatar

Kudryashov

  • 27 февраля 2020, 23:15
0
м-да, тут нужен хороший программист, чтобы найти эти условия.
avatar

IGOR1367

  • 27 февраля 2020, 23:05
0
Походу тоже… Но решение я вроде нашел...*wall* 
avatar

Kudryashov

  • 27 февраля 2020, 22:56
0
Блин… С мобилу неудобненько коды писать =.=
avatar

Kudryashov

  • 27 февраля 2020, 22:54
0
В вашем индикаторе реализована распространенная стратегия… По пересечению ADX



//+------------------------------------------------------------------+
//|                                            SixtySecondTrades.mq4 |
//|                              Copyright 2020, Dmitriy Kudryashov. |
//|                       https://www.mql5.com/ru/users/dlim0n4ik.dk |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Dmitriy Kudryashov."
#property link      "https://www.mql5.com/ru/users/dlim0n4ik.dk"
#property version   "200.226"
#property strict

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red


//+------------------------------------------------------------------+
//|   Блок вводимых параметров                                       |
//+------------------------------------------------------------------+
extern int ADXbars = 14;            //Период ADX
extern int CountBars = 350;         //Количество баров для отрисовки
extern string SoundFile="Alert.wav";//Файл звука оповещений (Alerts)
extern bool UseSound=true;          //Использовыать звуковое оповещения
bool SoundBuy = false;
bool SoundSell = false;
double up_buffer[];
double down_buffer[];
double adx_plusdi_1;
double adx_plusdi_0;
double adx_minusdi_1;
double adx_minusdi_0;
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|   Функция инициализации программы                                |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 108);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 108);
SetIndexBuffer(0, up_buffer);
SetIndexBuffer(1, down_buffer);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|   Функция деинициализации программы                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--------------------------------------------------------------------
//ObjectDelete("info_copyright");
//--------------------------------------------------------------------
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,       // Размер входных таймсерий
                const int prev_calculated,   // Обработано баров на предыдущем вызове
                const datetime &time[],      // Time
                const double &open[],        // Open
                const double &high[],        // High
                const double &low[],         // Low
                const double &close[],       // Close
                const long &tick_volume[],   // Tick volume
                const long &volume[],        // Real volume
                const int &spread[]          // Spread
                )
{
//
//string com;
//com += rates_total + "\n";
//com += prev_calculated + "\n";
//com += Bars + "\n";
//com += IndicatorCounted() + "\n";
//Comment(com);
//--------------------------------------------------------------------
//if(Bars <= 100)     // Проверим количества баров для расчётов
//   {
//   Print("There are not enough bars in history to calculate.");
//   return (rates_total);    
//   }
//--------------------------------------------------------------------
if (CountBars >= Bars) CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars);
SetIndexDrawBegin(1, Bars - CountBars);
//--------------------------------------------------------------------
int ExtCountedBars = IndicatorCounted();  // Получим количества уже посчитанных баров
if(ExtCountedBars < 0) return (-1);       // Проверим на возможные ошибки в подсчетах
//--------------------------------------------------------------------
if (ExtCountedBars < 1)
   {
   for (int clear_bars = 1; clear_bars <= CountBars; clear_bars++)
      {
      up_buffer[CountBars - clear_bars] = 0.0;
      down_buffer[CountBars - clear_bars] = 0.0;
      }
   //for (int clear_bars = 1; clear_bars <= CountBars; clear_bars++) down_buffer[CountBars - clear_bars] = 0.0;
   }
//--------------------------------------------------------------------
for (int index = CountBars; index >= 0; index--)
   {
   //--- Расчет индикатора ADX на текущем баре
   adx_plusdi_0 = iADX(Symbol(),PERIOD_CURRENT, ADXbars, PRICE_CLOSE, MODE_PLUSDI, index);
   adx_minusdi_0 = iADX(Symbol(),PERIOD_CURRENT, ADXbars, PRICE_CLOSE, MODE_MINUSDI, index);
   //--- Расчет индикатора ADX на предыдущем баре
   adx_plusdi_1 = iADX(Symbol(),PERIOD_CURRENT, ADXbars, PRICE_CLOSE, MODE_PLUSDI, index - 1);
   adx_minusdi_1 = iADX(Symbol(),PERIOD_CURRENT, ADXbars, PRICE_CLOSE, MODE_MINUSDI, index - 1);
   //--- Условие для стрелки вверх
   if (adx_plusdi_1 > adx_minusdi_1 && adx_plusdi_0 < adx_minusdi_0)
      {
      up_buffer[index] = Low[index] - 5.0 * Point; // Нарисуем стрелку вверх под ценой Low
      }
   //--- Условие для стрелки вниз
   if (adx_plusdi_1 < adx_minusdi_1 && adx_plusdi_0 > adx_minusdi_0)
      {
      down_buffer[index] = High[index] + 5.0 * Point; // Нарисуем стрелку вверх под ценой High
      }

avatar

Kudryashov

  • 27 февраля 2020, 22:50
0
Оптимизирован, но не расчитан для функции iCostom…
avatar

Kudryashov

  • 27 февраля 2020, 22:45
0
Но в стрелочных индикаторах есть условия по которым выставляются. Если вы знаете какое условия для выставления той или иной стрелки вы можете без всякого индикатора воплотить это условие в советнике.
avatar

Kudryashov

  • 27 февраля 2020, 22:42
0
а мой индикатор не оптимизированный?
avatar

IGOR1367

  • 27 февраля 2020, 22:41
0
в этом топике я узнал что советники по сигналам алерта не ловятся, а как по звуковым сигналам?
avatar

IGOR1367

  • 27 февраля 2020, 22:38
0
Пример не нащел(  так что придется словами…
Если у вас есть индикатор оптимизированый… Вы можете его вогнать в советник через функцию iCustom… Она берет данные из буферов вашего индикатора и передает их советнику для анализа… Однако, это хорошо подходит для индикаторов которые строят графики, а для стрелочного индикаторов она… Скажем так: не очень подходит.
avatar

Kudryashov

  • 27 февраля 2020, 22:37
0
По буферам пишутся только советники по индикаторам.
avatar

Kudryashov

  • 27 февраля 2020, 22:27
0
ну как интересно? это я такой болтливый! взял бы идею подал, может быть что исправить надо.
avatar

IGOR1367

  • 27 февраля 2020, 21:31
0
Спасибо, огромное) В идеале ( по торговой системе ) фрактальная свеча не должна касаться ни телом ни тенью линий аллигатора. Но как показывает практика это условие не обязательно.
avatar

sdanef

  • 27 февраля 2020, 21:09
0
совсем не знаю, я даже не знал что советники пишутся только по буферам и не писал бы здесь только глупостей.
avatar

IGOR1367

  • 27 февраля 2020, 20:32
0
Тем более интересно! Кстати, буду благодарен за ссылочку в личку на ресурс, где оные продаются.
Если, конечно, это не на заказ писано.
avatar

ShamanHand

  • 27 февраля 2020, 20:15
0
Даже не знаю что нарисовать. Скажи, график нужен?
Как бы мне нужен вызов глобальной функции и потом её использование простой пример.
Спасибо
avatar

axe44

  • 27 февраля 2020, 20:07
0
Цена открытия автоматически смещается на уровень последнего закрытия, поэтому при закрытии в графе размер лота достаточно написать МатМин (ОрдерЛот(), уст. размер закрытия)
avatar

axe44

  • 27 февраля 2020, 20:04
0
сегодня еще буду смотреть т.к. заказов не много
avatar

AM2

  • 27 февраля 2020, 19:12
0
на 28-е
avatar

AM2

  • 27 февраля 2020, 19:10