To say why something does not work we must know how it should work. In the case I don't know what is the idea. But nevermind, to check if and when any block passes, use "Draw arrow" - this is the simplest way that I often use.
Posts made by fxDreema
-
RE: Count "n" bars, then passposted in Questions & Answers
-
RE: Помощ за МА пресичанеposted in Questions & Answers
//double TotalProfit; // махни коментара за да използваш променливата като локална, за тест TotalProfit=0; // нулиране на променливата int midnight=StrToTime("00:00"); int total=OrdersHistoryTotal(); for (int pos=total-1; pos>=0; pos--) { // за всяка затворена поръчка... if (!OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)) {continue;} // не може да се зареди, преминаваме към следващата if (OrderMagicNumber()!=MagicStart) {continue;} // MagicStart не е същия, преминаваме към следващата if (OrderCloseTime()<midnight) {break;} // Ако поръчката е стара цикъла приключва тук TotalProfit=TotalProfit+OrderProfit()+OrderSwap()+OrderCommission(); // и ако за избраната поръчка сме стигнали до тук, прибавяме нейния профит към променливата } //Comment(TotalProfit); // махни коментара за да видиш стойността на променливата, за тестTotalProfit променливата която събира профитите. Тука става въпрос за всички поръчки пуснати от тоя експерт (със съответния MagicStart, който е входен параметър и си го има).
TotalProfit си я дефинирай като Variable, иначе за тест можеш да махнеш коментара (//) от първия и последния ред.Ми ей това е - double Promenliva дефинира локална променлива, която ще бъде използвана във функцията. Всеки блок е представен от функция. Ако във функцията трябва да се използва променлива, която не е дефинирана като локална, тогава се търси глобална, която е дефинирана извън функцията. В fxDreema такива променливи са Variables. В последния код дето съм показал на bgvulk едната променлива съм си я дефинирал в моя проект като глобална, така че съм я махнал като локална. Махни коментара пред нея (//) и вече ще е дефинирана като локална.
В тоя трейлинг стоп маркета е текущия (празно поле), и ако не е GBPUSD не би трябвало да работи.
-
RE: Помощ за МА пресичанеposted in Questions & Answers
-
Няма такъв блок, но може да се направи по някакъв начин. Примерно един лууп в който се събират профитите от поръчките с Close Time по-голям от времето на 00:00 - за това време съм добавил "Time" някъде из "Value" и може да се вземе от там. На практика трябва да се сумират профитите на всички поръчки с Close Time след 00:00 часа. Времето се изразява в int стойност в ей такъв формат: http://www.epochconverter.com/ - примерно 1385564527.
Или в "on Trade" да се събират профитите в променлива и да се нулира променливата всеки ден. Но по принцип най-кратко би било да се напише в код, и явно трябва да постегна малко онази част от генератора дето се правят блокове
-
Някой по-елементарен пример нямаш ли
А явно трябва и да помисля как да не се използват копия на едни и същи блокове, че това в програмирането не е много добра практика. -
За кода най-горе има две входни променливи, ама аз си играх с него и в моя проект едната променлива ми е дефинирана във Variables вместо в кода, и в кода съм я направил като коментар.
-
-
RE: object on chartposted in Bug Reports
I need more details.
In any case, I was not updated MQL4/MQL5 code from weeks maybe, because now I'm working locally for some update. And I just tested this one, it seems to work: http://fxdreema.com/shared/WBF288Gvc -
RE: Затваряне на поръчкиposted in Questions & Answers
Играя си и аз тук, и не виждам защо трябва да се чака поръчките да станат 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** -
RE: Count "n" bars, then passposted in Questions & Answers
Try this and you will see when Once per bar passes. It's when a new candle is created, because the block is executed on every tick (it's under "on Tick" event) and it checks if the current candle is new for the block.
Also, right-click on it and hit "Information". Well, this seems to not working on the shared project, but you can do it in your profile.
-
RE: EA with pattern candlestickposted in Questions & Answers
But if you can find some indicator to do this, it will be better. From long time ago I was thinking about removing this block from the generator, I think it's too complex and I don't like it very much

-
RE: Затваряне на поръчкиposted in Questions & Answers
Държа да спомена, че не искам да се вкарвам в ролята на личен програмист, но ако нещо е полезно като цяло (за генератора) - ще го разгледам.
Интересна е тази функционалност, става въпрос за елиминиране на поръчки оставени без стопове, но поне при моите тестове (ако не използвам други функции за затваряне) се достига до едно натрупване на отворени поръчки дето не могат да достигнат до затваряне и в един момент не могат да се отворят и нови. Добавят се де, но по такъв начин че локват противоположните, и се получава натрупване на отворени лотове които ако ги затваряш в реален акаунт сигурно става страшно. Е, то зависи от параметрите, но аз пробвам средни такива, и най-вероятно не може да се направи 100% печелившо. Резултата при мен на тестера е такъв: http://i.imgur.com/MML9uBS.png
За трейлинг стоп не мога да давам съвети, нещо не съм му фен
-
RE: EA with pattern candlestickposted in Questions & Answers
Well, I tried to make it, but I got very little signals from pattern similar to this: http://fxdreema.com/shared/iH0ljOJNd
In this example, for middle 3 candles I set High and Low levels to be everywhere in a certain limit. Their Open and Close levels are free as well. In short - any 3 bull candles within this limit will be matched. For the last sell candle only Close is matched. -
RE: trailing pending order not workingposted in Bug Reports
I added option "Dynamic level". I'm not sure if it's good idea to be used that way, but... try it. Here is a little example: http://fxdreema.com/shared/n44Y9Lkgb
-
RE: trailing pending order not workingposted in Bug Reports
Dynamic size (in pips) means that the value to enter must be in pips format - something like 10, 20, 30... Lowest price is in price format - something like 1,3625.
-
RE: Count "n" bars, then passposted in Questions & Answers
Depending on the situation:
- Once per bar - If trade... - Count n...
or - Once per bar - Count n... - If trade...
- Once per bar - If trade... - Count n...
-
RE: Затваряне на поръчкиposted in Questions & Answers
Ехееее, явно само аз не мога да докарам такива резултати. За всеки случай такива резултати обикновено са съмнителни и неточни, защото в определени условия тестера може да подвежда, и това умело се използва от някои продавачи на експерти. Най-ниската резолюция (така да се каже) е 1 минута, така че всеки тик е създаден от тестера по някаква логика, която явно зависи от размера и формата на свещта.
Най-общо, не вярвай на резултати при които си използвал:
- много малки стопове, по-малки от средния размер на М1 свещите.
- трейлинг стоп с много малки стопове.
- система, използваща секунди време - например това да засичаш колко пипса са изминати за 5 секунди. При този случай не вярвай дори ако използваш някой плъгин за реални тикове.
Те затова са направили Ticks Data Suite и Tickstory. Първото е платено, второто е безплатно, и ако работиш с много малки стопове е добре да тестваш експерта с тези

-
RE: Затваряне на поръчкиposted in Questions & Answers
Ето един пример, виж как работи и дали е това което трябва: 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. Могат да се направят като входни за блока, но да кажем че това е алфа тест

-
RE: Помощ за МА пресичанеposted in Questions & Answers
Ами така де, ти му даваш ниво на трейлинг стопа, което ниво не се променя цял ден, затова модифицира поръчките в 0:00 когато нивото се сменява.
-
RE: Затваряне на поръчкиposted in Questions & Answers
Едва ли някой харесва бавното затваряне, ама такъв си е принципа на MT - не можеш да пратиш заявка да се затворят едновременно поръчка 1, 3, 4, 8 и 17, заявка се праща само за затваряне на една бройка, и се чака за резултата от това. Въобще всяко действие трябва да се изчаква.
Иначе за твоята стратегия трябва:
Да се проверят и сортират поръчките по печалба и да се запазят в масив.
Като знаем профита на най-губещата поръчка започваме да събираме профитите на печелившите, като междувременно се запомняме кои печеливши поръчки сме проверили.
Когато събрания профит се окаже достатъчен преминаваме към затваряне на избраните печеливши и най-губещата поръчка.
И всичко това трябва да се случва само когато броя на поръчките е повече от някаква бройка, примерно 10, и то ако не се лъжа трябва да има представители на Buy и Sell.Това твоя идея ли е, или има такъв вид стратегия по принцип? Звучи като нещо универсално (като трейлинг стоп) и би трябвало вече някой да се е сетил и да му е дал име.
-
RE: Затваряне на поръчкиposted in Questions & Answers
За такова нещо направо си трябва специален блок, подобен на trailing stop, дори с малко повече код. Да се направи с блокове е още по-засукано. Но дори да го имаш, дали би работило както трябва?
Какво става ако нямаш достатъчно П поръчки които да покрият загубите? Ако се работи само с Buy или само със Sell, според мен такава тактика ще работи само понякога. Би трябвало да работи добре ако постоянно се отварят разнотипови поръчки на различни нива.
Ако работиш само с Buy например и имаш 2-3 поръчки на печалба и отвориш още една - то тя ще се затвори веднага понеже по начало е на загуба и П-З ще е изпълнено.
Та малко ми е под въпрос дали тази тактика не е едно от нещата, които първоначално изглеждат окей, ама на практика не се получават?Частичното затваряне е направено така че старата поръчка се затваря и се отваря нова със същите параметри, освен лота и тикета. Не съм виждал лот по-нисък от 0.01, така че това няма как да се затвори частично.
Има някъде един блок "Comment on chart" - там редиш какво трябва да се изобрази. Иначе в custom блоковете трябва да имаш два примерни, които общо взето изобразяват такива неща. Но там трябва да знаеш малко MQL4 ако искаш да ги препрограмираш.
-
RE: Помощ за МА пресичанеposted in Questions & Answers
Виждам че в 0:00 се модифицира стопа, което би трябвало да е ок в случая, защото в трейлинг стоп блока имаш Daily таймфрейм за средно ниво на предишната свещ, значи през целия ден когато и да изчисляваш стопа, все ще е същия, а стопа не се модифицира със същата стойност.
Не си пречат, трейлинг стоп блока си слага стопа където си знае без да се интересува къде е бил. -
RE: Помощ за МА пресичанеposted in Questions & Answers
Да, това би трябвало да работи. Сложи и една поръчка и пробвай, за всеки случай. Луповете са правене на една и съща логика последователно за всяка една налична поръчка, минала филтъра. Това го има вътре в блока за затваряне на поръчки например, а с тези розовите блокове е по-отворено, тъй че да може да се бърника по-детайлно в нещата. ОИначе трябва да направя много блокове или такива с много опции за да покрия всякакви сценарии. Малко повече въображение трябва за розовите блокове.
-
RE: Problem with custom indicator "open error"posted in Bug Reports
Oh, it looks like MT5 shows not the real variable names, but they "friendly" names. In mq5 these are written as a comment just after the variable definitions and they can contain any text. Try with some names close to these, but containing only latin letters, numbers and "" and starting with "" or a latin letter.