Testing pass stopped due to a critical error in the east

На AUDNZD огромный спред: 29pips и StopLevel 60pips (LiteForex). По-моему на кроссах торговать сеточником, который предполагает малые тейки очень опасно. А если добиться стабильности алгоритма, то будет мало сделок и прибыли, что я и вижу из очета. Торгуя мартингейлом, мы в любом случае рискуем всем депозитом - "все или ничего". Поэтому и процент прибыли в идеале должен стремиться к проценту риска, а риск при таком методе колоссальный. Слив при торговле мартышками неизбежен, весь вопрос в том - превышает ли прибыль между сливами наши общие потери. Впрочем, это общеизвестно.Rever27, нравится мне твой системный подход к исследованию советников. Вот написал для обработчика OnTester() рассчет фактора по твоей формуле. Все удобнее, чем екселе считать. Может пригодится (код в прикрепленном файле).

На AUDNZD огромный спред: 29pips и StopLevel 60pips (LiteForex). По-моему на кроссах торговать сеточником, который предполагает малые тейки очень опасно. А если добиться стабильности алгоритма, то будет мало сделок и прибыли, что я и вижу из очета. Торгуя мартингейлом, мы в любом случае рискуем всем депозитом — «все или ничего». Поэтому и процент прибыли в идеале должен стремиться к проценту риска, а риск при таком методе колоссальный. Слив при торговле мартышками неизбежен, весь вопрос в том — превышает ли прибыль между сливами наши общие потери. Впрочем, это общеизвестно.
Rever27, нравится мне твой системный подход к исследованию советников. Вот написал для обработчика OnTester() рассчет фактора по твоей формуле. Все удобнее, чем екселе считать. Может пригодится (код в прикрепленном файле).

Я такого спреда по AUDNZD со времен Forex4you не видел )
Естественно такой спред это заведомо убийство счета с мартышкой. Выбери другого брокера. Я использую для центовиков Roboforex и FortFS.
Лично я для себя составил таблицу в екселе, в которой мне удобно хранить все результаты на случай слива сета или появлении просадки больше, чем закладывал (чтобы не переопимизировать, а выбрать другой сет, прогнав его на появившемся проблемном участке). На единственный слот OnTester этот фильтр забивать не охота.
Но если уж это делать с умом, можно туда добавить еще пару параметров сразу: Количество сделок, максимальная просадка.
К примеру, после теста сета бот проверяет, сколько было сделок, если меньше 400 (это мое значение, может быть любое, лучше вообще вынести во внешние), то значение OnTester ставим -10.
Далее, если сделок больше, то проверяем просадку от депо (хоть в процентах, хоть в делении депо просадки на начальный баланс). я фильтрую в ексельке на 60%. Если больше, ставим коэффициент к примеру -5. Хотя можно так же -10.
Ну и под конец проверяем мой коэффициент, фильтруем те значения, где меньше 0.4, устанавливая им значения 0.
Генетику выставляем Custom, и тогда подбор лучших результатов будет идти по нашим параметрам -10, -5, 0 и далее хорошие результаты выше 0.4.
По графику оптимизации будет очень хорошо видно в конце, как генетика отсеивает плохие результаты и крутится около лучших.

Снимок.PNG

2017.05.10 15:55:01.450 2015.01.15 11:58:27 Tester: take profit #99 at 1.17220 (1.17220 / 1.17225)
2017.05.10 15:55:01.450 2015.01.15 11:58:26 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: modify #99 buy 0.08 EURUSD at 1.17190 sl: 0.00000 tp: 1.17220 ok
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:25 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:24 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.450 2015.01.15 11:58:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:21 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:21 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:21 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:21 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:20 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:20 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:20 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.434 2015.01.15 11:58:20 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:01.325 2015.01.15 11:57:23 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: OrderModify error 130
2017.05.10 15:55:00.590 2015.01.15 11:49:33 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: 117.000 2015.01.14 06:30:00
2017.05.10 15:55:00.590 2015.01.15 11:49:33 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: 117.000 2015.01.14 06:30:00
2017.05.10 15:55:00.590 2015.01.15 11:49:33 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: 117.000 2015.01.14 06:30:00
2017.05.10 15:55:00.590 2015.01.15 11:49:33 2Sides_v5.0c5_1065_Fix_2(Joker62) EURUSD,M15: open #63 buy 0.01 EURUSD at 1.17280 ok

Кто-нибудь знает, как избежать ошибки array out of range при попытке отобразить большое количество баров (допустим, 7000) в индикаторном буфере?

2 ответа

Лучший ответ

Хотя массивы (проблема) выглядят одинаково, есть большая разница

Индикаторы MQL4 используют для работы с массивами «другие» механизмы, нежели «обычные» массивы.

...  Testing pass stopped due to a critical error in the EA
...  array out of range in '!2015-09-08___!EA 2xAMA 01 2015-09-08_msMOD_0.00.mq4' (519,39)

Да, MT4 выдает фатальную ошибку при попытке обработать неправильный ptr -> array[aStaticSIZE] < / strong>, и необходимо принять меры, чтобы избежать такого случая или обрезать < / strong> ptr (аналогично сценариям с циклическим буфером с низкой задержкой), чтобы не выходить за границу массива (недостаточное / переполнение) или extend array[] через ArrayResize(), чтобы идти в ногу с ростом ptr (пока позволяет память)) на массивах, объявленных как динамические double Array[];, однако Технические индикаторы MQL4 < / strong> у меня совсем другая ситуация.


. . . . . (И нужно проверять каждое обновление стелса New-MQL4.56789)

Что касается "New"-MQL4.56789-Build-840, ваш « обычный » массив не может содержать более чем 2.147.483.647 элементов, если диспетчер пула памяти O / S позволяет, поэтому у вас должно быть много места, даже если вы используете отображения более высокой размерности { 2D | 3D | 4D }.

Несколько лет назад я использовал множество параллельных 2D / 3D-массивов для быстрых и private (надежно инкапсулированных) обработчиков кучи / стека для поддержки высокодинамичных объектов в масштабах более 100 тыс. Строк / 2D-плоскостей, и все они хорошо работали в старый — MQL4.

Так что некоторые элементы 7k + не должны вас беспокоить.


Индикаторы используют массив косвенно, через автоматический обработчик буфера

В этом смысле ваш код не должен заботиться об этих проблемах.

/*
#property "pragmas" help MQL4-compiler decide about setup of internal handlers
          so this part of code "speaks" to MetaLang.exe at compile-time*/

#property indicator_buffers      3             // .DEF N-Buffs

#property indicator_color1       White         // .SET Buf[0].color
#property indicator_color2       SeaGreen      // .SET Buf[1].color
#property indicator_color3       FireBrick     // .SET Buf[2].color

#property indicator_width1       1             // .SET Buf[0].width
#property indicator_width2       2             // .SET Buf[1].width
#property indicator_width3       2             // .SET Buf[2].width

         double   buffer_line_up[],            // .DEF Arrays as dynamic ...[]
                  buffer_line_dn[],            //      with human-readable-names
                  buffer_line_ax[];            //      and MT4 will take care

int   init()   {

      SetIndexBuffer(   0, buffer_line_ax );   // .ASSOC IndexBuffer.0<-array[]
      SetIndexLabel(    0, "SuperTrend"     );

      SetIndexBuffer(   1, buffer_line_up   ); // .ASSOC IndexBuffer.0<-array[]
      SetIndexLabel(    1, "Up Trend"       );
      SetIndexStyle(    1, DRAW_LINE,
                           STYLE_SOLID,
                           1 + int( ATR_Multiplier / 5 ),
                           SeaGreen
                           );

      SetIndexBuffer(   2, buffer_line_dn );   // .ASSOC IndexBuffer.0<-array[]
      SetIndexLabel(    2, "Down Trend"     );
      SetIndexStyle(    2, DRAW_LINE,
                           STYLE_SOLID,
                           1 + int( ATR_Multiplier / 5 ),
                           FireBrick
                           );

      SetIndexDrawBegin(0, ATR_Period );       // .DEF initial depth of Buffer before 1st GUI output

      IndicatorShortName( "xxxx[" + ATR_Period + "," + ATR_Multiplier + "]" );

      IndicatorDigits( MarketInfo( Symbol(), MODE_DIGITS ) );


3

user3666197
24 Май 2016 в 04:14

У меня была аналогичная проблема, я всегда получал ошибку «Array out of range» для одного из моих буферов. Я проверил с помощью ArraySize() , который вернул 0 .

В конце концов, я просто забыл вызвать SetIndexBuffer(...) для этого буферного массива в onInit() {...} моего индикатора.

Поскольку я использовал внутренний буфер без рисования линий, я сначала использовал функцию IndicatorBuffers() , чтобы увеличить количество буферов, а затем зарегистрировал свой дополнительный буфер, используя SetIndexBuffer(...) < / сильный>.

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

   IndicatorBuffers(5);

//buffers with #properties settings
   SetIndexBuffer(0,Buffer1);
   SetIndexBuffer(1,Buffer2);
   SetIndexBuffer(2,Buffer3);
   SetIndexBuffer(3,Buffer4);

//additional buffer without #properties 
   SetIndexBuffer(4,AdditionalBuffer);


3

Jan Rasehorn
16 Окт 2015 в 15:37

Понравилась статья? Поделить с друзьями:
  • Teso 307 ошибка
  • Test wpf ошибка
  • Tesmastat ошибка инициализации порта 100
  • Test ssd на ошибки
  • Tesler dsr 10 ошибка ash