fxDreema

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

    Затваряне на поръчки

    Questions & Answers
    3
    34
    11438
    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.
    • B
      bgvulk last edited by

      Здравейте всички 🙂

      Първо да поздравя автора на генератора, много ми харесва и досега просто си цъках от време на време, но преди седмица видях във форума коментари на български и това ме окуражи да започна да се занимавам сериозно с това. Досега съм разглеждал много варианти на експерти и стратегии за форекс, но просто като хоби.
      Това са ми първи стъпки в програмирането и тепърва започвам да разучавам логиката на работа на блоковете. Почнах с отварянето на поръчки след сигнал, много зле. Обаче благодарение на коментарите ви с momosh нещата се подредиха горе долу 😆 .

      Сега по същество. В момента се опитвам да се науча да затварям поръчките правилно като използвам различните трейлинг стопове за група поръчки и за всеки отделен ордер. Обаче в един момент ако има отворени 10 или 15 поръчки купува и продава едновременно и да кажем, че тренда тръгва надолу и покупките започват да трупат загуба (не ползвам стопове за сега). Мен това не ми харесва и затова искам да сглобя един алгоритъм със примерна логика:

      1. Взима ордера с най голяма загуба и ако тя е повече примерно от 10 единици валута или пипса тогава... (да приемем че П-печалба, З-загуба)
      2. Взима най-печелившия ордер(П1) и пресмята П1-З>=+2 валутни единици или пипса, ако е вярно затваря и двете поръчки, ако не тогава...
      3. Взима втория най-печеливш ордер и пресмята П1+П2-З>=+2, ако е вярно затваря и трите поръчки, ако не тогава...продължава в същия дух.

      Има вариант да не се изпълни това условие и си мисля как работи частичното затваряне на поръчката.... но това после, а пък и от това което прочетох ако работя с лот 0.01 няма да стане.

      Поздрави

      1 Reply Last reply Reply Quote 0
      • B
        bgvulk last edited by

        Сетих се още нещо, как да покажа в графиката да се вижда примерно баланса, equity или друго? Искам като си правя тестове да виждам какво става с парите 😏

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

          За такова нещо направо си трябва специален блок, подобен на trailing stop, дори с малко повече код. Да се направи с блокове е още по-засукано. Но дори да го имаш, дали би работило както трябва?
          Какво става ако нямаш достатъчно П поръчки които да покрият загубите? Ако се работи само с Buy или само със Sell, според мен такава тактика ще работи само понякога. Би трябвало да работи добре ако постоянно се отварят разнотипови поръчки на различни нива.
          Ако работиш само с Buy например и имаш 2-3 поръчки на печалба и отвориш още една - то тя ще се затвори веднага понеже по начало е на загуба и П-З ще е изпълнено.
          Та малко ми е под въпрос дали тази тактика не е едно от нещата, които първоначално изглеждат окей, ама на практика не се получават?

          Частичното затваряне е направено така че старата поръчка се затваря и се отваря нова със същите параметри, освен лота и тикета. Не съм виждал лот по-нисък от 0.01, така че това няма как да се затвори частично.

          Има някъде един блок "Comment on chart" - там редиш какво трябва да се изобрази. Иначе в custom блоковете трябва да имаш два примерни, които общо взето изобразяват такива неща. Но там трябва да знаеш малко MQL4 ако искаш да ги препрограмираш.

          1 Reply Last reply Reply Quote 0
          • B
            bgvulk last edited by

            Благодаря за бързия отговор. Идеята е да са отворени едновременно различни поръчки бай и сел 20-30. Например по някакъв сигнал веднъж се отваря бай, втори път сел, трети път пак сел и така в един момент са 20-30 поръчки и те ще са на различни нива защото сигнала се е появявал на различни нива. Тогава при движение на цената непрекъснато загубата и печалбата ще варира за всеки отделен ордер и в един момент да кажем 2 бай + 1 сел, които са на печалба са повече като стойност от най-губещия ордер и тогава тази група се затваря. Целта на това упражнение е да държа ордерите по-близо до текущата цена, а също така по този начин ще намаля броя им. Аз по скоро го виждам не като нов блок, а като опция на "Check current unrealized profit" незнам де не разбирам, но това ми е идеята. На "Check current unrealized profit" не му харесвам това, че ако имам 20-30 ордера и тръгна да ги затварям става много бавно в реално време и когато тръгна да ги затварям уж на печалба, като тегля чертата да не се окаже, че са на загуба 😮

            Поздрави

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

              Едва ли някой харесва бавното затваряне, ама такъв си е принципа на MT - не можеш да пратиш заявка да се затворят едновременно поръчка 1, 3, 4, 8 и 17, заявка се праща само за затваряне на една бройка, и се чака за резултата от това. Въобще всяко действие трябва да се изчаква.

              Иначе за твоята стратегия трябва:

              Да се проверят и сортират поръчките по печалба и да се запазят в масив.
              Като знаем профита на най-губещата поръчка започваме да събираме профитите на печелившите, като междувременно се запомняме кои печеливши поръчки сме проверили.
              Когато събрания профит се окаже достатъчен преминаваме към затваряне на избраните печеливши и най-губещата поръчка.
              И всичко това трябва да се случва само когато броя на поръчките е повече от някаква бройка, примерно 10, и то ако не се лъжа трябва да има представители на Buy и Sell.

              Това твоя идея ли е, или има такъв вид стратегия по принцип? Звучи като нещо универсално (като трейлинг стоп) и би трябвало вече някой да се е сетил и да му е дал име.

              1 Reply Last reply Reply Quote 0
              • B
                bgvulk last edited by

                Ами форекс ми е хоби и от година може и повече просто си разглеждам и си пробвам експерти и стратегии, но откакто видях този генератор, че е български реших, че това е шанс да създам собствен експерт. От опита, който имам съм стигнал до извода, че ако търгуваш при тренд е добре, но когато пазара е в застой всичко се скапва. Нека да опитам да обясня каква ми е логиката. При застой ако използваме пресичане на 3 ЕМА с 6 ЕМА и в този момент се отварят много поръчки бай и сел. Ама за всяка отворена поръчка има спред примерно и -2 пипса на брокера и ако се отворят 30 поръчки това са -60 пипса. Приемаме, че в един момент пазара тръгва в тренд и да приемем хипотетично, че поръчките са по равно. В този случай тези -60 пипса ще са постоянна величина. Обаче сигналите за отваряне на поръчки вече са верни, защото има тренд и 31, 32, 33-та поръчки са на печалба така би трябвало да е по логика. Така поради това, че пазара е бил в застой най-губещата и най-печелившата позиции трябва да са с не много голяма разлика 2,3-5 пипса. Логиката ми е, че ако разликата след пресичането на 3 ЕМА с 6 ЕМА и поръчката има 3 пипса тейк профит минус 2 пипса спред от брокера тогава поръчката ще е на плюс 1 пипс и ще е затворена. От тук означава, че тези 20-30 поръчки са с разлика в рамките на 2-3 пипса. Сега логика на затварянето ордера с най-голяма загуба примерно е -20 пипса, а ордера с най голяма печалба ще е с разлика 3-4 пипса или да кажем, че е +16 пипса това е разлика от -4 пипса. Логично ако вземем да кажем най-губещия -20 плюс най-печелившия +16 плюс най-малко печелившия +5 пипса това е +1 пипс. От тук си мисля, че няма да се пресмятат повече от 3,4,5 ордера максимум. Това ще намали ордерите и ако се ползва блока "Check current unrealized profit" по някое време, то тогава няма да се затварят 30 поръчки ами доста по-малко. Колкото по-малко поръчки толкова по-малък шанс да ги затвориш на загуба. Мисля, че логиката ми е правилна, не съм измислил всичко може би добре, но ако смятате, че разсъждавам във вярна посока може да се помисли за един блок с такава логика. Даже сега ми хрумна, че наистина може да бъде някакъв трейлинг стоп както предложихте. Сега за параметрите не съм сигурен, но ще си помисля.

                😁

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

                  Ето един пример, виж как работи и дали е това което трябва: http://fxdreema.com/shared/oAYwpGZlb
                  Резултата е малко като мартингейл - всичко работи добре докато не се натрупат поръчки с прекалено големи загуби.
                  Това е кода на блока:
                  [code=mql4:2pfzjzcy]// input parameters
                  double MinTrades=10;
                  double ProfitNeeded=10;

                  // local parameters
                  int TotalOrders=OrdersTotal();
                  int pos=0;
                  bool next=true;

                  // Create empty local database (every time)
                  double profits_list[]; ArrayResize(profits_list,0);
                  int tickets_list[]; ArrayResize(tickets_list,0);
                  int tickets_to_close_list[]; ArrayResize(tickets_to_close_list,0);

                  // Collect data - array sorted by profit (profitable last)
                  for (pos=0; pos<TotalOrders; pos++) {
                  if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
                  //if (FilterOrderBy(OrdersScope,OrdersGroup, SymbolScope,SYMBOL, BuysOrSells)) {

                       int ticket=attrTicket();
                       double profit=attrProfit()+attrSwap()+attrCommission();
                       
                       int size=ArraySize(tickets_list);
                       ArrayResize(tickets_list,size+1);
                       ArrayResize(profits_list,size+1);
                       tickets_list**
                  

                  правиш нов блок в http://fxdreema.com/studio/MQL4, слагаш кода и редактираш най-горните два параметъра дето и двата съм ги сложил 10. Могат да се направят като входни за блока, но да кажем че това е алфа тест 🙂

                  1 Reply Last reply Reply Quote 0
                  • B
                    bgvulk last edited by

                    Вече е много късно през нощта или много рано сутринта, ама не можах да се сдържа да тествам кода ти. Резултатите са умопомрачителни. Първия тест е с постоянен лот 0.01, а вторият е с 1 процент от баланса. Много обичам да тествам експертите с минимален капитал, защото целта е с малко инвестиции да изкараш някой лев 😁 (с 10 000 долара всеки знае)
                    Този път обаче надминах всичко и благодарение на твоята работа може да сглобим нещо добро. Вече съм убеден, че такъв блок е необходим и много полезен. Имам VPS сървър и ще кача да тествам за седмица две, защото на теста съм милионер вече хаха... Ето и част от двата теста... Лек ден
                    http://i40.tinypic.com/33elumd.jpg
                    http://i42.tinypic.com/2gufb4k.jpg

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

                      Ехееее, явно само аз не мога да докарам такива резултати. За всеки случай такива резултати обикновено са съмнителни и неточни, защото в определени условия тестера може да подвежда, и това умело се използва от някои продавачи на експерти. Най-ниската резолюция (така да се каже) е 1 минута, така че всеки тик е създаден от тестера по някаква логика, която явно зависи от размера и формата на свещта.

                      Най-общо, не вярвай на резултати при които си използвал:

                      • много малки стопове, по-малки от средния размер на М1 свещите.
                      • трейлинг стоп с много малки стопове.
                      • система, използваща секунди време - например това да засичаш колко пипса са изминати за 5 секунди. При този случай не вярвай дори ако използваш някой плъгин за реални тикове.

                      Те затова са направили Ticks Data Suite и Tickstory. Първото е платено, второто е безплатно, и ако работиш с много малки стопове е добре да тестваш експерта с тези 🙂

                      1 Reply Last reply Reply Quote 0
                      • B
                        bgvulk last edited by

                        Тестовете са с Tickstory данни, не ползвам свалени от сървъра на брокера. Знам, че резултат няма нищо общо с реалната търговия, затова съм го качил на демо сметка и тогава да видим какво ще стане.

                        1 Reply Last reply Reply Quote 0
                        • B
                          bgvulk last edited by

                          Нещо не ме свърта и си мисля за две неща... за повече мисля, но едно по едно.

                          1. Мислех си има ли значение в какъв ред се затварят поръчките, но стигнах до извода, че какъвто и да е редът като мърда цената на някъде резултатът е еднакъв.
                          2. Да предположим, че съм много лаком....
                            Блока изчислява, че най-губещия ордер и три печеливши са повече от +10 единици и затваря поръчките и това е ОК. Какво ще стане, ако блока затвори само загубата и постави трейлинг стопове на печелившите. Да предположим, че цената се премести не в наша полза тогава се активират трейлинг стоповете и резултата е почти същия, но ако цената продължи с 5 пипса в наша полза три ордера по 5 пипса всеки са 15 пипса 😁 . След това блока подхваща следващия най-губещ ордер и пак започва да пресмята, но без тези 3 ордера, а със следващите и така нататък... Какво мислиш за това? Недостатъка който Аз намирам е, че по този начин ще остават много ордери, а това ми се иска да избегна, защото повече ордери, повече време, по-голяма разлика в резултата след затварянето.
                            Много ми се иска с твоя помощ и ако някой чете това да даде идея и да създадем един умен блок за управление и затваряне на поръчките. Лесно се отварят поръчки, въпроса е какво да ги правим след това. Имам и други работи ама едно по едно, първо кажи какво мислиш за горното.

                          Лека нощ

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

                            Държа да спомена, че не искам да се вкарвам в ролята на личен програмист, но ако нещо е полезно като цяло (за генератора) - ще го разгледам.
                            Интересна е тази функционалност, става въпрос за елиминиране на поръчки оставени без стопове, но поне при моите тестове (ако не използвам други функции за затваряне) се достига до едно натрупване на отворени поръчки дето не могат да достигнат до затваряне и в един момент не могат да се отворят и нови. Добавят се де, но по такъв начин че локват противоположните, и се получава натрупване на отворени лотове които ако ги затваряш в реален акаунт сигурно става страшно. Е, то зависи от параметрите, но аз пробвам средни такива, и най-вероятно не може да се направи 100% печелившо. Резултата при мен на тестера е такъв: http://i.imgur.com/MML9uBS.png
                            За трейлинг стоп не мога да давам съвети, нещо не съм му фен 🙂

                            1 Reply Last reply Reply Quote 0
                            • B
                              bgvulk last edited by

                              Добро утро.
                              Първо искам да се извиня, защото сигурно съм прекалил с моите глупости, затова ще се огранича само със следния пример.

                              За да избегнем загубата на всички пари от акаунта да предположим следната ситуация, отворени са 10 поръчки по сигнали с лот 0.01 (за да смятаме по лесно), да кажем 8 бай и 2 сел. Цената върви надолу, а загубата расте няма сигнал за печеливши поръчки с което загубата расте. Предполагаме, че блока прави така:

                              Пресмята загубата във всеки един момент и когато достигне 30% от баланса (или колкото му зададем) пресмята разликата в лотовете, а в нашия случай е -0.06 сел и пуска поръчки с 3 сел лота по 0.02, по този начин загубата става константа и %(#FF0000)[спира отварянето на поръчки по сигнали] и започва да управлява само отворените поръчки. В един момент условието по затварянето ще е изпълнено, ще се затворят няколко поръчки и ако загубата е под 30% оставя експерта да си продължи нормалната работа, ако не пак заключва поръчките по този начин. Нарочно не трябва да пуска само една поръчка с лот 0.06 сел защото ако цената тръгне в посока бай сбора от 8 бай с лот 0.01 ще е на плюс ехеее... Целта с това е да върне нормалната работа по бързо. С това упражнение винаги ще е изпълнено условието по затварянето на поръчките, а загубата няма да е над посочения процент и няма да затрие акаунта. Дано има смисъл в това което говоря ⚡ Мисля, че такъв блок ще е много полезен, защото какъвто и експерт да си направят хората ще ползват този блок за затваряне. Търси какво ми куца в логиката, може пък нещо да не съм измислил добре.

                              Лек ден

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

                                Играя си и аз тук, и не виждам защо трябва да се чака поръчките да станат 10 за да се действа. Получават се добри резултати и когато се елиминират две-три, но често се достига един момент когато се натрупват незатворени загуби и на края на теста ги изтипосва.

                                Промених малко скрипта, реших че е може да затваря печелившите поръчки като започва от най-малката... за да не се трупат като бройка. Май така дава по-добри резултати:
                                [code=mql4:3d6atxy7]// input parameters
                                double MinTrades=2;
                                //double ProfitNeeded=200;

                                // local parameters
                                int TotalOrders=OrdersTotal();
                                int pos=0;
                                bool next=true;

                                // Create empty local database (every time)
                                double profits_list[]; ArrayResize(profits_list,0);
                                int tickets_list[]; ArrayResize(tickets_list,0);
                                int tickets_to_close_list[]; ArrayResize(tickets_to_close_list,0);

                                // Collect data - array sorted by profit (profitable last)
                                for (pos=0; pos<TotalOrders; pos++) {
                                if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
                                //if (FilterOrderBy(OrdersScope,OrdersGroup, SymbolScope,SYMBOL, BuysOrSells)) {

                                     int ticket=attrTicket();
                                     double profit=attrProfit()+attrSwap()+attrCommission();
                                     
                                     int size=ArraySize(tickets_list);
                                     ArrayResize(tickets_list,size+1);
                                     ArrayResize(profits_list,size+1);
                                     tickets_list**
                                
                                1 Reply Last reply Reply Quote 0
                                • M
                                  momosh last edited by

                                  Здравей бгвълк,
                                  радвам се да видя българска реч тук 🙂 Аз също бях пробвал някои стратегии с бързо затваряне на поръчките, но както админа казва, все стигах до ситуация, в която се натрупваха доста поръчки и работата излизаше извън контрол. Твоята стратегия обаче е различнa, ще я пробвам да видя дали ще ми хрумне нещо. Ти сигналите от МА 3 и 6 ли получаваш?

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    bgvulk last edited by

                                    Здравейте

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

                                    • най-много използван брой печеливши поръчки - 3

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

                                    momosh обикновенно ползвам кръстосване на ема 3 и 6 или 21 с 34 или барове, като ги комбинирам с ема 50 или 200 за да зная накъде върви тренда - винаги гледам да търгувам по посока на тренда.

                                    Лек ден и пипсовете да са с вас 😆

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      bgvulk last edited by

                                      Здравей fxDreema в кода, който направи има ли възможност да вмъкнеш още една опция да не взима повече от определен брой поръчки и евентуално, ако може да ги направиш входни за блока, защото не мога да ги оптимизирам при тест.
                                      Благодаря и лек ден

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

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

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

                                          Напоследък се опитвам да направя една система, която следи различни валутни двойки и ми се върти нещо да се опитам да вкарам и тази на бгвълк. Казвате че системата затваря най-губещата и печелившите поръчки, ако са на профит. А не е ли по-добре да затвори най- губещата и само тези от печелившите, които я покриват. Ако има и други печеливши те да си останат, за да покрият други губещи поръчки?

                                          1 Reply Last reply Reply Quote 0
                                          • 1
                                          • 2
                                          • 1 / 2
                                          • First post
                                            Last post

                                          Online Users

                                          L
                                          K
                                          H
                                          N

                                          23
                                          Online

                                          146.7k
                                          Users

                                          22.4k
                                          Topics

                                          122.6k
                                          Posts

                                          Powered by NodeBB Forums | Contributors