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

 
ANDREY:

Спред зашить можно, то есть приплюсовать какую то величину к цене bid. Но вот как можно зашить размер этой величины? На реальных тиках спред ПЛАВАЮЩИЙ , то есть величина спреда заранее неизвестна. А следовательно и зашить ее на РЕАЛЬНЫХ тиках наверное то же невозможно..... как мне кажется на мой профессиональный взгляд, а чисто логически. Зашить можно наверное только то что ТОЧНО  известно ЗАРАНЕЕ

Вас удивляет метатрейдер? Меня нет.. уже нет... Пожалуйста....

<DATE>    <TIME>    <OPEN>    <HIGH>    <LOW>    <CLOSE>    <TICKVOL>    <VOL>    <SPREAD>
1999.01.28    00:03:00    1.14450    1.14450    1.14450    1.14450    1    0    50
1999.01.28    00:13:00    1.14440    1.14440    1.14420    1.14420    3    0    50

 
Александр:

Вас удивляет метатрейдер? Меня нет.. уже нет... Пожалуйста....

<DATE>    <TIME>    <OPEN>    <HIGH>    <LOW>    <CLOSE>    <TICKVOL>    <VOL>    <SPREAD>
1999.01.28    00:03:00    1.14450    1.14450    1.14450    1.14450    1    0    50
1999.01.28    00:13:00    1.14440    1.14440    1.14420    1.14420    3    0    50

То есть спред или О , или просто не отображается значение спреда. А это данные по МТ-4 , или по МТ-5. И  из какого пункта меню эти данные?

Если значение спреда есть, но оно по каким то причинам не отображается, то этот глюк МТ очень похож на глюк моего МТ5. Альпари утверждает что глубина истории ни как не влияет на качество тиковых котировок и считает что моя проблема спрятана в самом терминале, и советует обратиться к разработчикам. То есть у меня так же как и в Вашем примере ,значение качества истории за 2010 год есть, но по каким то причинам оно не отображается в МТ5 И это логично в 2010 году было 20 млн тиков - поэтому хоть какое то значение качества истории должно отображаться. Если бы тиков не было вообще, или их количество было слишком мало ( допустим 1000) тогда НЕ отображение качества истории было бы объяснимо.
 

Здравствуйте.
Уделите пожалуйста внимание новичку.
При компиляции ошибок и предупреждений нет, однако эксперт не открывает ордера в тестере... и ошибок в журнале нет...

В чем может быть причина? Уже что только не перепробовал поменять...

extern double Lot=0.1;            
extern int Slippage = 30;
extern int TakeProfit = 30;
extern int StopLoss   = 30;
extern int MA_Smoth_S = 60;
extern int MA_Smoth_B = 12;
extern int MA_Simpl_S = 3;
extern int MA_Simpl_B = 1;

int start()
         {
          int MA_Simpl_S_Op,      
              MA_Simpl_B_Op;      
                 
          MA_Smoth_S = iMA(NULL,0,MA_Smoth_S,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Smoth_B = iMA(NULL,0,MA_Smoth_B,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Simpl_S = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_B = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_S_Op = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,2);
          MA_Simpl_B_Op = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,2);
          
          //Условие для Buy______________________
          while(MA_Smoth_B > MA_Smoth_S)
               {
                if(MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B > MA_Simpl_S)
                  {
                   bool check = OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask, Digits),Slippage,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Buy",0,0,clrGreen);
                   return(0);
                  }
               }
               
          //Условия для Sell_____________________
          while(MA_Smoth_S > MA_Smoth_B)
               {
                if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
                  {
                   check = OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid, Digits),Slippage,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Sell",0,0,clrRed);
                   return(0);
                  }   
               }     
          return(0);
         }
 
IndependentMK:

Здравствуйте.
Уделите пожалуйста внимание новичку.
При компиляции ошибок и предупреждений нет, однако эксперт не открывает ордера в тестере... и ошибок в журнале нет...

В чем может быть причина? Уже что только не перепробовал поменять...

int X = 5;
if(X > 10 && X < 3)  int ticket = OrderSend(Symbol(), OP_SELL, Доп_Лот, NormalizeDouble(Bid, Digits), 3,  NormalizeDouble(Ask + StopLoss_S * Point, Digits),  NormalizeDouble(Bid - TakeProfit_S * Point, Digits), "", MAGIC_S, 0, CLR_NONE);
 

 Как Вы думаете? Откроет позицию тестер? Нет. Т.к. Х не попадает в диапазон проверок. Поэтому. Вставляете в код Print-ы и анализируете журнал тестера.

int start()
  {
   int MA_Simpl_S_Op,
       MA_Simpl_B_Op;
   MA_Smoth_S = iMA(NULL, 0, MA_Smoth_S, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Smoth_B = iMA(NULL, 0, MA_Smoth_B, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Simpl_S = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_B = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_S_Op = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 2);
   MA_Simpl_B_Op = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 2);
//Условие для Buy______________________
   Print(" MA_Smoth_B = ", MA_Smoth_B, " MA_Smoth_B = ", MA_Smoth_B);
   while(MA_Smoth_B > MA_Smoth_S)
     {
      Print(" MA_Simpl_B_Op = ", MA_Simpl_B_Op, " MA_Simpl_S_Op = ", MA_Simpl_S_Op);
      if(MA_Simpl_B_Op < MA_Simpl_S_Op)
        {
         Print(" MA_Simpl_B = ", MA_Simpl_B, " MA_Simpl_S = ", MA_Simpl_S);
         if(MA_Simpl_B > MA_Simpl_S)
           {
            bool check = OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), Slippage, Bid - StopLoss * Point, Ask + TakeProfit * Point, "Buy", 0, 0, clrGreen);
            return(0);
           }
        }
     }
//Условия для Sell_____________________
   while(MA_Smoth_S > MA_Smoth_B)
     {
      if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
        {
         bool check = OrderSend(Symbol(), OP_SELL, Lot, NormalizeDouble(Bid, Digits), Slippage, Ask + StopLoss * Point, Bid - TakeProfit * Point, "Sell", 0, 0, clrRed);
         return(0);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
ANDREY:

То есть спред или О , или просто не отображается значение спреда. А это данные по МТ-4 , или по МТ-5. И  из какого пункта меню эти данные?

Если значение спреда есть, но оно по каким то причинам не отображается, то этот глюк МТ очень похож на глюк моего МТ5. Альпари утверждает что глубина истории ни как не влияет на качество тиковых котировок и считает что моя проблема спрятана в самом терминале, и советует обратиться к разработчикам. То есть у меня так же как и в Вашем примере ,значение качества истории за 2010 год есть, но по каким то причинам оно не отображается в МТ5 И это логично в 2010 году было 20 млн тиков - поэтому хоть какое то значение качества истории должно отображаться. Если бы тиков не было вообще, или их количество было слишком мало ( допустим 1000) тогда НЕ отображение качества истории было бы объяснимо.

Вот котировки МТ4

2007.02.12,    00:00,        0.9051,    0.9087,    0.9047,     0.907,   3739

Вот МТ5
1999.01.28    00:03:00    1.14450    1.14450    1.14450    1.14450    1    0    50
1999.01.28    00:13:00    1.14440    1.14440    1.14420    1.14420    3    0    50

 

Почувствуйте разницу... С тиками давно перестал работать. И так сил не хватает бороться с разными "удобностями/приколами".

Вы тот же советник в другой ДЦ поставьте. Какая там проблема тиков. Даже на Open, даже открытие и закрытие в одни и те же времена. Разница КОЛОССАЛЬНА... Может кто-то и решил эту проблему(тики и пр.), а я не знаю как с этим быть. А в МТ5 еще и спред...

 
Александр:

Вот котировки МТ4

2007.02.12,    00:00,        0.9051,    0.9087,    0.9047,     0.907,   3739

Вот МТ5
1999.01.28    00:03:00    1.14450    1.14450    1.14450    1.14450    1    0    50
1999.01.28    00:13:00    1.14440    1.14440    1.14420    1.14420    3    0    50

 

Почувствуйте разницу... С тиками давно перестал работать. И так сил не хватает бороться с разными "удобностями/приколами".

Вы тот же советник в другой ДЦ поставьте. Какая там проблема тиков. Даже на Open, даже открытие и закрытие в одни и те же времена. Разница КОЛОССАЛЬНА... Может кто-то и решил эту проблему(тики и пр.), а я не знаю как с этим быть. А в МТ5 еще и спред...

Вы конечно более продвинутый во всех этих вопросах чем я ...... поэтому в некоторых местах ход Вашей мысли я не улавливаю...
Например, свои коды я тестировал на МТ4 , при моделировании ВСЕ ТИКИ  коды показывали очень хороший результат ...  Потом я узнал, что мой очень хороший результат не совсем точен, потому что МТ-4 не учитывает реальный спред и что реальный спред на МТ4  в Альпари учесть невозможно поскольку он плавающий( особенно по ночам).А у меня Советник наилучшие результаты показывал как раз с 22 до 1.

На этом форуме мне подсказали что при тестировании реальный( то есть именно  плавающий) спред учитывается только на МТ5.  Это сподвигло меня изучить МТ-5 и прогнать свой код на нем на модели - каждый тик на основе РЕАЛЬНЫХ тиков. После этого у меня наступило отрезвление, так как мой код уже не показывал таких хороших результатов как на МТ4. С другой стороны некоторые положительные моменты кода , которые были на МТ4 подтвердились и на МТ5. И я обрадовался тому, что можно и дальше совершенствовать свой код, будучи уверенным что результаты теста максимально приближены к реальной торговле.

Исходя из этого я не совсем понимаю ( возможно из за недостатка знаний и опыта) Ваше негативное отношение к тестированию на тиковой истории. Ведь если открывать сделки не по Сlose( как у Вас) а по любой  цене , которая указана в запросе на открытие ордера( как у меня), в чем тогда минусы тестирования на тиках?
Возможным минусом , как мне кажется, может быть только неполный набор тиков и их пропуск  в загруженных котировках.  Но количество тиков, по сравнению с количество минутных свечей , огромно. И я пока не изучал вопрос о том можно ли вообще обнаружить недостающие тики(как свечи) и добавлять  их в файл с тиками. Поэтому я пока вынужден доверять заверениям Альпари, что у них ПОЛНАЯ тиковая история , начиная с 2001 года. 
И я до сих пор не понимаю, в чем разница , которую я должен почувствовать глядя на параметры свечей , которые Вы привели для демонстрации какой то своей идеи.

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

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

Тестирование торговых стратегий на реальных тиках
Тестирование торговых стратегий на реальных тиках
  • www.mql5.com
В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: " OHLC на M1 " с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме " Все тики ", и самое достоверное тестирование в режиме " Каждый тик на основе реальных тиков " с использованием записанных тиков из...
 
ANDREY:


 Ваше негативное отношение к тестированию на тиковой истории. Ведь если открывать сделки не по Сlose( как у Вас) а по любой  цене , которая указана в запросе на открытие ордера( как у меня), в чем тогда минусы тестирования на тиках?

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

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

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

1. Негативное отношение... Нет оно не негативное. Просто ты добиваешься, ждешь неделями окончания тестов, а потом оказывается, что котировки недостаточно хороши и это СИЛЬНО влияет на результаты.  Все ДЦ ФИЛЬТРУЮТ котировки. Фильтры искажают их. Я пошел по пути написания советника, которому не критично качество котировок.

2. Разница в котировках МТ4 и МТ5 та, я с этого начал, что в МТ5 есть спред ДЛЯ КАЖДОЙ СВЕЧИ. Зачем так? Не знаю. Оффлайн этот спред максимален. Онлайн гуляет. Т.е надо делать систему которой это не критично. См п.1.  Ж).

Собственно это все. Никакого подтекста.

 
Александр:

1. Негативное отношение... Нет оно не негативное. Просто ты добиваешься, ждешь неделями окончания тестов, а потом оказывается, что котировки недостаточно хороши и это СИЛЬНО влияет на результаты.  Все ДЦ ФИЛЬТРУЮТ котировки. Фильтры искажают их. Я пошел по пути написания советника, которому не критично качество котировок.

2. Разница в котировках МТ4 и МТ5 та, я с этого начал, что в МТ5 есть спред ДЛЯ КАЖДОЙ СВЕЧИ. Зачем так? Не знаю. Оффлайн этот спред максимален. Онлайн гуляет. Т.е надо делать систему которой это не критично. См п.1.  Ж).

Собственно это все. Никакого подтекста.

" ....... а потом оказывается, что котировки недостаточно хороши и это СИЛЬНО влияет на результаты.  Все ДЦ ФИЛЬТРУЮТ котировки. Фильтры искажают их. ...."


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

Поэтому я не совсем понимаю какие могут быть претензии к качеству котировок. Как вариант могу себе представить что пришел тик и принес цену, например, 1.00061. А Альпари присвоило этому тику другую цену, например, 1.00077. Или могут к этому тику приделать спред не тот который был на самом деле. Но если это действительно так , то посторонний человек ни как не сможет обнаружить эту подмену, особенно на глубокой истории. Поэтому утверждать что Альпари отфильтровало этот тик с котировкой конечно же можно. Но вот доказать это как мне кажется практически не возможно. Потому что никто кроме соответствующего специалиста Альпари не знает какая была первичная цена или спред  у отфильтрованного тика. Возможен только вариант, если этот специалист откроет этот секрет кому то , и может быть даже подтвердит данный факт документально . Но, как мне кажется, данная инфа с документальным подтверждением тут же оказалась бы на этом форуме.


"...   Все ДЦ ФИЛЬТРУЮТ котировки. Фильтры искажают их....."


Я об этом читал неоднократно. Но эта фильтрация касалась реальной торговли. И как мне кажется для ДЦ такая фильтрация целесообразна. При помощи нее они могут избежать больших убытков , если огромное количество позиций на очень большой объем может закрыться по тейкпрофиту , если ДЦ не выводило их на рынок. А какой смысл в фильтрации при предоставлении котировок для тестирования? 

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
 

Подскажите как получить при убыточной закрытии позиции,коэффициент х2.

Сейчас получаю  1,4,9,16 - а нужно 2,4,8,16.

Что исправить в коде?

 int cn=0,c=0;
  datetime dt=0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--){
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType()<=1) {
     if((OrderSymbol()==mSymbol)&&(OrderMagicNumber()==Magic)) {
       double Profit=OrderProfit()+OrderCommission()+OrderSwap();
        if(Profit<0) {  
        c++;   
        cn=(int)MathPow(c,2); // что здесь исправить?
        } else break;     
 }}}
   Comment(cn);
 
Denis Pershin:

Подскажите как получить при убыточной закрытии позиции,коэффициент х2.

Сейчас получаю  1,4,9,16 - а нужно 2,4,8,16.

Что исправить в коде?

все нужно исправить

Ваш код ищет первый попавшийся ордер из истории ордеров с заданным символом и заданным магиком

затем идет подсчет количества найденных убыточных ордеров, и возводите в степень 2 это количество ордеров

поиском по форуму "полезные функции от КИМ", и соберите себе примерно так:

- найти тикет последнего ордера  по нашему символу и нашему магику

- по найденному тикету получить OrderProfit() и OrderLots() и если нужно, то умножить на свой коэффициент мартингейла

ЗЫ: может быть там есть и готовое решение

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
Причина обращения: