ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Как се създава и тества forex система. Expert Advisors и бектестове на системи за автоматична търговия.
jssj
Мнения: 3770
Регистриран: 08 юни 2011, 20:07
63 получени
10 дадени
Контакти:

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от jssj » 08 окт 2017, 10:41

jssj » 04 окт 2017, 20:06
Двете книги са :" Математика управления капиталом" на РАЛЬФ ВИНС и Димитър Цаков-"Джобен наръчник за производство на домашна ракия" Ще направим експеримент. Коя книга колко пъти ще бъде изтеглена. :lol:

Математика управления капиталом.rar
(1.95 MБ) Свален 6 пъти

Димитър Цаков-Джобен наръчник за производство на домашна ракия.rar
(6.49 MБ) Свален 30 пъти
Шест пъти срещу тридесет. Желев, това да вземеш да го направиш форум за алкохолици ! :-?
http://www.forexjssj.com
"Ваша жизнь на 10% зависит от того, что с вами происходит, и на 90% от того, как вы реагируете на эти события."

Потребителски аватар
knestin
Мнения: 159
Регистриран: 28 яну 2015, 14:33
4 получени
Контакти:

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от knestin » 08 окт 2017, 17:52

Здравейте трейдъри.
Някой дали може да ми помогне за следното :
По зададена стойност на някой индикатор /например когато RSI = 55/ да получа съобщение например на посочен от мен мейл в платформата MT4 ? Или е нужен експерт ?
Не можеш да решиш проблемите с мисленето, с което си ги създал !

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 09 окт 2017, 13:13

knestin написа:
08 окт 2017, 17:52
Здравейте трейдъри.
Някой дали може да ми помогне за следното :
По зададена стойност на някой индикатор /например когато RSI = 55/ да получа съобщение например на посочен от мен мейл в платформата MT4 ? Или е нужен експерт ?
лично аз не се занимавам с таблети и съобщениа ама срещу30 дол все някой руснак ще ти го направи

https://www.mql5.com/ru/job

другия вариант е някой от колегите да се смили над тебе и да ти го направи безплатно
Форекса е оръжие за масово поразяване

Потребителски аватар
knestin
Мнения: 159
Регистриран: 28 яну 2015, 14:33
4 получени
Контакти:

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от knestin » 09 окт 2017, 16:07

:grin: Благодаря за линка.
Не можеш да решиш проблемите с мисленето, с което си ги създал !

bvg
Мнения: 733
Регистриран: 06 май 2014, 21:33
31 получени
7 дадени
Контакти:

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от bvg » 18 окт 2017, 12:28

bvg написа:
03 окт 2017, 15:15

Пазарите изобилстват от зависимости и зад на пръв поглед случайно генерираните цени, прозират много от тях, но те не са видими с невъоръжено око. По принцип споделям само с много тесен кръг хора резултатите които откривам, обикновено с хора които също споделят с мен и то качествен материал с доказателства. Ще публикувам резултат от една зависимост тъй като не я експлоатирам и възвращаемостта и е около 15% годишно което не ме удовлетворява. Правя го за да докажа, че зависимости има много и тази е много далеч от най-добрата която съм открил. ПМО-то на следната система е със 7,4% в полза на трейдъра след разходите за търговия. В прикачения файл са публукувани сделките ден за ден с графика, включени разходи за търговия и марджин за последните 12 години.

http://dox.bg/files/dw?a=eff0802b21

Само за редовните съфорумци:

Още една нелоша зависимост, при 5 работни дена назад(т.е. ако днес започва вторник се гледа предходния вторник) има положителна корелация между бара тогава с бара който ще се образува днес. Както знаем има обратна корелация между днешния и бара от предходния ден, комбинацията от двете(логическо "И") подобрява резутата доста. след плащането на разходите остават около 20% годишно.

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 27 ное 2017, 18:10

Въх ! Покрай старите моми на Матеев ,тая тема я забравихме
Искам да попитам Някой не знае ли как може да се заобиколи
#property indicator_chart_window
или
#property indicator_separate_window
Тоест имаме данни които да се изнесат във
#property indicator_separate_window
На базата на тези вече изнесени данни , да изчислим и маркираме местата за вход примерно със стрелкички,в основната графика
#property indicator_chart_window
Някак си двете директиви
#property indicator_separate_window
и
#property indicator_chart_window

не щат да стоят заедно на едно место в един код
Форекса е оръжие за масово поразяване

vgc
Мнения: 1385
Регистриран: 10 дек 2009, 10:18
16 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от vgc » 27 ное 2017, 18:18

saxsten написа:
27 ное 2017, 18:10
Искам да попитам Някой не знае ли как може да се заобиколи
#property indicator_chart_window
или
#property indicator_separate_window
Тоест имаме данни които да се изнесат във
#property indicator_separate_window
На базата на тези вече изнесени данни , да изчислим и маркираме местата за вход примерно със стрелкички,в основната графика
#property indicator_chart_window
Пишеш си индикатора със #property indicator_separate_window , а на чарта рисуваш със ObjectCreate, като си измисляш тактика за именуване с префикс. Никой не те спира ако щеш даже и сделки да сключваш през индикатора, камо ли да размазваш графичните прозорци При махане на идикатора е добре да разкараш каквото си "посадил" с ObjectDeleteAll използвайки въпросният префикс.
Форексът е полезен като ХОБИ

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 28 ное 2017, 03:18

vgc написа:
27 ное 2017, 18:18
saxsten написа:
27 ное 2017, 18:10
Искам да попитам Някой не знае ли как може да се заобиколи
#property indicator_chart_window
или
#property indicator_separate_window
Тоест имаме данни които да се изнесат във
#property indicator_separate_window
На базата на тези вече изнесени данни , да изчислим и маркираме местата за вход примерно със стрелкички,в основната графика
#property indicator_chart_window
Пишеш си индикатора със #property indicator_separate_window , а на чарта рисуваш със ObjectCreate, като си измисляш тактика за именуване с префикс. Никой не те спира ако щеш даже и сделки да сключваш през индикатора, камо ли да размазваш графичните прозорци При махане на идикатора е добре да разкараш каквото си "посадил" с ObjectDeleteAll използвайки въпросният префикс.
Туй малко мазало става с ObjectCreate, и ObjectDeleteAll
Мъчих се да го вкарам в отделна самостоятелна функция ама мрънка че
#property indicator_chart_window
трябвало да бъде в глобалната област
а бе опитите продължават :wink:
Форекса е оръжие за масово поразяване

Mateev
Мнения: 201
Регистриран: 02 окт 2017, 10:04
30 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 28 ное 2017, 05:04

ObjectCreate и ObjectDeleteAll си работят перфектно, ако ги използваш по правилния начин и ги създаваш/триеш на правилното място в кода. Аз лично ги трия в OnDeinit, но анализирам състоянието на параметъра reason, за да знам кога да трия и кога да ги оставя. Освен това запомням в глобалната област последното състояние на reason и при следващия OnInit също анализирам състоянието на reason, за да знам кое да го инициализирам отново и кое да го оставя със старите стойности, защото ми трябват.

Колкото до #property параметрите - няма как да слагаш противоречиви такива, както и да ги сменяш по време на изпълнението на програмата. Това е така защото това са директиви на компилатора, водещи до слагането или не на различни видове код в програмата. Този код се слага на етап компилиране, а не на етап изпълнение на програмата.

Така че не се мъчи - няма как да излъжеш дявола с подмяната на някое #Property вътре в кода на програмата. Послушай vgc и се опитай правилно да манипулираш обектите на графиката. Това може да се прави безпроблемно от името на който си поискаш произволен chart в структурата на който си поискаш друг произволен chart.

Аз дори се изхитрявам от името на един chart да отварям/затварям други чартове и да им управлявам параметрите и визуализацията. Използвам тази техника с цел отваряне на нови нишки (всеки нов Chart създава нова собствена нишка). В тези нишки изпълнявам разни бавни процеси с цел да не тормозя текущия експерт по текущия Chart. Например във външен Chart изтеглям операциите за запис/четене на диск, или пък операциите за глобално логване на всички тикове по всички финансови инструменти. Това пък го правя с един зациклен експерт, който върти през 1 милисекунда всички символи и проверява има ли по тях нов тик.

Като цяло логиката на работа на един експерт можеш да я разхвърляш в няколко подчинени експерта, работещи в различни нишки върху различни чартове. Тези експерти могат да си "приказват" помежду си посредством областа за глобални променливи. Можеш дори да прихващаш Chart Event-и и през глобалните променливи да ги "показваш" на други експерти по други чартове.

Всичките тези "хитринки" се използват много лесно ако преминеш на обектно-ориентирано програмиране. Губиш например 1 ден за усвояването на дадена хитринка, и след това затваряш нейния код в някакъв клас. И от този момент нататък хитринката започваш да я използваш под път и над път, губейки само по няколко секунди за нейното влагане в поредния експерт.
Последна промяна от Mateev на 28 ное 2017, 05:54, променено общо 1 път.

Mateev
Мнения: 201
Регистриран: 02 окт 2017, 10:04
30 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 28 ное 2017, 05:50

Най-голямата обърквация при писане на експерти настъпва с автоматичната инициализация на променливите при инициализация на даден експерт. Да, има такава автоматична инициализация на всички променливи, но тя се извършва само веднъж при тръгване на експерта. Функцията OnInit обаче се стартира много пъти - например при всяка смяна на таймфрейма, смяна на символа, смяна на акаунта, смяна на темплейта и при прекомпилацията на програмата, ако е активен MetaEditor-а.

При тези междинни инициализации се извиква функцията OnDeinit и след това OnInit, и ако нещо си писал в тях, то се изпълнява, но глобалните променливи, които се инициализират автоматично, си остават със старите стойности. И тука започват мазалите, за които ти споменаваш.

Има 2 метода да се оправиш в този хаос:
1. Сам се грижиш за инициализацията/деинициализацията на всяка една променлива, която използваш.
2. Анализираш причината за DeInit, която ти се казва в променливата reason, и на базата на това знание вече можеш коректно да деинициализираш/изтриеш или пък да оставяш неизтрито това, което ще ти трябва при следващото стартиране.

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 28 ное 2017, 16:45

vgc написа:
27 ное 2017, 18:18


Пишеш си индикатора със #property indicator_separate_window , а на чарта рисуваш със ObjectCreate, като си измисляш тактика за именуване с префикс. Никой не те спира ако щеш даже и сделки да сключваш през индикатора, камо ли да размазваш графичните прозорци При махане на идикатора е добре да разкараш каквото си "посадил" с ObjectDeleteAll използвайки въпросният префикс.
VGC кажи нещо за условната компилация
#define separate
#ifdef separate
#property indicator_separate_window
#else
#property indicator_chart_window
#endif
Форекса е оръжие за масово поразяване

Mateev
Мнения: 201
Регистриран: 02 окт 2017, 10:04
30 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 28 ное 2017, 17:33

Това ще работи, но ако в процеса на компилация смениш стойноста на #define, пак ще възникне грешка.

Имам чувството, че не разбираш, че даден индикатор трябва да се прикачи към ЕДИН ЕДИНСТВЕН ЧАРТ. Няма как да го закачиш едновременно към 2 чарта, и да рисуваш по Default, защото това създава конфликт на ниво компилатор. Трябва MetaQuotes да са го предвидили това като функционалност, но тогава нямаше контрола да се извършва посредством #property.

Аз не знам защо продължаваш да си губиш времето в опити да постигнеш нещо, което е невъзможно да бъде постигнато. Вече ти беше казан начин как да си разрешиш проблема, но ти продължаваш да упорстваш. Щом имаш време за губене - губи го, но аз не мога да разбера защо го правиш.

Предложения от тебе метод може би ще работи само ако с #define директивата укажеш на компилатора да компилира два различни индикатора, прикачени към два различни чарта. С един единствен индикатор посмъртно няма как да се получи, защото във всеки един чарт има по един единствен указател към всеки един прикачен буфер на всеки един индикатор. Няма как в този указател едновременно да запишеш два адреса от паметта. Както и да го въртиш, ще получиш грешка в момента, в който компилатора се опита да презапише вече валиден адрес към някой буфер на някой индикатор.

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 28 ное 2017, 20:22

Матеев ,изобщо не си на ясно и по добре не се меси
Форекса е оръжие за масово поразяване

vgc
Мнения: 1385
Регистриран: 10 дек 2009, 10:18
16 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от vgc » 29 ное 2017, 10:50

saxsten написа:
28 ное 2017, 16:45
VGC кажи нещо за условната компилация
#define separate
#ifdef separate
#property indicator_separate_window
#else
#property indicator_chart_window
#endif
Ами Матеев се опитал да ти обясни, че ако идеята ти е да сменяш динамично мястото на индикатора, то точно това няма как да стане. Ти си на ти с руския и ето тук са описани кои свойста може да смяняш в движение: https://docs.mql4.com/ru/constants/indi ... ty_integer
Относно условната компилация, то тя би ти била полезна единствено ако използваш някакви mqh библиотеки, чието поведение искаш да управляваш при тяхното "инклудване". Иначе ето и описнието и за нея на рашън: https://docs.mql4.com/ru/basis/preprose ... ompilation
Форексът е полезен като ХОБИ

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 29 ное 2017, 12:41

Не ща да му сменям местото бре
Искам да чертае в който прозорец му кажа и когато му кажа
Защо си мислите че местото на индикатора непременно трябва да е в някой прозорец, или да е в графика или да е извън нея.
...........................................................
Прочее това за сега не го плюе компилатора:

#define Ind
#ifdef Ind
#property indicator_chart_window
// код, находящийся здесь, компилируется, если identifier уже был определен для препроцессора в команде #define.
#endif
Форекса е оръжие за масово поразяване

Потребителски аватар
alphaomega
Мнения: 131
Регистриран: 12 апр 2011, 22:09
3 получени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от alphaomega » 29 ное 2017, 13:53

saxsten написа:
29 ное 2017, 12:41
Не ща да му сменям местото бре
Искам да чертае в който прозорец му кажа и когато му кажа
Защо си мислите че местото на индикатора непременно трябва да е в някой прозорец, или да е в графика или да е извън нея.
...........................................................
Прочее това за сега не го плюе компилатора:

#define Ind
#ifdef Ind
#property indicator_chart_window
// код, находящийся здесь, компилируется, если identifier уже был определен для препроцессора в команде #define.
#endif
#property indicator_chart_window това не ти трябва! Изобщо #property можеш да го елиминираш от кода си.

Програмата си я напиши като експерт и използвай ObjectCreate и ObjectDelete и другите функции за работа с графични обекти за да създадеш каквито ти трябват стрелки, линии, текст, няма значение какво.
Експерта можеш да го сложиш на която си искаш графика. Няма значение даже на кой инструмент е.
Използваш ChartID(); за да вземеш идентификатора на която графика искаш да се чертаят обектите.
Като алтернатива може да използваш и ChartOpen() да отвориш нова графика със точния инструмент и таймфрейм и да чартаеш на нея.

Bessen
Мнения: 15
Регистриран: 03 юни 2013, 14:46
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Bessen » 29 ное 2017, 17:05

#property strict
#property indicator_separate_window

int OnInit()
{
return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
double x=Bid;
ObjectCreate(0,"A",OBJ_ARROW_DOWN,0,TimeCurrent(),x);
ObjectSetInteger(0,"A",OBJPROP_WIDTH,10);
return(rates_total);
}

void OnDeinit(const int reason)
{
ObjectDelete(0,"A");
}

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 29 ное 2017, 21:26

Благодаря!
Но ако сте погледнали по горе за сега се въздържам от ObjectCreate защото след него все трябва да се мете с ObjectDelete, а моят принцип е когато правя код той да е дуракоустойчив
Не можем да знаем какво ще се случи в главата на потребителя -такова че да ни сбъгяса кода
С други думи докато не изчерпя възможностите на условното компилиране се въздържам да чертая стрелкички чрез ObjectCreate
Форекса е оръжие за масово поразяване

Mateev
Мнения: 201
Регистриран: 02 окт 2017, 10:04
30 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 29 ное 2017, 21:48

А с какво ще ти помогне условното компилиране?
Дори и с него ако чертаеш някъде нещо, пак ще се наложи да се грижиш и за неговото изтриване/

Bessen
Мнения: 15
Регистриран: 03 юни 2013, 14:46
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Bessen » 29 ное 2017, 22:58

Метенето може да е и по желание.

#property strict
#property indicator_separate_window

input bool Delete_Objects=true;

int OnInit()
{
return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
double x=Bid;
ObjectCreate(0,"A",OBJ_ARROW_DOWN,0,TimeCurrent(),x);
ObjectSetInteger(0,"A",OBJPROP_WIDTH,10);
return(rates_total);
}

void OnDeinit(const int reason)
{
if(Delete_Objects)ObjectDelete(0,"A");
}

Отговори

Върни се в “FOREX СИГНАЛИ, СИСТЕМИ И СТРАТЕГИИ”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 2 госта