Помощ за МА пресичане
-
https://fxdreema.com/shared/En9R1UAEd
Стреми се да правиш нещата с минимум повторения. Ако може да се използва един и същи блок за две или повече цели - така да бъде. Сега като видях твоя проект, супер много ми заприлича на проектите на един испанец дето от толкова копирания на блокове е направил към 700 блока и вече сървъра не иска да му генерира експерт

И добре че питаш нали, иначе аз може и да не се досетя за разни неща дето е добре да се направят. В случая, докато се чудих какъв пример да ти направя установих, че трябва да добавя някои елементарни блокчета за работа с обекти. Трябва си блокче за избор на обект по име, както и блокче за редактиране на текста. Гледам има блокче за редактиране на цвят, което е добре.
Та ако ги има тези блокчета ще стане по правилния начин. А именно, създаваш текстовия обект веднъж в "on Init" с определено име, след което където и когато трябва само го избираш по име и му редактираш каквото трябва, цвета или текста.
-
Така, добавихме ги тия неща. Това с избора на свещ по време и това за избор и редактиране (на текст) на обект по име.
-
Еха, нови две свежи попълнения
Ще влезнат в употреба.
Аз обаче сериозно зациклих с това закръгление, хем ми го обясни два пъти вече
Правя, струвам и не ми се получава, толко ли съм тъпо парче
Последния пример, който ми даде, си сложил две стойности, които излизат от променливата и на графиката си се джуркат екстра. Как обаче аз да вмъкна в това Normaliza... стойността, която излиза от формулата като Result...в моя пример https://fxdreema.com/shared/wCPYmBfcb
Пробвах с text, както ти ми посочи, но на графиката ми се изтипосва цялото NormalizeDouble(Result..., 2), а не променящи се цифри.
Ако ти е писнало от мен, не ми отговаряй, няма да се разсърдя
Между другото исках да те питам имаш ли желание някой път да кодираш индикатор по заявка
Знам, че си казвал, че не искаш да ставаш личен програмист на никой, но просто не познавам друг с такива умения. Или имаш ли някой познат който би искал да направи такова нещо, като не очаквам да е безплатно 
-
Функцията NormalizeDouble() можеш да я ползваш там дето можеш ръчно да я напишеш. Тези Formula... там така не можеш. Но резултатите от тези блокове, примерно Result4 пак е глобална променлива. Та можеш да я сложиш като NormalizeDouble(Result4, 2) в полето на Value -> Numeric. И бих препоръчал да даваш смислени имена и на тези ResultX.
Ти иначе вероятно си пробвал с Value -> String. При стринга е малко по-различно, винаги се огражда с кавички така: "текст". Но за улеснение на хората съм направил така че кавичките да се добавят после, при генерирането на кода. Което в същото време значи и ограничение при ползването на това поле, ако искаш да изградиш стринг по някаква формула. Но все тая, не ти трябва тази опция. И Numeric да подадеш, ще се изобрази, защото се конвертира в стринг в блока.
Аз не съм фрийлансър по убеждения. Имам известни проблеми ако трябва да работя за някой, изнервям се
Така че един ден просто реших да не приемам задачи от никой и за нищо. Хем аз да не изперквам, хем да не разочаровам човека. Иначе не съм и голям специалист по индикаторите да ти кажа, но най-вече защото реално не съм се интересувал от тях. Веднъж или два пъти съм си правил нещо елементарно, и очевидно от доста време отлагам да се занимая с тях по-сериозно, че отдавна питат за генератор на индикатори 
-
Е вече се получи, то нямаше и къде да ходи след толкова обяснения

Иначе за индикаторите, то голяма ли е разликата в кода между експерт и индикатор? Примерно аз тоя експерт, който съм го направил и който не търгува, а само показва някви неща на графиката, трудно ли ще е да се обърне на индикатор? Питам защото нали за експертите има ограничение по един на графика, а индикаторите можеш да ги накичиш здраво
-
Има разлика в архитектурата на кода. При индикатора имаш малко по-различен начален код, да го наречем темплейт. Иначе вътре в този темплейт можеш да използваш един и същи код за да начертаеш някой обект. Но индикатора по принцип чертае линии и хистограми без да пише код за това. Идеята там е да създадеш масив от стойности и да избереш начина по който да се изобрази - с линия, с хистограма, с единични обекти (стрелки, кръгчета, чудеса), в същия прозорец, на отделен прозорец. Не е голяма философия на който му се занимава. Можеш да вземеш един готов индикатор и да му преправиш математическата част. То на този принцип е пълно с всякакви най-вече ненужни индикатори

-
Здрасти, как си днес

Можеш ли да ме светнеш как мога да сравня резултатите от 8 формули. Примерно всеки резултат е някакво число и експерта да избере най-голямото или най-малкото от осемте. Нещо с блоковете не се сещам как да стане, а когато се случи така, обикновено ме открехваш на някоя магария
-
Тук доста зависи какви са тия числа. Нормално се търсят минимуми и максимуми на група еднотипни числа, които се намират в масив. Така разхвърляни и взети от разни места, без обща природа... не че е сложна работа, ами някак бакалска.
Май не е зле да замисля нещо с тия масиви, често ми задават такива въпроси за обработване на числа

-
Ами би ли погледнал експерта ми "Currency Strength EA". Може да ти се сторят много формулите, но всъщност са еднотипни. Идеята е да се изчисли силата на дадена валута спрямо другите валути. За целта взимам candle close(0) - candle open(0) за да видя пипсовете на + или - в момента за дадена двойка. Така проверявам примерно как се държи паунда срещу всичките му кросове и като събера candle close(0) - candle open(0) на всичките му кросове се получава дадено число, което е моментната сила на паунда. Така проверявам и за останалите мейджъри и тука вече искам експерта да види коя точно валута е най-силна и коя най-слаба. От там вече ще се решава как да се изтъргува тази информация.
Затова искам да намеря начин да сравня тези осем резултата от събиращите формули. -
При такива нужди, признавам си, нямам качествено решение
Това по принцип си е класическа работа за индикатор - да се занимава със сметки. Въпросните калкулации сигурно ще се запишат с 20 реда код там, а под формата на експерт виждаш как е. Най-доброто, а може би и най-лесно решение е да се направи индикатор. Освен ако няма вече такъв. -
От друга страна не си много подготвен като програмист

-
Когато някаква последователност от сметки ще се прави няколко пъти, тя се записва на едно място във функция (нещо като черна кутия) дето си има входове и изход. Задаваш входовете, пускаш я в действие и получаваш нужния резултат.
Тогава имаш тялото на тази фукнция записано веднъж някъде, а не копирано тук и там на 100 места. Въобще в програмирането една от най-лошите практики е едно и също парче код да е написано на две или повече места. И понеже генератора също е един вид програмиране, често го правят това. Резултата е десетки и стотици блокове, едва ли не невъзможност да се редактират в бъдеще, трудно откриване на проблеми и още по-трудно оправяне на проблеми, излишно изразходване на ресурси. -
След като има повтаряемост на действия, прави се масив и цикъл. Масива е щайга с всички необходими входни стойности, примерно имената на маркетите дето трябва да се изчислят. Цикъла се повтаря по веднъж за всяка стойност от тоя масив, а резултата се събира примерно в някоя променлива.
-
-
Е да, то и за не програмист като мен е ясно, че едно нещо повтарящо се осем пъти е по-добре да се направи в един масив, но друг е въпроса как това да стане на практика с блоковете
Лошото е, че още на стъпка №1 се спъвам, камо ли за следващите стъпки като определяне на силите на валутите и търгуване според тях. Май ще трябва да се захващам с MQL 
-
Остави го ти масива, но и блоковете не са ти наредени най-добре логически, използваш отделна променлива за всеки от тях... и така.
Първо бих ти препоръчал да провериш дали все пак няма такъв индикатор направен някъде. Има толкова индикатори - безплатни, платени, всякакви. Верно че аз като потърся някой никога не намирам точно каквото ми трябва, ама айде. После идва това с кода. Индикаторите по принцип са шаблони и на определено място пишеш калкулациите. Има там една такава особеност, да го направиш така че да не преизчислява всичко всеки път, а само прясната информация.
Иначе основната идея е да се напълнят едни масиви (за всеки буфер по един) с данни. Даже и да го разпишеш толкова подробно както е сега в експерта, пак става. Сметки, сметки, сметки - крайната стойност се записва в буфера. А за твоите сметки като гледам ти трябват две елементарни функции - iClose() и iOpen()
Ето и една тема дето са обяснили основните неща: http://book.mql4.com/samples/icustom Аз лично нямам никакъв интерес да пиша индикатори, но веднъж реших да пробвам да разпиша нещо, следвах в тая тема нещата и се получи, а даже ми беше и забавно. То заради това е пълно с индикатори из нета, защото се пишат относително лесно

http://prntscr.com/6qo7p7
http://img.prntscr.com/img?url=http://i.imgur.com/sPLvc7h.png -
ОК, мерси за информацията, ще се разровя да видя какво може да се измисли

-
Здрасти брат, опитвам да направя едно малко експертче и всичко май се получава, само едно нещо не мога да схвана. Бях задал профита ми да е 200% от стопа, с идеята експерта като изчисли стопа и го сложи, веднага да плесне и профита х2. Като го закачих експерта обаче и като пусна чакащата поръчка видях,че стопа е равен на профита (мерено от нивото на чакащата поръчка). Викам си ок, ще му дам 400%, но тогава вече става купон - всеки път ми слага профита на различно разстояние с тея 400% (пробвах два пъти и на всичкото отгоре въпреки, че и на села и на байа са еднакви процентите, единия профит го слага примерно на разстояние 5пъти, а другия 3пъти, нещо такова).Та нещо не мога да схвана как го изчислява профита спрямо стопа. Иначе самите чакащи поръчки и стоповете си ги слага винаги, където трябва. Става въпрос за експерта Крис.
Най сетне да попиша малко на български:) -
Оправен е проблема

-
Мерси, така вече е ок:) Още един въпрос - как мога да направя с блоковете, експерта да разрешава поръчка само в началото на всеки пет минути? Нещо като once per bar на M5, но в :00. Защото, нали ако сега му дам once per bar (M5) и ако се получи сигнал по средата на свещта, то той тогава ще я пусне, а няма да изчака до започване на следващата свещ.
Мерси и поздрави

-
Много зависи къде се намира "Once per bar". Ако е на топ ниво преди "Condition", тогава ще реагира на първия тик от свещта, иначе зависи от "Condition".
Сега ако настоваш за абсолютно точно време, т.е. да реагираш когато удари секундата на :00, тука навлизаме в едни интересни дълбини. Експертите по принцип се правят да реагират на тикове, то и няма смисъл от друго, щото принципно ако няма промяна в цената няма и смисъл от търговия. Не всеки път обаче би дошъл тик точно в :00. Въпреки това експерта може да се направи да реагира по време през този "on Timer" евент, обаче тогава възниква проблем с тестера. Първо, самата функция на евента OnTimer() не е направена да работи в тестов режим и второ, тестера си работи с неговите генерирани тикове и поне аз не съм успял досега да го вкарам в някакъв регулярен времеви цикъл. Просто като се пусне един while() цикъл в тестера и той замръзва в първия си тик.
-
Ами на мен не ми трябва чак толкова да сцепи секундата в :00, а просто дадена отворена поръчка като удари профита или стопа, да не пуска веднага две нови чакащи поръчки на предишната свещ, а да изчака настоящата да затвори и чак тогава да сложи двете чакащи поръчки. Защото сега, когато активната поръчка се затвори, експерта ще получи сигнал че няма никаква поръчка и веднага ще плесне две чакащи нови по средата на настоящата свещ. Един вид да му кажа да изчака до започването на новата свещ.
-
Малко е като електронна схема - https://fxdreema.com/shared/9po0PFDGb