Помогаем советнику определить своё местоположение и принять правильное решение - страница 3

 

В общем ладно, принимается. Советник с GEOPRICE заработал на 2000 единиц валюты больше при меньшем количестве трейдов за 4 месяца (300% годовых) в сравнении c торговлей без GEOPRICE. Правда DepositSaving такая вещь ненадёжная и даже опасная.

При открытии 3 ордера смотрел алерты с MAX и MIN ценой, всё нормально но не совсем понял при таймфрейме 1 месяц, каунт 3, левел 5. Там какая-то ерунда с ценами. Если поставить на месячном таймфреме 12 каунтов и 5 левел, то цена отображается норм, там разница 7000 пунктов. В целом мну устраивает, надо больше потестировать в разных режимах, а пока вот картинка за 2018 по GBPUSD

Пару тестов сделайте пожалуйста, кому не лень и пишите сюда если ошибки или некорректности найдёте.

Если всё норм, то подредактируем инструкцию и сделаем обновление.

 
а можно протестить за 2008-2009, за 2014-2015,2011-2012 на EURUSD?? тогда будет видно точно что тут так и не так..
 

Итак, нашёл ошибку, давайте думать в чём причина. У меня установлен период для поиска High и Low Price за 1 000 баров. Значит на таймфрейме H1 это примерно 1.5 месяца (1 000 / 24) = 42 дня. Так вот, советник выдал мне:


2 20:40:10.357 2017.11.22 15:00:00  BLACKJACK&HOOKERS GBPUSD,H1: open #111 sell 3.20 GBPUSD at 1.32196 ok 1 ордер

2 20:40:13.416 2017.11.22 22:00:00  BLACKJACK&HOOKERS GBPUSD,H1: open #112 buy 3.20 GBPUSD at 1.33221 ok 2 ордер

2 20:40:53.748 2017.11.29 19:00:00  BLACKJACK&HOOKERS GBPUSD,H1: open #113 buy 3.20 GBPUSD at 1.34350 ok 3 ордер !!!


0 20:40:53.748 2017.11.29 19:00:00  BLACKJACK&HOOKERS GBPUSD,H1: Alert: GeoPriceLocation: \nHighPrice: 1.34481\nLowPrice : 1.34075


Значит перед третьим ордером был ордер типа OP_BUY, следовательно условие такое:

if(Ask>NormalizeDouble(HighPrice-(HighPrice-LowPrice)/CountLevel,Digits))


Посчитаем:

1. Ask по которому был открыт 3 ордер: 1,34350.

Из условия Ask = 1.34350 > 1,34481-(1,34481-1,34075)/5 =  1.34400 (для того чтобы изменить тип OP_BUY на OP_SELL ) Условие не выполнено, так как Ask была меньше границы верхнего уровня, поэтому тип третьего ордера открылся без изменений в виде OP_BUY (на покупку).

ОК.

Затем я посмотрел на график и увидел что на самом деле High и Low Price имеют большую амплитуду чем показал советник!!!

Смотрим невооружённым глазом на 29.11.2017 и отматываем визуально 1.5 месяца назад, там уже спустя пару недель будет ясно что Low цена в районе 1,30310.




То есть советник выдал некорректное значение! У советника при наступлении условия открытия 3 ордера, при отмотке 1000 баров назад, LowPrice 1.34075.


ГДЕ ИСКАТЬ ОШИБКУ? 

LowPrice не соответствует реально минимальному уровню даже визуально, из-за этого не произошла смена  типа 3 ордера и советник нарвался на "DepositSaving завершён в результате контр-движения рынка"



if(OneOrderTrading==false && cn==2 && GeoPriceLocation==true && (cso==1 || csc==0) && cn_ds==0 && CountBuy()==1 && CountSell()==1 && FindLastOrderType()==OP_BUY)
     {

      // Поиск максимальной цены в выбранном таймфрейме и диапазоне
      HighIndex=iHighest(_Symbol,GPL_TimeFrame,MODE_HIGH,GPL_CountBars,GPL_Shift);
      if(HighIndex!=-1)
        {
         HighPrice=High[HighIndex];
        }
      else
        {
         PrintFormat("Ошибка вызова iHighest. Код ошибки=%d",GetLastError());
         SendMail("EA BJH","EA MAGIC "+IntegerToString(Magic)+":"+" Ошибка вызова iHighest. Код ошибки: "+IntegerToString(GetLastError()));
         GPL_trouble+=1;
        }

      // Поиск минимальной цены в выбранном таймфрейме и диапазоне
      LowIndex=iLowest(_Symbol,GPL_TimeFrame,MODE_LOW,GPL_CountBars,GPL_Shift);
      if(LowIndex!=-1)
        {
         // LowPrice=Low[HighIndex]; ОШИБКА
	 LowPrice=Low[LowIndex]; // ИСПРАВЛЕНО
        }
      else
        {
         PrintFormat("Ошибка вызова iLowest. Код ошибки=%d",GetLastError());
         SendMail("EA BJH","EA MAGIC "+IntegerToString(Magic)+":"+" Ошибка вызова iLowest. Код ошибки: "+IntegerToString(GetLastError()));
         GPL_trouble+=1;
        }
//Это наш случай и условие не выполнено, третий ордер не был изменён из-за ошибочного значения LowPrice. 
      if((Ask-LastBuyPrice())>=Step*_Point && GPL_trouble==0)         {          if(Ask>NormalizeDouble(HighPrice-(HighPrice-LowPrice)/CountLevel,Digits))             send(1);             if(DoAlert==true)               {                Alert("GeoPriceLocation: "+"\n"                      "HighPrice: "+DoubleToString(HighPrice,Digits)+"\n"                      "LowPrice : "+DoubleToString(LowPrice,Digits));               }            }          else            {             send(0);             if(DoAlert==true)               {                Alert("GeoPriceLocation: "+"\n"                      "HighPrice: "+DoubleToString(HighPrice,Digits)+"\n"                      "LowPrice : "+DoubleToString(LowPrice,Digits));               }            }         }       else if((LastBuyPrice()-Ask)>=Step*_Point && GPL_trouble==0)         {          if(Ask<NormalizeDouble(LowPrice+(HighPrice-LowPrice)/CountLevel,Digits))            {             send(0);             if(DoAlert==true)               {                Alert("GeoPriceLocation: "+"\n"                      "HighPrice: "+DoubleToString(HighPrice,Digits)+"\n"                      "LowPrice : "+DoubleToString(LowPrice,Digits));               }            }          else            {             send(1);             if(DoAlert==true)               {                Alert("GeoPriceLocation: "+"\n"                      "HighPrice: "+DoubleToString(HighPrice,Digits)+"\n"                      "LowPrice : "+DoubleToString(LowPrice,Digits));               }            }         }      }
 

Нашли ошибку, всем спасибо.

LowPrice=Low[LowIndex];


Завтра сделаем тесты и если всё норм будет, то обновим файлы советника. 

 
2 13:09:42.972 2017.09.14 14:00:00  BLACKJACK&HOOKERS GBPUSD,H1: open #70 sell 1.13 GBPUSD at 1.31913 ok
2 13:09:43.845 2017.09.14 15:00:00  BLACKJACK&HOOKERS GBPUSD,H1: open #71 buy 1.13 GBPUSD at 1.33364 ok
2 13:09:50.687 2017.09.15 10:00:00  BLACKJACK&HOOKERS GBPUSD,H1: open #72 sell 1.13 GBPUSD at 1.34363 ok
0 13:09:50.687 2017.09.15 10:00:00  BLACKJACK&HOOKERS GBPUSD,H1: Alert: GeoPriceLocation: \n HighPrice: 1.34496\n LowPrice : 1.27736

Советник изменил тип 3 ордера, так как текущая цена приблизилась к максимальной за последние 1000 баров.

Тесты хорошие. Сегодня советник и инструкция будут обновлёны.
 
Обновление советника вы можете найти здесь
 

Стратегия, основанная на одной МА-шке - это стратегия прошлого века. Почему это стратегия прошлого века? Это потому прошлого века, что с каждым годом график цены становится все более живым. Почему живым? Да потому живым, что дело идет к высокочастотной торговле. Почему высокочастотной? Потому высокочастотной, что больше роботов торгует, а они быстрее трейдеров.

geratdc_:  Обновление советника вы можете найти здесь
Это ссылка на старую тему - советник там отсутствует. Но помню, торговалось на H1 и использовалась МА100. Что такое МА100 - это средняя цена за 100 часов, т.е. за четверо суток. Представьте трейдера, который смотрит на цену один раз в час и сравнивает текущую цену со средней за четверо суток. И много он наторгует?

А теперь представьте, что он поумнел. И стал еще учитывать уровни. Какие уровни? А вот если цена меньше вчерашней, то покупаем. Почему покупаем? По принципу: налетай, подешевело. А цена все вниз. Покупаем, покупаем - и СтопАут. Приехали.

Ну и что делать? В комплекте терминала есть два советника - МАКД и МА. Когда-то они были прибыльными. Тестируйте их за старые годы и убедитесь. Изучите. Говорят, поменять Sell и Buy - и прибыль. Попробуйте. Маловато?

А теперь ищите новую стратегию. Представьте - это Вы пришли на биржу торговать. Как торговать? Думайте и программируйте. Всякие там контр-ордера, локи, замки выдуманы от безысходности, от ленивости и желания запутать. А что же нужно? Знаю. Восемь лет думал и придумал. Теперь думайте Вы ... ... ...

 
Пора тему закрывать,
Сигнал надо открывать,
Всему миру показать,
Депозит могу сливать
 

Сигнал запилен уже сегодня. Не знаю может на ночь оставлю. Там советник понабрал контр-ордеров на пипсовке,  а цена ни туда и не сюда. Впрочем всё равно времени мало даже если завтра наторгует что-то, это понятно. 

Кстати про высокочастнотность. Я бы не сказал что цена движется. Очень всё медленно в реале (извиняюсь, в демо-торговле) происходит. Советники скучают и ждут условий для начала торговли или её завершения. В общем то, что раньше трейдеры делали, сейчас делают роботы, но опять же под контролем трейдеров, которые попивают какаву в сторонке, присматривая за алготорговлей боковым зрением)) Вся эта автоматизация - уменьшение рабочих мест и ничто иное, игра в рентабельность капитала, роботы то зарплату пока не требуют... Нет, конечно определённое влияние это оказывает, но как недавно выяснил ЦБ РФ - разнонаправленное ))

Ссылка ведёт в тему со ссылкой на обновление советника. Всё продумано :)

 
LRA:

Восемь лет думал и придумал.

Большинство советников прибыльные если их мониторить и исправлять их ошибки. Утром, днём, вечером по 5 минут за моником не сложно зрение напрячь)) А ручная торговля, это не наш метод...