Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 857

 

Здравствуйте! Вопрос в коде. Это событие появляется на каждом новом баре раб. ТФ - так и должно быть или ошибка в коде?

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ResetLastError();   
   datetime Arr[];
   if(CopyTime(NULL,PERIOD_M5,10,1,Arr)<=0) 
   {
      int error=GetLastError();
      Print("Ошибка 4401 возникает на новом баре раб.ТФ, который должен быть ниже М5 в данном случае ",error);
      Print("Почему запрошенная история не найдена ведь я обращаюсь всего лишь к 10-му бару старшего ТФ М5");
      return(0);
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
novichok2018:

Есть ещё у Игоря Кима функция bool ExistPositions() возвращающая флаг существования позиции, для меня сложновата в адаптации к конкретным моим условиям. Но и она по-моему не будет тестироваться в истории.

Если ни у кого нет проверенного на реале кода, чтобы показать, тогда буду пробовать научным тыком. Спасибо.

Опять моих знаний не хватает! Простая замена в iOpen(NULL,0,0)   NULL на EURUSD выдает ошибки undeclared identifier и implicit conversion from 'number' to 'string'. То же самое и при замене Symbol() в OrderSend(Symbol(),OP_BUY,LOT,Ask,slippage,0,TP,"",magic,0,Blue);  Как исправить?

 
novichok2018:

Опять моих знаний не хватает! Простая замена в iOpen(NULL,0,0)   NULL на EURUSD выдает ошибки undeclared identifier и implicit conversion from 'number' to 'string'. То же самое и при замене Symbol() в OrderSend(Symbol(),OP_BUY,LOT,Ask,slippage,0,TP,"",magic,0,Blue);  Как исправить?

Кавычки не забыли поставить?

 
novichok2018:

Да, я как-то так себе и представлял, но не могу проверить сработку на истории, ведь открытие позиции на евро должно произойти по условию для фунта и не отражается в коде для евро, а история-то изображается по евро. Отсюда неуверенность в правильности решения.

Тогда придётся учить MQL5 и тестировать мультивалютный вариант.

 
Alexey Viktorov:

Тогда придётся учить MQL5 и тестировать мультивалютный вариант.

О, нет, спасибо! Не ставлю перед собой задачи изучить досконально МКЛ4 или МКЛ5. Моя цель - написание ДЛЯ СЕБЯ простейших экспертов, работающих в плюс в 95% открываемых позиций, а повисший минус чтобы не сливал весь баланс раньше, чем я приму решение закрыть позицию в убыток. Несколько таких роботов работают на демо, но каждый раз возникают новые идеи, которые хочется тут же проверить. А так как придерживаюсь мнения, что чем проще код, тем лучше, то и влезать в дебри языка не очень-то хочется. Во всяком случае, пока! Доскональное изучение языка оправдано только с целью заработка в написании экспертов под заказ, ИМХО.

За  кавычки спасибо. Еще не пробовал, чуть позже.

 
novichok2018:

....... Моя цель - написание ДЛЯ СЕБЯ простейших экспертов, работающих в плюс в 95% открываемых позиций, а повисший минус чтобы не сливал весь баланс до тех пор, пока я не приму решение закрыть позицию в убыток. .....

Вы описали мечту 95% трейдеров всего мира. Но при этом не хотите заморачиваться даже с правописанием и синтаксисом языка. Завидная самоуверенность, мне бы такую. ИМХО конечно.

 
novichok2018:

О, нет, спасибо! Не ставлю перед собой задачи изучить досконально МКЛ4 или МКЛ5. Моя цель - написание ДЛЯ СЕБЯ простейших экспертов, работающих в плюс в 95% открываемых позиций, а повисший минус чтобы не сливал весь баланс раньше, чем я приму решение закрыть позицию в убыток. Несколько таких роботов работают на демо, но каждый раз возникают новые идеи, которые хочется тут же проверить. А так как придерживаюсь мнения, что чем проще код, тем лучше, то и влезать в дебри языка не очень-то хочется. Во всяком случае, пока! Доскональное изучение языка оправдано только с целью заработка в написании экспертов под заказ, ИМХО.

За  кавычки спасибо. Еще не пробовал, чуть позже.

MQL5 нисколько не сложнее MQL4. А в некоторых случаях даже проще и быстрей работает. ООП это только страшилка для начинающих. Для написания простого советника, о котором вы говорите, совсем не обязательно разбираться в ООП.

Вот скажите на сколько сложней написать

// MQL4

OrderSend(_Symbol, OP_BUY, lot, price, Slip, sl, tp, "", Magic);
// MQL5

#include <Trade\\Trade.mqh>
CTrade trade;

trade.Buy(lot);
 
Sergey Voytsekhovsky:

Вы описали мечту 95% трейдеров всего мира. Но при этом не хотите заморачиваться даже с правописанием и синтаксисом языка. Завидная самоуверенность, мне бы такую. ИМХО конечно.

Не понял, что вы имеете в виду под "правописанием", но это и не важно, т.к. мои роботы всё-таки работают, причем именно так, как я описал.

 
Alexey Viktorov:

MQL5 нисколько не сложнее MQL4. А в некоторых случаях даже проще и быстрей работает. ООП это только страшилка для начинающих. Для написания простого советника, о котором вы говорите, совсем не обязательно разбираться в ООП.

Вот скажите на сколько сложней написать

УЖАС! Вы меня убили. Ничего не понял, хотя чисто механически написать второй вариант нисколько не сложней )).

 

Здравствуйте, сколько времени будет еще существовать МТ4 ? год-два?

Извините за вопрос,он немного не по теме (но очень важен для меня).