AntFX 6,474 Share Posted October 2, 2018 (edited) 1 час назад, sviter сказал: Здраствуйте! Помогите с формулой! Нужно мне сделать следующее....Нужно узнать среднюю цену между ордерами....Конкретнее...Открылся у меня к примеру ордер на BUY с лотом в 0.1 с ТР в (допустим)100 пунктов, если цена пошла в другую сторону на 50 пунктов, то открывается еще один ордер на BUY, но уже с лотом в (допустим)0.5 и уже с ТР в (допустим)10 пунктов....так вот проблема в этом как расчитать сумму с первого ордера, по цене и количеству пунктов, что бы второй ордер рассчитывался по формуле и перекрывал первый.....и сумма лота и ТР....кароче такой своеобразный сеточник средняя цена по открытым однонаправленным ордерам по одной паре: double MeanPrice(string symbol){ double summ=0, lots=0, mean=0; for(int i=0; i<OrdersTotal(); i++) if(OrderSelect(i) && OrderSymbol()==symbol && OrderType()<2){ summ+=OrderProfit()*OrderLots(); lots+=OrderLots(); } if(lots>0) mean=summ/lots; return(mean); } Edited October 2, 2018 by AntFX Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 2, 2018 1 час назад, AntFX сказал: средняя цена по открытым ордерам по одной паре: double MeanPrice(string symbol){ double summ=0, lots=0, mean=0; for(int i=0; i<OrdersTotal(); i++) if(OrderSelect(i) && OrderSymbol()==symbol && OrderType()<2){ summ+=OrderProfit()*OrderLots(); lots+=OrderLots(); } if(lots>0) mean=summ/lots; return(mean); } Смею догадываться что формула будет 0.1 * спред / 50 пунктов ???? Это я про то как будет выщитываться второй ордер, в зависимости от первого, через количество пунктов Quote Link to post Share on other sites
AntFX 6,474 Share Posted October 2, 2018 1 минуту назад, sviter сказал: Смею догадываться что формула будет 0.1 * спред / 50 пунктов ???? Это я про то как будет выщитываться второй ордер, в зависимости от первого, через количество пунктов Это формуле по уже открытым ордерам считает и спред не имеет значения Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 2, 2018 14 минут назад, AntFX сказал: Это формуле по уже открытым ордерам считает и спред не имеет значения тогда подскажите формулу пожалуйста... как мне выщитать какой будет второй ордер через 50 пунктов, по принципу сетки, что бы он перекрывал первый Quote Link to post Share on other sites
AntFX 6,474 Share Posted October 2, 2018 12 минут назад, sviter сказал: тогда подскажите формулу пожалуйста... как мне выщитать какой будет второй ордер через 50 пунктов, по принципу сетки, что бы он перекрывал первый Так Вам нужно перекрытие по кол-ву лотов или по величине ТП? Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 2, 2018 (edited) 10 минут назад, AntFX сказал: Так Вам нужно перекрытие по кол-ву лотов или по величине ТП? Мне нужно и так и так....как делает обычный сеточник с мартингейлом.... только что бы второй ордер увечичивался не сразу в 2 раза типа, а от количества указанных пунктов между ордерами... По логике если ордер считается в пунктах....сколько пунктов прошел, столько прибыль или убыток? Тоесть получается 0.1 * 50 ??? Edited October 2, 2018 by sviter Quote Link to post Share on other sites
sviter 0 Share Posted October 2, 2018 23 минуты назад, AntFX сказал: Так Вам нужно перекрытие по кол-ву лотов или по величине ТП? Делаю я кароче такой своеобразный сеточник с мартингейлом и ТР, только (типа)мартингейл в пунктах между ордерами... Quote Link to post Share on other sites
AntFX 6,474 Share Posted October 2, 2018 18 минут назад, sviter сказал: По логике если ордер считается в пунктах....сколько пунктов прошел, столько прибыль или убыток? Тоесть получается 0.1 * 50 ??? Чтобы обеспечить "перекрытие" прошлого убытка новой прибылью, Вам нужно либо увеличить размер лота, либо увеличить ТП. Либо сделать и то и другое. Вот Вам и нужно определиться, увеличивать лот, или сокращать ТП, или и то и другое, и в какой пропорции. То есть фиксировать тот или иной параметр, и в зависимости от него уже вычислять второй. Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 2, 2018 1 минуту назад, AntFX сказал: Чтобы обеспечить "перекрытие" прошлого убытка новой прибылью, Вам нужно либо увеличить размер лота, либо увеличить ТП. Либо сделать и то и другое. Вот Вам и нужно определиться, увеличивать лот, или сокращать ТП, или и то и другое, и в какой пропорции. То есть фиксировать тот или иной параметр, и в зависимости от него уже вычислять второй. Так я и пытаюсь это объяснить.... мне нужно увеличить размер лота, от прошлого убытка путем формулы которая увеличивает лот, в процентном соотношении от указанных пунктов между ними... Приведу пример: Оикрыл я ордер на 1.5000 с лотом в 0.1 и ТП в 100 и цена пошла не в мою сторону....а я указал что бы через 50 пунктов к примеру открылся второй ордер с 0.5 к примеру лотом, но уже с ТП в 10 пунктов.....таким образом прибыль я заберу и перекрою убыток.... так вот как вычислить эту к примеру этот второй ордер с 0.5??? но сделать это надо от указанных пунктов между ордерами, что бы второй ордер всегда перекрывал первый Quote Link to post Share on other sites
AntFX 6,474 Share Posted October 2, 2018 Ну так в Вашем примере все просто - нужно, чтобы за 10 пп ордер лотом 0.5 покрыл убыток ордера 0.1, прошедшего 50 пп не в Вашу сторону (в этом примере ТП первого ордера не имеет значения). Тут все просто, берем убыток, пройденный первым ордером до открытия второго - это 50 * 1 (цена целого пункта 0.1 лота это 1 доллар, если пара EURUSD), соответственно Вы выбрали размер лота второго ордера 0.5 правильно, без учета того, что к моменту ТП второго ордера это будет уже не -50, а -40 (если только Вы не закрываете первый ордер в момент открытия второго), т.к. 5 *10 = 50. Если учесть, что на ТП второго ордера убыток первого будет уже не 50, а 40, то лот должен будет быть 40/10=0.4 Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 2, 2018 6 минут назад, AntFX сказал: Ну так в Вашем примере все просто - нужно, чтобы за 10 пп ордер лотом 0.5 покрыл убыток ордера 0.1, прошедшего 50 пп не в Вашу сторону (в этом примере ТП первого ордера не имеет значения). Тут все просто, берем убыток, пройденный первым ордером до открытия второго - это 50 * 1 (цена целого пункта 0.1 лота это 1 доллар, если пара EURUSD), соответственно Вы выбрали размер лота второго ордера 0.5 правильно, без учета того, что к моменту ТП второго ордера это будет уже не -50, а -40 (если только Вы не закрываете первый ордер в момент открытия второго), т.к. 5 *10 = 50. Если учесть, что на ТП второго ордера убыток первого будет уже не 50, а 40, то лот должен будет быть 40/10=0.4 0.5 это сумма лота которую я незнаю....она можкт быть разной... вот мне и нужна формула что бы ее вычислить....от 0.1 с 50 пунктами между ордерами Quote Link to post Share on other sites
AntFX 6,474 Share Posted October 2, 2018 Только что, sviter сказал: 0.5 это сумма лота которую я незнаю....она можкт быть разной... вот мне и нужна формула что бы ее вычислить....от 0.1 с 50 пунктами между ордерами Вам нужно знать либо размер ТП, либо коэффициент увеличения лота, задача с "двумя неизвестными" не имеет решения, пока Вы не фиксируете одно из них. Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 2, 2018 2 минуты назад, AntFX сказал: Вам нужно знать либо размер ТП, либо коэффициент увеличения лота, задача с "двумя неизвестными" не имеет решения, пока Вы не фиксируете одно из них. Я пока разбираюсь с увеличением лота....с ТП потом буду думать(задача второстепенная) И мне нужен кофициент увеличения лота от количества шагов между ордерами, зная что первый ордер будет с лотом в 0.1.... Вот есть же скрипт для кофециент увеличения лота от баланса счета.... Пытаюсь замутить что то похожее.. Quote Link to post Share on other sites
AntFX 6,474 Share Posted October 2, 2018 (edited) 3 минуты назад, sviter сказал: Вот есть же скрипт для кофециент увеличения лота от баланса счета.... Попробуйте плясать от чего-то более понятного. Например, установите коэффициент увеличения лота, шаг между ордерами, и посмотрите как изменяется средняя цена (по алгоритму, который я написал в начале) при открытии следующего ордера. Средняя цена - это как раз и есть уровень безубыточности. Edited October 2, 2018 by AntFX Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 4, 2018 бред-бред-бред!!! все что было написано раньше можно забыть!!!смотрите!делаю специфический сеточник с усреднением цены и мартингейлом!!!открываестся первый ордер по цене 1.000 с лотом в 0.1 и ТП 100 пунктовцена пошла не туда и через 100 пунктов по цене 1.100 открывается еще один ордер, но уже с 0.5 лотом и с ТП в 2 пункта...как высчитать сумму в 108 пунктов между 2-мя ордерами? Quote Link to post Share on other sites
Ugar68 372 Share Posted October 4, 2018 17 минут назад, sviter сказал: бред-бред-бред!!! все что было написано раньше можно забыть!!!смотрите!делаю специфический сеточник с усреднением цены и мартингейлом!!!открываестся первый ордер по цене 1.000 с лотом в 0.1 и ТП 100 пунктовцена пошла не туда и через 100 пунктов по цене 1.100 открывается еще один ордер, но уже с 0.5 лотом и с ТП в 2 пункта...как высчитать сумму в 108 пунктов между 2-мя ордерами? Если у второго ордера тейк 2 пункта, какой смысл что то считать? Он закроется при малейшем шуме. А вообще сумма нескольких ордеров обычно считается уровень безубытка и от него сколько надо пунктов. Quote Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку. Чужие программы не переделываю. Link to post Share on other sites
sviter 0 Share Posted October 4, 2018 13 минут назад, Ugar68 сказал: Если у второго ордера тейк 2 пункта, какой смысл что то считать? Он закроется при малейшем шуме. А вообще сумма нескольких ордеров обычно считается уровень безубытка и от него сколько надо пунктов. мне просто надо произвести расчет 108 пунктов от ордера до ордера! что бы ТП на втором ордере подтягивался к нему и выставлял значение в 2 пункта и закрывал эти 2 ордера! Quote Link to post Share on other sites
sviter 0 Share Posted October 4, 2018 мне нужно, что бы ТП второго ордера подтягивался на 108 пунктов сам!! для этого и прошу формулу для высчитывания 108 пунктов между ордерами! Quote Link to post Share on other sites
Ugar68 372 Share Posted October 4, 2018 1 час назад, sviter сказал: открываестся первый ордер по цене 1.000 с лотом в 0.1 и ТП 100 пунктовцена пошла не туда и через 100 пунктов по цене 1.100 открывается еще один ордер мне нужно, что бы ТП второго ордера подтягивался на 108 пунктов сам!! для этого и прошу формулу для высчитывания 108 пунктов между ордерами! В условии сказано что между ордерами 100 пунктов. Какая формула может из 100 сделать 108? Quote Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку. Чужие программы не переделываю. Link to post Share on other sites
sviter 0 Share Posted October 4, 2018 2 часа назад, Ugar68 сказал: В условии сказано что между ордерами 100 пунктов. Какая формула может из 100 сделать 108? ой сорри! 98! в голове одно, а на словах другое)))) извиняюсь Quote Link to post Share on other sites
Ugar68 372 Share Posted October 4, 2018 В идеале, если цена отодвинулась от ордера на 100 пунктов и открылся второй, то и расстояние между ними 100 пунктов. В реальности, при открытии расстояние может отличаться. Посчитать можно так: fabs(OOP1-OOP2)/_Point; Здесь OOP1 - цена открытия первого ордера, OOP2 - второго. Quote Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку. Чужие программы не переделываю. Link to post Share on other sites
sviter 0 Share Posted October 4, 2018 5 минут назад, Ugar68 сказал: В идеале, если цена отодвинулась от ордера на 100 пунктов и открылся второй, то и расстояние между ними 100 пунктов. В реальности, при открытии расстояние может отличаться. Посчитать можно так: fabs(OOP1-OOP2)/_Point; Здесь OOP1 - цена открытия первого ордера, OOP2 - второго. OOP1 и OOP2 запоминать Функцией запоминания последней цены ? Quote Link to post Share on other sites
Ugar68 372 Share Posted October 4, 2018 Можно выбрать первый ордер OOP1 =OrderOpenPrice(); Потом выбрать второй ордер OOP2 =OrderOpenPrice(); Quote Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку. Чужие программы не переделываю. Link to post Share on other sites
AntFX 6,474 Share Posted October 10, 2018 (edited) В 28.09.2018 в 05:58, AntFX сказал: Кто-нибудь в курсе, как заставить перегруженные логические операции, типа operator==, правильно работать с указателями? То есть как сделать, чтобы следующий код Если поизвращаться, то сделать это можно так =)) Скрытый текст // Просто макросы для удобства #define gpt GetPointer(this) #define cp CheckPointer #define good(ptr) cp(ptr)==POINTER_DYNAMIC #define pf PrintFormat #define r return #define bts(var) (var?"true":"false")/* bool to string */ #define del(ptr) if(good(ptr)) delete ptr Скрытый текст class A; // Используем структуру S в качстве обертки для класса А. struct S{ S(A* par):a(par){} S(S &par):a(par.a){} S operator==(A* par){ S s(good(par)?par:a); if(good(a)) a.PrintEqual(par); else pf("This is the end..."); r(s); } S operator!=(A* par){ S s(a); del(par); r(s==par); } A* a;}; // Специальный метод класса (перегруженный оператор ~) возвращает обертку на себя, в которой перегружены все нужные операции class A{ public: A(string par=NULL):str(par){ } S operator~(void){ S s(gpt); r(s); } void PrintEqual(A *a){ if(good(a)) pf("%s is %s: %s",str,a.str,bts(str==a.str)); else pf("The winter is nigh"); } private: string str;}; void OnStart(){ A *a=new A("A"); A *b=a; A *c=new A("C"); A *d=c; ~a==b==c==d!=a!=c; } Скрытый текст И если подумать, так можно "на ходу" менять наборы операторов, что может быть удобно... Edited October 10, 2018 by AntFX 1 Quote 1 Link to post Share on other sites
sviter 0 Share Posted October 25, 2018 Граждане! Может у кого есть готовый кусок ТРЭЙЛИНГА, который следует за ценой??? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.