Ответ
 
Опции темы
Старый 02.01.2014, 11:30   #2221 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Да что ты всё про бейсик вспоминаешь? Может ты будешь удивлён, но я ни одной программы не написал на С или С++. И вообще не пытался. И до изучения mql тоже работал только с бейсиком. Ничего сложного в этом нет, это условие такое-же как и в бейсике if((Q1 = 0 or A > B) and (Q2 = 0 or C < D) and Е > F)
Очень хотелось-бы чтобы не-было в этом примере грубых синтаксических ошибок. Всё-таки уже несколько лет не вспоминал о бейсике.
Да, это наверное его ещё бадун не отпустил. Если он писал на васике или на любом другом языке, то имеет хоть какое то представление он булевой алгебре. Во всяком случае элементарное условие смог бы собрать.
Наверняка бадун во всём виноват.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (02.01.2014)
Старый 02.01.2014, 11:51   #2222 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от Milord Посмотреть сообщение
ну да, удивлен!))
не только я мучаюсь оказывается с переходом...)
можешь подсказать как с реверсом написать код?)вижу светлая голова, приятно видеть умных людей на сайте...)
Если в твоих словах оставить только выделенное жирным, то будет точней сказано.
Ну а про реверс тебе уже ответили.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (02.01.2014)
Старый 02.01.2014, 12:19   #2223 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Конкурс в честь Нового Года, кто напишет самый непонятный код?)


Сообщение от qqmber Посмотреть сообщение
Конечно хочу, у нас Новый Год или нет?!
Код 100% рабочий, но в реале я бы не стал так делать, а написал бы как Ugar выше показал.
может тогда в честь Нового Года объявим конкурс неофициальный на самый непонятный код из 10 строк, с комментами?)))
по типу этого(взято из инета )
PHP код:
private void _1(_1 _2
        { 
          while(
_2._1()) 
          { 
            
_1 _2._1(true); 
            
_1._1(); 
            
_1(_1); 
           } 
        } 
или вот примерчик:
PHP код:
#include <iostream>
using namespace std;
 
#define ___(__) char(__)
 
int main(int _char **____)
{
    
cout << ___((_=1_<<=6_+0x09));
    
cout << ___((_=1_<<=5_+0x00));
    
cout << ___((_=1_<<=6_+0x0C));
    
cout << ___((_=1_<<=6_+0x29));
    
cout << ___((_=1_<<=6_+0x2B));
    
cout << ___((_=1_<<=6_+0x25));
    
cout << ___((_=1_<<=5_+0x00));
    
cout << ___((_=1_<<=6_+0x03));
    
cout << ___((_=1_<<=5_+0x0B));
    
cout << ___((_=1_<<=5_+0x0B));
 
    return 
0;

скажу честно - смотрю на сии перлы "яко баран на новые ворота")))

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 02.01.2014 в 12:53.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.01.2014, 14:13   #2224 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию А так будет работать???


Сообщение от Ugar Посмотреть сообщение
Странный вопрос. Это же простая логика.
if((Q1==0 || A>B) && (Q2==0 || C<D) && E>F)
{
OrderSend(...);
}
а если сделать наоборот, логика работы не изменится?
PHP код:
if((Q1==&& A>B) || (Q2==&& C<D) || E>F)
{
OrderSend(...);


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.01.2014, 15:24   #2225 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от Milord Посмотреть сообщение
а если сделать наоборот, логика работы не изменится?
PHP код:
if((Q1==&& A>B) || (Q2==&& C<D) || E>F)
{
OrderSend(...);

Изменится кардинально.
Ведь если последняя часть условия E > F будет выполнена, то первые две части условия никак не влияют на общий результат при любых значениях A, B, C, D, Q1 и Q2.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (02.01.2014)
Старый 02.01.2014, 16:30   #2226 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Milord Посмотреть сообщение
может тогда в честь Нового Года объявим конкурс неофициальный на самый непонятный код из 10 строк, с комментами?)))
Конкурс? Да ещё и новогодний? А приз какой?
Что бы в новогодние праздники, программист начал напрягать мозги, приз должен быть такой, что бы увидев его программист аж протрезвел.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (02.01.2014), Milord (02.01.2014)
Старый 02.01.2014, 17:00   #2227 (permalink)
Интересующийся
 
Аватар для skyger
 
Регистрация: 02.08.2013
Сообщений: 3
Репутация: 1
skyger
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 6
С новым годом комрады! Счастья, здоровья и регулярных профитов!
Тут на медни попытался смастерить простенькую сову на тиках дабы понять физику процесса, однако опыт оказался неудачным. Будьте так любезны наставте на путь истинный, где, чего и как я упустил, и что мне сделать чтоб он заработал.

Скрытый текст

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#property copyright "и так понятно"
#property link "конечно моё"

extern int MA1=10;
extern int MA2=15;

extern double LotTrend = 1;
extern int TP=12;
extern int SL=12;

double ExtBuffer[], S1, S2, tickB;
int A=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

tickB=MarketInfo(Symbol(),MODE_BID);

if ( A>250) A=0;
A++;
ExtBuffer[A]=tickB;

S1=iMAOnArray(ExtBuffer,200,MA1,0,MODE_SMA,0);
S2=iMAOnArray(ExtBuffer,200,MA2,0,MODE_SMA,0);
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)
{
if (S1>S2)
{
OrderSend(Symbol(),OP_BUY,LotTrend,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
}
if (S1<S2)
{
OrderSend(Symbol(),OP_SELL,LotTrend,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);
}
}



return(0);
}


//+---------------------конец фильма---------------------------------------------+
[свернуть]

Последний раз редактировалось NSerega; 02.01.2014 в 18:59.
skyger вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.01.2014, 22:59   #2228 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Надо это дело обмозговать)


Сообщение от Ugar Посмотреть сообщение
Конкурс? Да ещё и новогодний? А приз какой?
Что бы в новогодние праздники, программист начал напрягать мозги, приз должен быть такой, что бы увидев его программист аж протрезвел.
надо раскинуть мозгами,может Юля подключится и призы выделит?))

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2014, 08:43   #2229 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от skyger Посмотреть сообщение
С новым годом комрады! Счастья, здоровья и регулярных профитов!
Тут на медни попытался смастерить простенькую сову на тиках дабы понять физику процесса, однако опыт оказался неудачным. Будьте так любезны наставте на путь истинный, где, чего и как я упустил, и что мне сделать чтоб он заработал.

Скрытый текст

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#property copyright "и так понятно"
#property link "конечно моё"

extern int MA1=10;
extern int MA2=15;

extern double LotTrend = 1;
extern int TP=12;
extern int SL=12;

double ExtBuffer[], S1, S2, tickB;
int A=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

tickB=MarketInfo(Symbol(),MODE_BID);

if ( A>250) A=0;
A++;
ExtBuffer[A]=tickB;

S1=iMAOnArray(ExtBuffer,200,MA1,0,MODE_SMA,0);
S2=iMAOnArray(ExtBuffer,200,MA2,0,MODE_SMA,0);
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)
{
if (S1>S2)
{
OrderSend(Symbol(),OP_BUY,LotTrend,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green);
}
if (S1<S2)
{
OrderSend(Symbol(),OP_SELL,LotTrend,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green);
}
}



return(0);
}


//+---------------------конец фильма---------------------------------------------+
[свернуть]
Наверное ты плохо разобрался с массивами и iMAOnArray()

Функция iMAOnArray() используется с динамическими массивами и считает среднее значение последних ячеек массива, а у тебя массив статический и когда ты обнуляешь счётчик массива то запись происходит в начало массива постепенно заменяя прежние значения новыми.
В твоём примере надо обеспечить запись нового значения в конец массива со сдвигом всех значений на позицию вверх с потерей нулевого элемента массива.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
skyger (03.01.2014)
Старый 03.01.2014, 08:56   #2230 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от Milord Посмотреть сообщение
надо раскинуть мозгами,может Юля подключится и призы выделит?))
Только если уж код непонятный, то и комментов в нём не должно быть. Если с комментами, какой же он тогда непонятный.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2014, 12:07   #2231 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Ugar Посмотреть сообщение
Только если уж код непонятный, то и комментов в нём не должно быть. Если с комментами, какой же он тогда непонятный.
логично)))
я примерно знаю какой код вы напишите, с 10-ю нулями, как показывали))

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2014, 13:21   #2232 (permalink)
Интересующийся
 
Аватар для skyger
 
Регистрация: 02.08.2013
Сообщений: 3
Репутация: 1
skyger
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 6
Сообщение от AlexeyVik Посмотреть сообщение
Наверное ты плохо разобрался с массивами и iMAOnArray()

Функция iMAOnArray() используется с динамическими массивами и считает среднее значение последних ячеек массива, а у тебя массив статический и когда ты обнуляешь счётчик массива то запись происходит в начало массива постепенно заменяя прежние значения новыми.
В твоём примере надо обеспечить запись нового значения в конец массива со сдвигом всех значений на позицию вверх с потерей нулевого элемента массива.
Большое спасибо за ответ , но это внесло еще большую сумятицу в мою неокрепшую после праздников психику. Как я понимаю сначала создается массив тик[]=Bid; где идет запись тиков как и баров от свежайшего нулевого тика, который только что только поступил, до наиболее старшего-древнего, который был самым первым. Поэтому как я понял для использования ф-ции iMAOnArray() необходимо произвести инверсию подсчета или же ввести свою ф-цию расчета среднего. Дальше как я понимаю необходимо организовать цикл , ибо любой расчет средней сопровождается циклом. Ну а далее лигические условия торговли. Короче надо еще пошевелить мозгами.
skyger вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2014, 13:51   #2233 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от skyger Посмотреть сообщение
Большое спасибо за ответ , но это внесло еще большую сумятицу в мою неокрепшую после праздников психику. Как я понимаю сначала создается массив тик[]=Bid; где идет запись тиков как и баров от свежайшего нулевого тика, который только что только поступил, до наиболее старшего-древнего, который был самым первым. Поэтому как я понял для использования ф-ции iMAOnArray() необходимо произвести инверсию подсчета или же ввести свою ф-цию расчета среднего. Дальше как я понимаю необходимо организовать цикл , ибо любой расчет средней сопровождается циклом. Ну а далее лигические условия торговли. Короче надо еще пошевелить мозгами.
Восстанавливай здоровье и обрати внимание, что размер массива нигде не указан, так что на самом деле ничего у тебя не создается.
Алексей ключевую идею дал, делай движущееся "окно" во времени и снимай с него средние с нужным периодом. Я бы даже не стал iMAOnArray() вызывать, проще и понятнее самому посчитать.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
AlexeyVik (03.01.2014)
Старый 03.01.2014, 14:34   #2234 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,529
Репутация: 3649
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,118
Поблагодарили 3,653 раз(а) в 1,472 сообщениях
Поинты: 2007
Сообщение от qqmber Посмотреть сообщение
Восстанавливай здоровье и обрати внимание, что размер массива нигде не указан, так что на самом деле ничего у тебя не создается.
Алексей ключевую идею дал, делай движущееся "окно" во времени и снимай с него средние с нужным периодом. Я бы даже не стал iMAOnArray() вызывать, проще и понятнее самому посчитать.
А может и зря. Функция быстрей цикла. Просто перед использованием iMAOnArray() надо поменять направление индексации. Или сделать не так как я сначала говорил. Ошибся не тщательно обдумав. Если функция iMAOnArray() работает от нулевого индекса на указанную глубину, то заполняя массив, при поступлении нового тика, все элементы массива надо сдвигать на единицу в сторону увеличения индекса, а новый тик писать в нулевой.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2014, 16:58   #2235 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от AlexeyVik Посмотреть сообщение
А может и зря. Функция быстрей цикла. Просто перед использованием iMAOnArray() надо поменять направление индексации. Или сделать не так как я сначала говорил. Ошибся не тщательно обдумав. Если функция iMAOnArray() работает от нулевого индекса на указанную глубину, то заполняя массив, при поступлении нового тика, все элементы массива надо сдвигать на единицу в сторону увеличения индекса, а новый тик писать в нулевой.
iMAOnArray() вообще капризная штука, не всегда правильно работает, и уж точно не быстрее прямого расчета среднего. Разность двух машек никаких циклов не требует, у нее элементарная рекурсивная форма есть.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
skyger (03.01.2014)
Старый 03.01.2014, 17:52   #2236 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от AlexeyVik Посмотреть сообщение
А может и зря. Функция быстрей цикла.
Тебе может понравиться принт вот этого скрипта. Брось на любой график, где есть несколько тысяч баров.

Скрытый текст

Код:
#include <stdlib.mqh>
double B[],fma[],cma[];

int start() {
int i,t;
   ArrayResize(B,Bars);
   ArrayResize(fma,Bars);
   ArrayResize(cma,Bars);
   ArraySetAsSeries(B,true);
   for(i=Bars; i>0; i--) B[i]=Close[i];

   t=GetTickCount();
   for(i=Bars; i>0; i--) c(i);
   Print ("SimpleCode exec time: ", GetTickCount()-t);

   t=GetTickCount();
   for(i=Bars; i>0; i--) f(i);
   Print ("iMAOnArray exec time: ",GetTickCount()-t);
   
   for(i=0; i<Bars; i++) {
      if(!CompareDoubles(fma[i],cma[i])) {
         Alert("Fail @",i,":",fma[i]+"!="+cma[i]);
         break;
      }
   }
}

void f(int P) {
   for(int i=Bars; i>0; i--) fma[i]=iMAOnArray(B,0,P,0,0,i);
}

void c(int P) {
   for(int i=Bars; i>0; i--) cma[i]=cma[i+1]+(B[i]-B[i+P])/P;
}
[свернуть]
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
AlexeyVik (03.01.2014), Milord (03.01.2014)
Старый 03.01.2014, 18:01   #2237 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1966
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,895 раз(а) в 1,071 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
iMAOnArray() вообще капризная штука, не всегда правильно работает, и уж точно не быстрее прямого расчета среднего. Разность двух машек никаких циклов не требует, у нее элементарная рекурсивная форма есть.
У iMAOnArray() есть преимущество, легко переключить метод усреднения.
По скорости не знаю, не мерил. А вот глюков не замечал, хотя пользую не часто.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
AlexeyVik (03.01.2014)
Старый 03.01.2014, 18:42   #2238 (permalink)
Интересующийся
 
Аватар для skyger
 
Регистрация: 02.08.2013
Сообщений: 3
Репутация: 1
skyger
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 6
Сообщение от qqmber Посмотреть сообщение
Восстанавливай здоровье и обрати внимание, что размер массива нигде не указан, так что на самом деле ничего у тебя не создается.
Алексей ключевую идею дал, делай движущееся "окно" во времени и снимай с него средние с нужным периодом. Я бы даже не стал iMAOnArray() вызывать, проще и понятнее самому посчитать.
Спасибо за подсказку, я только начал изучать MQL4 , многих вещей не понимаю, так беру примеры и пытаюсь понять логику. Вот придумал себе задачку, ковыряюсь по-немногу, могу и важное пропустить, в книгах ведь не все пишут делайраз, делай два.
Касательно самостоятельного расчета мувингов в одном из индикаторов нашел такой код:

double TickSMA(double array[],int per)
{
double Sum = 0;
for(int i = 0;i < per;i++) Sum += array[i];
return(Sum/per);
}
думаю подойдет. Или вы имели , что более продвинутое? Сложнее я пока не потяну мозгами, пока.
skyger вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2014, 19:19   #2239 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от qqmber Посмотреть сообщение
Тебе может понравиться принт вот этого скрипта. Брось на любой график, где есть несколько тысяч баров.

Скрытый текст

Код:
#include <stdlib.mqh>
double B[],fma[],cma[];

int start() {
int i,t;
   ArrayResize(B,Bars);
   ArrayResize(fma,Bars);
   ArrayResize(cma,Bars);
   ArraySetAsSeries(B,true);
   for(i=Bars; i>0; i--) B[i]=Close[i];

   t=GetTickCount();
   for(i=Bars; i>0; i--) c(i);
   Print ("SimpleCode exec time: ", GetTickCount()-t);

   t=GetTickCount();
   for(i=Bars; i>0; i--) f(i);
   Print ("iMAOnArray exec time: ",GetTickCount()-t);
   
   for(i=0; i<Bars; i++) {
      if(!CompareDoubles(fma[i],cma[i])) {
         Alert("Fail @",i,":",fma[i]+"!="+cma[i]);
         break;
      }
   }
}

void f(int P) {
   for(int i=Bars; i>0; i--) fma[i]=iMAOnArray(B,0,P,0,0,i);
}

void c(int P) {
   for(int i=Bars; i>0; i--) cma[i]=cma[i+1]+(B[i]-B[i+P])/P;
}
[свернуть]
что скрипт делает, если в кратце???

P.S. - ВСЕХ С НОВЫМ ГОДОМ!!!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 03.01.2014 в 19:22.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2014, 19:25   #2240 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 830
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 844 раз(а) в 555 сообщениях
Поинты: 1310
Цитата:
что скрипт делает, если в кратце???
Меряет скорость исполнения для iMAonArray и для простого суммирования с делением на количество слагаемых
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (03.01.2014)
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 06:02. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO