fxDreema

    • Register
    • Login
    • Search
    • Back to the main page
    • Categories
    • Recent
    • Tags
    • Popular
    • Search

    Помощ за МА пресичане

    Questions & Answers
    2
    269
    145782
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      momosh last edited by

      Малко ме е срам да си призная, но сигурно към половин час се блещих да разбера защо така си ги навързал 😳
      Е все пак накрая го схванах, така че мерси, нямаше да се сетя да го направя така 🙂

      1 Reply Last reply Reply Quote 0
      • M
        momosh last edited by

        Здрасти брат, опитвам да компилирам Крис2, но ми изписва - ';' - expression expected. Нещо май с променливите омешах 🙂 Би ли погледнал.

        1 Reply Last reply Reply Quote 0
        • fxDreema
          fxDreema last edited by

          Отметката тук нещо пречи: http://prntscr.com/9f2tl7
          Но и без това не искаш да ползваш точно тея Terminal Variables, щото те не са това което си мислиш. Тия са някакви глобални за терминала, нещо като както са бисквитките в браузъра и всеки експерт има достъп до тях. Стават за прехвърляне на малка информация между експерти. Но това не са глобалните променливи за самия експерт. Вместо това просто трябва да заредиш тази променлива при "Value -> Numeric". А ако искаш да е входен параметър за експерта бих препоръчал да не е Variable, ами Constant. Без тия отметки.

          От дясната страна пък имаш розово такова. Тук специфичното е че е добра идея "For each Trade" да е сложен преди това, че да зареди там която или които поръчки трябва. Сега в момента ти го ползваш в другия клон на стратегията. Въпроса е че конкретно блок 18 ще ползва Стоп Лос от поръчката която е последно заредена във "For each Trade" или някой друг блок който зарежда поръчки, а това са голяма част от блоковете.

          1 Reply Last reply Reply Quote 0
          • M
            momosh last edited by

            Ок, оправих си нещата според това, което ми каза. От втората част на поста ти обаче се замислих за няколко неща:
            Първо, тъй като формулата ползва опция от in loop Trade/Order, трябва ли преди самият блок на формулата да има блок for each Trade? И понеже формулата взима stop loss от чакащата поръчка, предполагам че ще вземе от последната сложена поръчка. При мен обаче те са две, което не е такъв проблем, защото стоповете са им равни, но ако бяха различни, сигурно трябваше да направя две формули с блокове for each buy trade и for each sell trade. Правилна ли ми е логиката тука?

            Другото нещо, за което се замислих е за последователността на изчислението - stop loss - lot size. Понеже формулата е
            Lot = Risk/SL*10, където аз си задавам колко искам да рискувам (примерно 30$), а стоп лоса го взима от току що сложената поръчка. Този стоп всеки път ще е различен, защото се базира на high/low на предишната свещ. Последователността трябва да е - експерта изчислява размера на стопа, според него размера на лота и тогава слага поръчката. Ама реално дали става така и най-вече дали аз съм го направил така в моя експерт 🙂 Иначе дясната страна няма общо с това изчисление.

            ПП: Сега като го закачих в този му вид ми дава следната грешка:
            Untitled2.png


            Сори за поредната корекция на този пост, но нещо явно съм се вдъхновил 🙂 и имам два въпроса по един друг експерт - Daily pending. При него на всяка двойка слага чакащи поръчки над върха и под дъното на предишната свещ. Нищо сложно в направата, но не мога да разбера защо сел чакащите поръчки ги слага абсолютно точно според правилата, а почти всички бай ги слага където му скимне.
            И другото, направил съм блок за изтриване на чакащите в определен час, но не мога по никъв начин да го накарам да ги трие ( въртях ги по всевъзможен начин, пробвах и с вградената опция - expiration mode), но не става и не става.

            ......
            Untitled2.png

            1 Reply Last reply Reply Quote 0
            • fxDreema
              fxDreema last edited by

              Почти никой не разбира смисъла на "For each Trade". Всичко тръгва от факта, че в даден момент можеш да имаш няколко поръчки, не само една. Ако беше само една поръчка, никакви ядове - би била заредена автоматично през цялото време и би било лесно да се върти и суче всякак. Какво става ако имаш 10 поръчки? Слагаш блок "close" и какво трябва да следва - да се затвори една, да се затворят всички? Ами в какъв ред, от коя да започне?

              "For each Trade" зарежда поръчките една по една и за всяка от тях пуска следващите блокове. Само при едно достигане на входа на тоя блок изхода му може да се активира до толкова пъти колкото поръчки има. Тук трябва малко фантазия за да си ги представи нещата човек.

              Примерно "Delete pending orders" прави абсолютно същото - разбира колко чакащи поръчки има и започва да ги реди една след друга и да ги затваря. Така да се каже "Delete pending orders" има "For each Trade -> close" вътре в себе си.

              Подобно на тия маневри се случват в тия новите "Bucket..." блокове. Там обаче в "Bucket of..." се зареждат поръчките като цяла група, изхода се активира само веднъж, а после могат да се вземат изчислени стойности за тази група в Condition (и там каквото има за Buckets).

              1 Reply Last reply Reply Quote 0
              • fxDreema
                fxDreema last edited by

                http://prntscr.com/9fi2tb
                Настроил си за OCO поръчки => Sell блока ще създаде Sell + Buy поръчка. В следващия момент блок 4 няма да пропусне, защото вече съществува Buy поръчка. Тия "No trade" блокове, а и всички блокове са си напълно динамични - проверяват нещата всеки път и ако стане промяна някъде се отчита (както е и една от причините експерта да върви бавно). Иначе всичко се случва синхронно. Блок 6 се достига преди блок 4 в случая, но когато блок 6 се стартира той си прави едната поръчка, после другата и чак тогава приключва и оставя блок 4 да заработи.

                В MQL4 нещата са си синхронни по природа и от една страна така се работи по-лесно. Недостатъка на синхронните програми е само в това че като цяло процеса се случва по-бавно щото всяко нещо трябва да се изчаква. Ама и ти бая валутни двойки си подхванал, има експерта да чака... и имай предвид, че шанса да се случи грешка някъде нараства. А експерта е така направен, че при определен вид грешки да пробва отново, та може да изпадне в разни цикли 🙂 Ако ще го усложняваш още, май бих препоръчал да поразделиш малко нещата - няколко експерта на няколко валутни двойки.

                1 Reply Last reply Reply Quote 0
                • M
                  momosh last edited by

                  Ок, за втория експерт разбрах от къде е грешката. Относно първия, мисля че разбирам функцията на For each trade, но не ми беше ясно ако в самия condition блок избера нещо под loop, дали трябва да го слагам For each trade преди него. Викам си може да си го вградил вътре 🙂 А иначе за тоя zero devide нищо не спомена, или пък аз пак не разбрах нещо 🙂
                  Мерси за помощта 🙂

                  1 Reply Last reply Reply Quote 0
                  • fxDreema
                    fxDreema last edited by

                    Забравил съм за грешката. Случва се във Formula блока, делиш на нула щото SL там е нула, щото няма заредена поръчка за това SL. Вероятно не би имало грешка при реален тест понеже "For each Closed Trade" ще си гепи някоя поръчка от историята, но при тест в историята нямаш нищо и "For each Closed Trade" не може да зареди нищо. А и няма как да зареди, щото не може да се стигне до създаване на нова поръчка, щото грешката се случва преди тоя момент. А и се очакват чакащи поръчки дето кой знае кога ще станат затворени... А аз и идея си нямам на коя поръчка SL-а искаш да ползваш на това място.

                    1 Reply Last reply Reply Quote 0
                    • M
                      momosh last edited by

                      Еми то в момента, в който се плеснат тия две чакащи поръчки, стопа става известен, щото се базира на high и low на предишната свещ. И тъй като двете поръчки са симетрични, то поне би трябвало стоповете да са им равни. И аз именно тоя стоп искам в изчисленията на формулата. Но да, разбирам, че първото изчисление става още преди да са сложени чакащите поръчки и за това дава 0. Иначе по този начин, както съм го направил, формулата ще вземе ли един от стоповете на двете чакащи, мен тва всъщност не ми беше ясно.

                      1 Reply Last reply Reply Quote 0
                      • fxDreema
                        fxDreema last edited by

                        Написах го вече, сигурно съм го писал и назад в темата поне 3 пъти, пиша го постоянно и го повтарям на кой ли не - когато се ползват розови блокчета с имена дето почват с малка буква, при MT4/MQL4 е силно препоръчително, да не кажа задължително да има един от "For each..." блокчетата някъде над него

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 10
                        • 11
                        • 12
                        • 13
                        • 14
                        • 14 / 14
                        • First post
                          Last post

                        Online Users

                        E
                        F
                        E
                        G
                        M
                        C
                        E
                        L
                        K
                        E
                        S
                        E
                        P
                        G

                        35
                        Online

                        146.7k
                        Users

                        22.4k
                        Topics

                        122.6k
                        Posts

                        Powered by NodeBB Forums | Contributors