[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 23

 
Sergey2011:

Не понимаю, как находясь в 15-ти минутках, через какую временную ф-ию, организовать цикл перебора по дням.

Надеюсь, что вопрос понятен.

Спасибо за помощь


Посмотрите справку по iBarShift и/или можно напрямую работать с дневными барами примерно так: iOpen(Symbol(),PERIOD_D1,1) - открытие предыдущего дня, и т.д.
 
Ereke:
Еще один Умник !
Вы не представляете, насколько Вы правы в своих характеристиках этого форума! Надеюсь, и относительно себя и качества своих запросов, Вы сделаете правильные выводы, раз уж Вы попали в такое окружение.
 
granit77:
Вы не представляете, насколько Вы правы в своих характеристиках этого форума! Надеюсь, и относительно себя и качества своих запросов, Вы сделаете правильные выводы, раз уж Вы попали в такое окружение.
+10 :)
 
granit77:
Вы не представляете, насколько Вы правы в своих характеристиках этого форума! Надеюсь, и относительно себя и качества своих запросов, Вы сделаете правильные выводы, раз уж Вы попали в такое окружение.

artmedia70

СПАСИБО !..................... Мне уже помогли !

 
artmedia70: Правильно Виктор сказал - выстрел в воздух...
Вспомнил анекдот...
Два чукча потерялись в лесу...
-Стреляй в воздух, может кто-то услышит и поможет
Через несколько минут...
-Стреляй ещё
-Не могу, стрелы кончились
 
volshebnik:
Цена закрытия может быть далеко вверху над фракталом (если фрактал вверх) и тогда теряется потенциальная прибыль. Я проверяю пробитие ценой на каждом тике.


Согласен, можно и так, т.к. ордер бай открывается по аску, то можно сравнивать с аском...

if (Ask > upfractal) { DO IT }

К вопросу - почему у Вас не все условия входа срабатывают, объясняю еще раз подробно - это из-за неправильного расчета фрактала...

Для правильного расчета значения последнего фрактала необходимо использовать такую конструкцию с использованием вспомогательной переменной...

 fractal_h = iFractals(Symbol(),PERIOD_H1, MODE_UPPER, 3);
   if(fractal_h!=0)  upfractal=iFractals(Symbol(), PERIOD_H1, MODE_UPPER, 3); 
   
   fractal_l = iFractals(Symbol(), PERIOD_H1, MODE_LOWER, 3);
   if(fractal_l!=0)  dwfractal=iFractals(Symbol(),PERIOD_H1, MODE_LOWER, 3); 

В Вашем коде этого нет и получается следующее, Появился фрактал, да, хорошо Вы запомнили его значение, Вы правильно написали - не на 3-ем, а на 2-ом баре - когда мы будучи на 0-ом - уже знаем его значение, что происходит дальше... Если цена на следующем баре не пробивает значение данного свежайшего фрактала, а допустим "мелкими шажками" на каждом последующем баре движется к его пробитию не формируя при этом очередные фракталы (что как правило и бывает), то у Вас то уже все... рассчитываемое Вами значение фрактала сбрасывается в "0" само... и не надо его дополнительно занулять как Вы это делаете у себя в коде (приводить где не буду сами знаете)... И поэтому получается, что upfractal !=0 только на следующем баре за расчетным (на котором был свежайший фрактал) -

поэтому и делают запоминание и удержание значения свежайшего фрактала при образовании последующих баров именно посредством ввода вспомогательной переменной, попробуйте внесите данные правки к себе в код и увидите, что сделки заключаются именно на пробитии последнего свежайшего фрактала и при этом пофигу через сколько баров это пробитие произойдет, если до сих пор не понятно введите принт вместо Вашего алерта и в тесте посмотрите как меняется значение переменной upfractal с каждым новым баром и все поймете - оно само сбрасывается в "0" на новом сформировавшемся баре, а сам фрактал пробивается допустим на 8-м - все уже, у Вас то значение его уже давно равно нулю.

Вот так у Вас:


  
            
                upfractal=iFractals(Symbol(), PERIOD, MODE_UPPER, 3);
                Alert("upfractal вначале = ",upfractal);
if (Двверх==true && upfractal !=0 && Bid > NormalizeDouble(upfractal+1*Point,Digits) && Tвверх!=Time[0] && Сделкавверх==false) // Условие открытия ордера при пробитии фрактала вверх

Вот так надо:

 fractal_h = iFractals(Symbol(),PERIOD_H1, MODE_UPPER, 3);
   if(fractal_h!=0)  upfractal=iFractals(Symbol(), PERIOD_H1, MODE_UPPER, 3);
 if (Двверх==true && Ask > NormalizeDouble(upfractal+1*Point,Digits) && Tвверх!=Time[0] && Сделкавверх==false) 
   

"Роман, зачем ? Разве это не оно и то же ? Например, если МА_8<МА_2, то это ведь то же самое, что (МА_8-МА_2)<0 ?"

Это одно и тоже, но для работы на реале и 100-пудовой надежности, для отсутствия почвы для возможных "глюков" - необходим 2-й вариант.

П.С. Вместо алертов пользуйтесь принтами и отслеживайте получаемые значения переменных с течением времени в тестере в журнале экспертов для анализа "правильной" работы Вашего сова.

 
Roman.:


Согласен, можно и так, т.к. ордер бай открывается по аску, то можно сравнивать с аском...

if (Ask > upfractal) { DO IT }

Визуально анализ графика на пробитие фрактала и поиска зависимостей произвожу по видимой цене, т.е. биду. Поэтому и пробитие фрактала считаю пробитием фрактала бидом (и upfractal выдаёт значение тоже бида, не аска).
 
Пример:
  datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);

Посмотрел справку, не понимаю (не врубаюсь), как в переменной "some_time" находясь в 15-ти минутках указать что мне нужен предыдущий день, тоесть если сегодня 25 янв. 2011 г. то как мне задать 24, 23, 22 и т. д января для перебора.

Спасибо если разжуете.

 
volshebnik:
Визуально анализ графика на пробитие фрактала и поиска зависимостей произвожу по видимой цене, т.е. биду. Поэтому и пробитие фрактала считаю пробитием фрактала бидом (и upfractal выдаёт значение тоже бида, не аска).


можно и так это не принципиально :-)))

Сейчас разобрался?

 
Roman.:


Согласен, можно и так, т.к. ордер бай открывается по аску, то можно сравнивать с аском...

К вопросу - почему у Вас не все условия входа срабатывают, объясняю еще раз подробно - это из-за неправильного расчета фрактала...

Для правильного расчета значения последнего фрактала необходимо использовать такую конструкцию с использованием вспомогательной переменной...

В Вашем коде этого нет и получается следующее, Появился фрактал, да, хорошо Вы запомнили его значение, Вы правильно написали - не на 3-ем, а на 2-ом баре - когда мы будучи на 0-ом - уже знаем его значение, что происходит дальше... Если цена на следующем баре не пробивает значение данного свежайшего фрактала, а допустим "мелкими шажками" на каждом последующем баре движется к его пробитию не формируя при этом очередные фракталы (что как правило и бывает), то у Вас то уже все... рассчитываемое Вами значение фрактала сбрасывается в "0" само... и не надо его дополнительно занулять как Вы это делаете у себя в коде (приводить где не буду сами знаете)... И поэтому получается, что upfractal !=0 только на следующем баре за расчетным (на котором был свежайший фрактал) -

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

Да, Роман, большое спасибо. Я добавил вспомогательный параметр определения фрактала, теперь сделки открываются все.
Причина обращения: