[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 967

 
ikatsko:
Нужна функция "Новый ордер" наподобие "Нового бара". Функция должна иметь значение TRUE только на один тик, следующий за моментом, когда ордер открылся. Т.е. в момент изменения количества открытых ордеров в бОльшую сторону. Прошу помочь

Вот так можно отследить изменения дилером уровня СтопЛевел на каждом новом тике. По тому же принципу сделайте отслеживание ваших ордеров.

В инит:
//---------------------------------------------------
int init()
{
   Level_old =MarketInfo(Symbol(), MODE_STOPLEVEL);
//.............. дальнейший код инит .................
   return;
}
//---------------------------------------------------
В старт:
//---------------------------------------------------
int start()
{
   Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL );    // Последнее значение уровня установки стопов
   if (Level_old!=Level_new)  {                       // Новое не равно старому, значит изменились условия
      Level_old=Level_new;                            // Новое запишем в "старое" для проверки на след. тике
// ............. действия, если новый уровень .......

   }
//.............. дальнейший код старт.................
   return;
}
 
IgorM:


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

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

И по поводу памяти. Память 4 Гб - разве мало ? Тем более при тестировании стратегии - я смотрел - её используется только 50-60 %.
 
volshebnik:
И по поводу памяти. Память 4 Гб - разве мало ? Тем более при тестировании стратегии - я смотрел - её используется только 50-60 %.
я так понял показанный ранее код это часть, может быть медленные места в другой части тоже есть
 
volshebnik:
И по поводу памяти. Память 4 Гб - разве мало ? Тем более при тестировании стратегии - я смотрел - её используется только 50-60 %.


  ну мы же не знаем, сколько может МТ4 использовать, да и 4Гб - в Win32 не может быть адресовано, нужна Win64, а к Win64 нужно и приложения 64-х разрядные, в МТ5 есть 64-х разрядный терминал, в МТ4 даже не в курсе

ЗЫ: не переусердствуйте с оптимизацией - появится лишняя увереность в своем коде. и не факт, что рынок захочет подстроиться под Ваши оптимальные параметры ;) 

 
Догнал... напутал со сравнением вещественного типа при нулевом значении...
 
artmedia70:

Вот так можно отследить изменения дилером уровня СтопЛевел на каждом новом тике. По тому же принципу сделайте отслеживание ваших ордеров.


Спасибо за подсказку! Действительно строки:

 if (Level_old!=Level_new)  {                       // Новое не равно старому, значит изменились условия
      Level_old=Level_new;  

формируют "фронт", т.е. изменение текущего состояния по отношению к предыдущему. Нужен параметр old_order. Спасибо

 
ikatsko:

Спасибо за подсказку! Действительно строки:

формируют "фронт", т.е. изменение текущего состояния по отношению к предыдущему. Нужен параметр old_order. Спасибо

Не за что - это ещё СК предложил...
 
Techno:
я так понял показанный ранее код это часть, может быть медленные места в другой части тоже есть
Эта часть считает на тиках. Все остальные расчёты только в начале каждой часовой свечи. Тормозила сильно графика и указанный Игорем недоработанный цикл. Может и есть медленные, там есть графика тоже - указываются номера свеч - эту графику убирать нежелательно - будет сложнее с анализом.
 
IgorM:


ну мы же не знаем, сколько может МТ4 использовать, да и 4Гб - в Win32 не может быть адресовано, нужна Win64, а к Win64 нужно и приложения 64-х разрядные, в МТ5 есть 64-х разрядный терминал, в МТ4 даже не в курсе

ЗЫ: не переусердствуйте с оптимизацией - появится лишняя увереность в своем коде. и не факт, что рынок захочет подстроиться под Ваши оптимальные параметры ;)

Да, Игорь, в 32-разрядной ОС используется максимум 3.14 Гб. У меня стоит 64-бит Windows 7. Терминал МТ4 является 32-х битным приложением, но в 64-х битной Windows 7 есть возможность поддержки 32-х битных приложений. Лишняя уверенность.... Пробую с перестраховкой ))
 

Подскажите, пожалуйста:

мы на дневной ТФ перенесли данные месячного ТФ 

ArrayCopySeries(TimeArray,MODE_TIME ,Symbol(),PERIOD_MN1); 

limit=Bars-counted_bars;

for(i=0,y=0;i<limit;i++)

if (Time[i]<TimeArray[y]) y++; 
{
        Month_P[i] = iMA(NULL, PERIOD_MN1, 3, 0, MODE_SMA, PRICE_TYPICAL, y+1);
}
А каким образом, теперь можно сравнить непосредственно данные именно с месячного чарта? Я предполагаю, что нужно брать Month_P [i] и Month_P [i+N], где N - количество баров на дневном ТФ, которые гарантированно перенесут нас на прошлый месячный бар. А каким образом точно определить это самое число N ?
Причина обращения: