Баг в функции OrderSend() ? - страница 2

 
hoz:


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

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

Имейте в виду, что только на флэте Машка липнет к барам, а на разворотах и не поймаешь!
 
borilunad:

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

 Борис, так изучал же. И хочу всего навсего, чтоб цена ставилась ниже(выше) машки построенной по цене открытия или закрытия или разницы нет по чём. Разницы нет, т.к. если брать бар с индексом 1, то он уже сформирован и его значение больше не меняется... По логике, если индикатор не перерисовывает, то вообще не важно как он устроен (хотя я понимаю как машка рассчитывается т.к. специально уделял этому внимание, да и просто это всё). Ведь его значение на предыдущих барах уже есть, и его можно получить, что я и сделал.

borilunad:

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

 Борис, то что в реальном рынке могут быть различные варианты, и не всегда условия будут выполняться... ДА! Я это понимаю. Но если в тестере условия не выполняются, это вообще странно. В тестере - НЕТ реквот, НЕТ - ошибок связанных с занятостью торгового потока и тд. Тут по логике должны все ордера исполнятся идеально...

 Вот в тестере если всё идеально отрабатывается, тогда я могу уже прикинуть как ведёт себя стратегия в идеале. А уже потом опираясь на статистические данные принимать соответствующие решения.

 Ну а если даже в тестере нельзя прогнать стратегию, и он нагло врёт на каждом шаге, то что тогда? Бежать с этой платформы и не оглядываться назад? Искать другие пути?

 Я реально хочу написать толкового бота, у меня есть свои стратегии, в которых уж ой как полно свои подходов и наблюдений. Что-то уже написано, что-то тестируется в реале, что-то гонял в тестере, и всё работает. Чаще писал эксперты на основе машек, но входы были не по машкам.

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

 Я же уже всё обосновал, и, кстати, отправил вопрос в саппорт. Ответа внятного пока что не услышал...

borilunad:

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

Борис, ну если так поглядеть, то вообще не важно где войти :) Можно входить где-н. и траалить входы и даже не обум спонтанно. Ответ мой прост! Есть канкретные условия. Если на текущей свече что-то не выполнилось, значит пусть торгуют другие,.. я подожду.. Я не гоняюсь за трендом, я иду с ним по пути. Писать очередной грааль на канкретный кусок истории я не собирался даже, мне важна универсальность.

Вот потому я и придираюсь к нюансам, т.к. если думать, что входы будут согласно стратегии не всегда даже на ТФ Н1, то что говорить о меньших ТФ ? Ведь часовик это не минутка, и не 5-ти минутка. На ТФ Н1 времени "подумать" у эксперта уйма., тем более в тестере... Так что тут не в этом дело.

 
borilunad:
Имейте в виду, что только на флэте Машка липнет к барам, а на разворотах и не поймаешь!

 А не важно :) Вход у меня будет другой. Это только малый приём, который нужно освоить. Дальше будут усложнять.
 
hoz:

 А не важно :) Вход у меня будет другой. Это только малый приём, который нужно освоить. Дальше будут усложнять.
И самое главное, что у Вас есть настойчивость, правда, наверно, не хватает терпения и гибкости, но со временем добьётесь от себя своего задуманного! Успехов!
 
может тестите по ценам открытия , особенно на часовиках...
 
YOUNGA:
может тестите по ценам открытия , особенно на часовиках...
Конечно, лучше на тиках! Правдоподобнее будет картина.
 
borilunad:
И самое главное, что у Вас есть настойчивость, правда, наверно, не хватает терпения и гибкости, но со временем добьётесь от себя своего задуманного! Успехов!


 Благодарю! Мне, кстати, такое довелось недавно услышать от знакомого.. брокера :) Он сказал, что я очень упрям и самоуверен. Ну просто другого варианта нет, нужно добивать то что начал, иначе не добиться ничего.

 

YOUNGA:
может тестите по ценам открытия , особенно на часовиках...


 Да тут как-будто несколько лишних пп. всё-таки где-то или чем-то "съедаются". Увеличил отступ до 15, всё начало ставиться, где не ставилось. При меньшем отступе не везде...

 

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

 

static datetime lastBarTime = 0;    // Время проведения последних рассчётов

Уберите эту строку из start и добавьте соответствующую декларацию в глобальную секцию.

После можете повторить серию переключений ТФ, желательно - в той же последовательности, что и прежде.

Да, еще в init добавьте: lastBarTime = 0;

 
bool OpenSell()
{
   int ticket = -1;
   double OOP = fastMa - SellHear * pt;               // Получаем значение цны открытия
   
   if ((Bid - ND(OOP)) >= g_stopLevel)                // Проверка цену открытия на стоплевел
   {
       if (ND(OOP) < Bid)           // Проверка что цена открытия ниже Bid, т.к. у нас вход отложенником
       {
           Print("Bid = ", Bid);
           Print("Ask = ", Ask);
           Print("fastMa = ", fastMa);
           Print("Цена покупки = ", fastMa + buyHear * pt);
           Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
           ticket = OrderSend(Symbol(), OP_SELLSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket < 0)  <------ это как понимать? если ордер не установлен, то вернуть true, в функции bool OpenBuy() почему-то наиборот, где правильно????
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}
int GetStateMa(double fastMa, double slowMa)
{
   if (fastMa > slowMa)                          // Если условия выполнены, то..
       return (MA_DIRECT_TO_UP); <--здесь вверх  // ..машки направлены вниз <-- а здесь
   
   if (fastMa < slowMa)                          // Если условия выполнены, то..
       return (MA_DIRECT_TO_DOWN);  <---         // машки направлены вверх  <---
   if (fastMa = slowMa)
       return (MA_DIRECT_TO_NONE);              // Машки не имеют выраженного направления
}
и вообще весь код какой-то "Олбанский"
 
pako:
Олбанский не возбраняется:)
Причина обращения: