Баг в функции OrderSend() ?

 

 Уже дня 4 я бьюсь, и не выходит реализовать, казалось бы, простую вещь. Ранее подобные веши я уже делал с разными индикаторами и свечами. С машкой ни в какую не выходит.

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

 Вот функция покупки:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = fastMa + buyHear * pt;             // Получаем значение цны открытия
   
   if ((ND(OOP) - Ask) >= g_stopLevel)             // Проверка цену открытия на стоплевел          
   {
       if (ND(OOP) > Ask)           // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
       {
           Print("Bid = ", Bid);
           Print("Ask = ", Ask);
           Print("fastMa = ", fastMa);
           Print("Цена покупки = ", fastMa + buyHear * pt);
           Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
           ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket > 0)
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}

Мы видим, что в OrderSend() прописана цена открытия равная сумме переменных fastMa + buyHear * pt

 На скрине видно, что такой цены  НЕТ! 

Косяк в машке

 Так же можно увидеть, что местами вообще нет входов, где цена касалась fastMa (красной машки)

 Я специально взял буфер 1-ый, т.е. предпоследний бар, что знать наверняка что предпоследний бар закрылся уже и не будет нового закрытия... Чтоб избежать перерисовки последнего 0-го бара.

 Так вот посыл ордера:

 

ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);

А OOP:

double OOP = fastMa + buyHear * pt;             // Получаем значение цны открытия
Как такое возможно?
Файлы:
test_ma_1.mq4  9 kb
 
hoz:

 Уже дня 4 я бьюсь, и не выходит реализовать, казалось бы, простую вещь. Ранее подобные веши я уже делал с разными индикаторами и свечами. С машкой ни в какую не выходит.

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

 Вот функция покупки:

Мы видим, что в OrderSend() прописана цена открытия равная сумме переменных fastMa + buyHear * pt

 На скрине видно, что такой цены  НЕТ! 

 Так же можно увидеть, что местами вообще нет входов, где цена касалась fastMa (красной машки)

 Я специально взял буфер 1-ый, т.е. предпоследний бар, что знать наверняка что предпоследний бар закрылся уже и не будет нового закрытия... Чтоб избежать перерисовки последнего 0-го бара.

 Так вот посыл ордера:

 

А OOP:

Как такое возможно?

А логи так и не собираетесь приводить?
 
Vinin:

А логи так и не собираетесь приводить?


 В логах вот что:

2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: open #3 buy stop 0.10 EURUSD at 1.31074 ok
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.3107
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: fastMa = 1.3097
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Ask = 1.3099
2013.02.06 17:54:05     2011.01.13 07:00  test_Ma_1 EURUSD,H1: Bid = 1.3099
2013.02.06 17:54:05     2011.01.12 14:32  Tester: order #2, buy 0.10 EURUSD is opened at 1.29876
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: open #2 buy stop 0.10 EURUSD at 1.29876 ok
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.2988
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: fastMa = 1.2978
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Ask = 1.2978
2013.02.06 17:54:05     2011.01.12 14:00  test_Ma_1 EURUSD,H1: Bid = 1.2978
2013.02.06 17:54:05     2011.01.12 12:11  Tester: order #1, buy 0.10 EURUSD is opened at 1.29953
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: open #1 buy stop 0.10 EURUSD at 1.29953 ok
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: i_thresholdFromMa * pt = 0.0005
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Цена покупки = 1.2995
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: fastMa = 1.2985
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Ask = 1.2987
2013.02.06 17:54:05     2011.01.12 12:00  test_Ma_1 EURUSD,H1: Bid = 1.2986
2013.02.06 17:54:04     test_Ma_1 inputs: i_TF=0; i_fastMaPeriod=10; i_magic=3333021; i_thresholdFromMa=5; buyHear=10; SellHear=10; 

  Т.е. если верить логам, то покупка там где нужно. Если смотреть на скрин, то не там совершенно... Выше я уже привёл скрин, там видно, что отложка стоит не там. 10 от fastMa там и близко нет..

 

Привет, Виктор! У меня открывает, но сливает. А открывает, когда я чуть подправил одну строчку:

   if ((ND(OOP) - Ask) >= MathMax(g_stopLevel,g_spread))// Проверка цену открытия на стоплевел          
Тоже самое добавьте для сэлла! Удачи!
 
borilunad:

Привет, Виктор! У меня открывает, но сливает. А открывает, когда я чуть подправил одну строчку:

Тоже самое добавьте для сэлла! Удачи!

 


Здарова, Борис. Ну открывает в тех же местах, что и раньше.. А где не открывало, там не открывает и щяс. На H1 вообще странно очень работает.

 Я перешёл на М15 и перевёл машку в MODE_OPEN по 0-му(нулевому) бару.

 В общем-то, если понаблюдать, то отложки ставятся там где нужно (имею ввиду на ТФ М15), но вот местами где очевидно должно открыться, отложки не ставятся. Вот, например, скрин:

Косяк с отложками 

 

borilunad:

Привет, Виктор! У меня открывает, но сливает.

 Борис, и будет сливать.. Ведь это только первый этап.. А до финиша ой как далеко.. Все условия будут позже, и решаться будут постепенно. Пока что нужно осилить текущие нюансы.
 
hoz:


Здарова, Борис. Ну открывает в тех же местах, что и раньше.. А где не открывало, там не открывает и щяс. На H1 вообще странно очень работает.

 Я перешёл на М15 и перевёл машку в MODE_OPEN по 0-му(нулевому) бару.

 В общем-то, если понаблюдать, то отложки ставятся там где нужно (имею ввиду на ТФ М15), но вот местами где очевидно должно открыться, отложки не ставятся. Вот, например, скрин:

 

 

 Борис, и будет сливать.. Ведь это только первый этап.. А до финиша ой как далеко.. Все условия будут позже, и решаться будут постепенно. Пока что нужно осилить текущие нюансы.

Виктор, надо поизучать индикаторы, методы их использования в советнике. А то мне кажется, что Вы хотите чего-то, что не знаете, как выполнить.

И другое, нельзя так зацикливаться на очень строгих условиях, т.к. цена всё равно будет уж точно в половине случаев вести себя не так, как Вам хочется. Потому необходимо прокручивать варианты, что Вы будете делать в худших случаях.

Откровенно признаюсь, до сих пор не понял, почему для Вас так важно именно войти на этом баре, а не на другом. По-моему главное, это во-время определить и использовать начавшийся тренд, а не определённую точку входа. Пробуйте и сравнивайте различные Машки, и тогда научитесь их использовать как фильтры от нежелательного входа, а не как сигналы на вход, в чём они часто подводят, да и другие индикаторы не лучше!

 
попробуйте на график вывести значение  i_thresholdFromMaи т и тестере понаблюдайте  и тудаже можноо вывести результ сравнения  
 
hoz:


 В логах вот что:

  Т.е. если верить логам, то покупка там где нужно. Если смотреть на скрин, то не там совершенно... Выше я уже привёл скрин, там видно, что отложка стоит не там. 10 от fastMa там и близко нет..


Судя по логу, функция OrderSend() выставляет ордер правильно, по той цене, которую Вы ей передаете
 

PapaYozh:

 



Судя по логу, функция OrderSend() выставляет ордер правильно, по той цене, которую Вы ей передаете

Да!!!  

 10 от fastMa там и близко нет..

    У вас задано 100 п.

еще скрин, все так.

 

 
r772ra:

Да!!!  

 10 от fastMa там и близко нет..

    У вас задано 100 п.

еще скрин, все так.


 Относительно 4-х знака это и есть 10пп. А на 5-ти знаке 100пп. Что тебя не устраивает?
 
PapaYozh:

Судя по логу, функция OrderSend() выставляет ордер правильно, по той цене, которую Вы ей передаете


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

 Но ещё странно, что на М5 я такого не замечал, НО замечено, что пропускаются некоторых входы. 

Причина обращения: