Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
geratdc_
242
geratdc_  

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

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

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

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

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

Итак, нашёл ошибку, давайте думать в чём причина. У меня установлен период для поиска 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));               }            }         }      }
geratdc_
242
geratdc_  

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

LowPrice=Low[LowIndex];


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

geratdc_
242
geratdc_  
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_
242
geratdc_  
Обновление советника вы можете найти здесь
LRA
759
LRA  

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

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

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

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

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

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

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

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

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

geratdc_
242
geratdc_  
LRA:

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий