Сергей_64 Опубликовано 29 апреля, 2023 Поделиться Доработка советников: общая тема Опубликовано 29 апреля, 2023 Кто нибудь делал советник на индикаторе Зиг заг, отзовитесь, нужна помощь! Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 30 апреля, 2023 Поделиться Доработка советников: общая тема Опубликовано 30 апреля, 2023 23 часа назад, Rigal сказал: Я не понимаю, что вы считаете в табличке выше - возможно, в этом есть какое-то зерно, но его нужно прорастить. Сдается мне, вы говорите о том, сколько умножений выдержит депозит. А в контексте гораздо более осмысленно было бы оценить, может ли эта система приносить больше прибыли за счет умножения. Если я неправильно вас понял - вы меня поправьте, пожалуйста? Процент риска в целом не имеет значения, можно рассматривать систему с постоянным лотом и множить лот. У вас максимальное число непрерывных проигрышей выше числа непрерывных выигрышей. Более того, средний непрерывный выигрыш один, а средний непрерывный проигрыш - 3. Такой баланс предлагает считать, что после проигрыша выгоднее делить риск пополам, а не умножать, потому, что после проигрыша гораздо более вероятен проигрыш. Ну и у вас статистика из 67 сделок и не видно, какой интервал протестирован - даже этот малоинтересный результат вполне может быть результатом cherry picking. Давайте вы, если хотите, чтобы кто-то сел и поработал, вы как-то сядьте и поработайте сперва, чтобы убедиться хотя бы для себя, что эта работа имеет смысл? . . . какой интервал протестирован - H1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 30 апреля, 2023 Поделиться Доработка советников: общая тема Опубликовано 30 апреля, 2023 23 часа назад, Rigal сказал: Что важнее: процент проигрышных и выигрышных сделок - в районе трети. То есть система может быть прибыльна только за счет высокого RR. Такие системы имеют отрицательное матожидание с мартингейлом. "То есть система может быть прибыльна только за счет высокого RR." В советнике это реализовано, ТП вообще может быть отсутствовать в расчете на рост безграничной прибыли, но как видно из теста, что не всегда это работает. Ну а по поводу увеличения риска после получения SL можно воздух сотресать до бесконечности пока не сделаем тест. И я считаю, что процент проигрышных и выигрышных сделок - в районе трети за период 16 месяцев на ТФ Н1 совсем не плох. Если я сделаю тест (ТФ Н1, ТП=1.62*SL) в ручном режиме на симуляторе за шесть месяцев Вас такой объём работы устроит? Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 30 апреля, 2023 Поделиться Доработка советников: общая тема Опубликовано 30 апреля, 2023 1 час назад, drobayura сказал: "То есть система может быть прибыльна только за счет высокого RR." В советнике это реализовано, ТП вообще может быть отсутствовать в расчете на рост безграничной прибыли, но как видно из теста, что не всегда это работает. Ну а по поводу увеличения риска после получения SL можно воздух сотресать до бесконечности пока не сделаем тест. И я считаю, что процент проигрышных и выигрышных сделок - в районе трети за период 16 месяцев на ТФ Н1 совсем не плох. Если я сделаю тест (ТФ Н1, ТП=1.62*SL) в ручном режиме на симуляторе за шесть месяцев Вас такой объём работы устроит? Вот результаты теста в ручном режиме на симуляторе с 03.10.22 по сегодняшний день (ТФ Н1, ТП=1.62*SL без трала с начальным депозитом 1000) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 30 апреля, 2023 Поделиться Доработка советников: общая тема Опубликовано 30 апреля, 2023 да не надо делать тестов в ручном режиме за 6 месяцев. Вообще делать тесты за 6 месяцев не надо. Меньше, чем за пятилетку - вы занимаетесь cherry picking. На русском это называется подгонка фактов под теорию. 2 часа назад, drobayura сказал: Ну а по поводу увеличения риска после получения SL можно воздух сотресать до бесконечности пока не сделаем тест Сотресать воздух можно сколько угодно и по поводу того, сколько будет дважды два. Есть такая наука матстатистика. Она позволяет оценить вероятности событий, исходя из количества этих событий, на статистически значимой выборке. У вас выше во всех тестах а) выборка статистически не значимая б) если проигнорировать пункт а) и довериться вашим данным - они говорят, что вероятность потери вдвое выше вероятности выигрыша В итоге, умножая на два в любом месте, вы просите вдвое больший убыток вдвое чаще, чем удвоенную прибыль. При этом вы упорно не делаете более длительного теста и не показали ни сета, ни отчета тестера. Памятуя ваши подвиги на форуме в прошлом, я не очень склонен доверять вашим скриншотам и уж подавно вашим намереньям - так что если вы хотите какие-то изменения в коде, вы будьте так любезны, выложите ваш сет и результат теста. Я прогоню его на нормальных котировках за нормальный период и у меня будет возможность убедиться в том, что я был неправ, когда я эти изменения внесу Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 30 апреля, 2023 Поделиться Доработка советников: общая тема Опубликовано 30 апреля, 2023 А я перечитал историю нашего с вами, @drobayura, общения. Вопрос закрыт, спасибо за неоценимый вклад, не болейте. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
drobayura Опубликовано 1 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 1 мая, 2023 7 часов назад, Rigal сказал: А я перечитал историю нашего с вами, @drobayura, общения. Вопрос закрыт, спасибо за неоценимый вклад, не болейте. Чем же я Вас обидел, вроде всегда общался с Вами корректно. Прошу прощения, если ,что не так. Мне очень жаль. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 4 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 4 мая, 2023 cm ea manual grid.mq4Здравствуйте уважаемые программисты! Могли бы вы изменить немного этот помощник для торговли . Когда я закрываю сеть открытых ордеров, старые отложки не удаляются, а продолжают в том же порядке открываться. для обнуления я отключаю функцию открытия отложек, они удаляются, снова включаю чтобы строилась новая сетка. Можете это сделать на автомате, чтобы при закрытии ордеров отложенные старые ордера удалялись и строилась новая сетка. Что-то похожее есть в пирамидинге, но там нет панели управления и много мне ненужного, а мне нужно просто открывать отложки в нужном направлении Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 5 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 5 мая, 2023 int TrailingStopOrders = 20; // Фиксированный размер трала StopOrdersint TrailingStepStop = 3; // Шаг трала StopOrdersint TrailingLimitOrders = 30; // Фиксированный размер трала LimitOrdersint TrailingStepLimit = 3; // Шаг трала LimitOrderscolor clModifyBuyOrder = clrNONE; // Цвет значка модификации покупкиcolor clModifySellOrder = clrNONE; // Цвет значка модификации продажи//===============================================================================================//------------------------- Сопровождение Stop ордеров простым тралом --------------------------+//===============================================================================================void TrailingStopOrder(stringsymb="0",int type=-1,int mg=-1) {double di=0, pa=0, pb=0, p=0, sl=0, tp=0;if(symb=="0") { symb=Symbol();} p=MarketInfo(symb,MODE_POINT); int msl=(int)MarketInfo(symb, MODE_STOPLEVEL); if(TrailingStopOrders<msl) { Alert("TrailingStopOrder(): Значение меньше допустимого=",TrailingStopOrders/Sign,", Минимум=",msl/Sign); TrailingStopOrders=msl;} else{TrailingStopOrders=TrailingStopOrders;} for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) { if(OrderType()==OP_BUYSTOP) { pa=MarketInfo(symb,MODE_ASK); if(OrderOpenPrice()-pa>(TrailingStopOrders+TrailingStepStop-1)*p) { di=OrderOpenPrice()-pa-(TrailingStopOrders*p); if(OrderStopLoss()>0) sl=OrderStopLoss()-di; else sl=0; if(OrderTakeProfit()>0) tp=OrderTakeProfit()-di; else tp=0; ModifyOrder(symb,pa+(TrailingStopOrders*p), sl, tp, clModifyBuyOrder); }} if(OrderType()==OP_SELLSTOP) { pb=MarketInfo(symb,MODE_BID); if(pb-OrderOpenPrice()>(TrailingStopOrders+TrailingStepStop-1)*p) { di=pb-OrderOpenPrice()-(TrailingStopOrders*p); if(OrderStopLoss()>0) sl=OrderStopLoss()+di; else sl=0; if(OrderTakeProfit()>0) tp=OrderTakeProfit()+di; else tp=0; ModifyOrder(symb,pb-(TrailingStopOrders*p), sl, tp, clModifySellOrder); }}}}}}//===============================================================================================//------------------------- Сопровождение Limit ордеров простым тралом -------------------------+//===============================================================================================void TrailingLimitOrder(stringsymb="0",int type=-1,int mg=-1) {double di=0, pa=0, pb=0, p=0, sl=0, tp=0;if(symb=="0") { symb=Symbol();} p=MarketInfo(symb,MODE_POINT); int msl=(int)MarketInfo(symb, MODE_STOPLEVEL); if(TrailingLimitOrders<msl) { Alert("TrailingLimitOrder(): Значение меньше допустимого=",TrailingLimitOrders/Sign,", Минимум=",msl/Sign); TrailingLimitOrders=msl; } else { TrailingLimitOrders=TrailingLimitOrders; } for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) { if(OrderType()==OP_BUYLIMIT) { pa=MarketInfo(symb,MODE_ASK); if(pa-OrderOpenPrice()>(TrailingLimitOrders+TrailingStepLimit-1)*p) { di=pa-OrderOpenPrice()-(TrailingLimitOrders*p); if(OrderStopLoss()>0) sl=OrderStopLoss()+di; else sl=0; if(OrderTakeProfit()>0) tp=OrderTakeProfit()+di; else tp=0; ModifyOrder(symb,pa-(TrailingLimitOrders*p), sl, tp, clModifyBuyOrder); }} if(OrderType()==OP_SELLLIMIT) { pb=MarketInfo(symb,MODE_BID); if(OrderOpenPrice()-pb>(TrailingLimitOrders+TrailingStepLimit-1)*p) { di=OrderOpenPrice()-pb-(TrailingLimitOrders*p); if(OrderStopLoss()>0) sl=OrderStopLoss()-di; else sl=0; if(OrderTakeProfit()>0) tp=OrderTakeProfit()-di; else tp=0; ModifyOrder(symb,pb+(TrailingLimitOrders*p), sl, tp, clModifySellOrder); }}}}}} еще нашёл такой код для трала отложек Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 6 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 6 мая, 2023 cmea manual gird.mq4 Добавил трал к лимиту но в тестере через определенное время останавливается тест Изменено 6 мая, 2023 пользователем Lexa000 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 6 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 6 мая, 2023 4 часа назад, Lexa000 сказал: cmea manual gird.mq4 Добавил трал к лимиту но в тестере через определенное время останавливается тест Оказалось два трала конфликтуют 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 7 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 7 мая, 2023 cmea manual gird.mq4Вот такой вышел помощник трал лимитом 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 7 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 7 мая, 2023 Получилось неплохо 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 7 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 7 мая, 2023 cmea manual gird.mq4еще немного подредактировал ButtonCreate(0,"cm off",0,225,y,210,20,Text(LANGUAGE,"Отключение после взятия профита","Shutdown after taking profit"),"Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE); В кнопках вообще не разбираюсь, просто удалил функцию Ссылка на сообщение Поделиться на другие сайты More sharing options...
Viktor2005 Опубликовано 9 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 9 мая, 2023 Добрый день,программисты! Подскажите,пожалуйста,почему советник открывает покупки с шагом,а продажи разом,без шага? Спасибо Мартин-3.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 9 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 9 мая, 2023 В 07.05.2023 в 18:31, Lexa000 сказал: cmea manual gird.mq4еще немного подредактировал ButtonCreate(0,"cm off",0,225,y,210,20,Text(LANGUAGE,"Отключение после взятия профита","Shutdown after taking profit"),"Arial",8,clrBlack,clrLightGray,clrLightGray,clrNONE); В кнопках вообще не разбираюсь, просто удалил функцию Здравствуйте уважаемые программисты! Кто может помочь подправить советник, чтобы он тралил сеть ордеров не нарушая дистанцию между ордерами? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 10 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 10 мая, 2023 В 09.05.2023 в 18:25, Lexa000 сказал: Здравствуйте уважаемые программисты! Кто может помочь подправить советник, чтобы он тралил сеть ордеров не нарушая дистанцию между ордерами? Я не совсем понимаю задачу в такой формулировке. Каким образом трал нарушает дистанцию между ордерами? Если он тралит все ордера разом - он и закроет их все разом. Если он тралит каждый ордер отдельно - он закроет только те, что тралит. На дистанцию это как бы не должно влиять? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 10 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 10 мая, 2023 1 час назад, Rigal сказал: Я не совсем понимаю задачу в такой формулировке. Каким образом трал нарушает дистанцию между ордерами? Если он тралит все ордера разом - он и закроет их все разом. Если он тралит каждый ордер отдельно - он закроет только те, что тралит. На дистанцию это как бы не должно влиять? Уважаемый Rigal, я говорил об отложенных ордерах, когда-то LUKA написал советник в 2013 тянулка 1+1 такой советник, который тянет два лимитных ордера на определенной дистанции. Я его проверить не могу, потому что он уже не торгует. Мне будет достаточно трала даже двух лимитных ордеров. Или другой вариант, если открывать лимитные ордера по одному, чтобы они также увеличивались плюс один как открываются по два, как то так e-$_Тянулка_1+1.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 10 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 10 мая, 2023 13 минут назад, Lexa000 сказал: Уважаемый Rigal, я говорил об отложенных ордерах, когда-то LUKA написал советник в 2013 тянулка 1+1 такой советник, который тянет два лимитных ордера на определенной дистанции. Я его проверить не могу, потому что он уже не торгует. Мне будет достаточно трала даже двух лимитных ордеров. Или другой вариант, если открывать лимитные ордера по одному, чтобы они также увеличивались плюс один как открываются по два, как то так e-$_Тянулка_1+1.mq4 18.53 \u043a\u0411 · 0 загрузок Мне из вашего объяснения по-прежнему непонятно, что вы хотите. У вас, вероятно, есть контекст - вы знаете, что написал Luka и как оно должно бы работать. Я - нет. И было бы здорово, если бы мне не нужно было поднимать весь этот контекст. Опишите, пожалуйста, желаемое поведение, подробно. Я уверен, что писать там на полчаса и с нуля мне будет гораздо быстрее, чем ковыряться в чужом коде. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 10 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 10 мая, 2023 54 минуты назад, Rigal сказал: Мне из вашего объяснения по-прежнему непонятно, что вы хотите. У вас, вероятно, есть контекст - вы знаете, что написал Luka и как оно должно бы работать. Я - нет. И было бы здорово, если бы мне не нужно было поднимать весь этот контекст. Опишите, пожалуйста, желаемое поведение, подробно. Я уверен, что писать там на полчаса и с нуля мне будет гораздо быстрее, чем ковыряться в чужом коде. Спасибо что вы обратили внимание на мое сообщение! Иногда приходится выставлять отложенные ордера: OP_BUYSTOP, OP_BUYLIMIT, OP_SELLSTOP, OP_SELLLIMIT. Я больше по лимитным ордерам. Я ищу способ открытия лимитных ордеров по нарастающей, можно по одному, по два и более. Но когда цена уходит от лимитного ордера, нужно его переместить ближе к цене. Но, если я открою несколько лимитных ордеров и воспользуюсь тралом, который я добавил в советник, то он переместит все лимитные ордера на одну цену, а мне нужно чтобы они все перемещались вместе друг от руга примерно в пределах 10 пунктов. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 12 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 12 мая, 2023 В 09.05.2023 в 06:54, Viktor2005 сказал: Добрый день,программисты! Подскажите,пожалуйста,почему советник открывает покупки с шагом,а продажи разом,без шага? Спасибо Мартин-3.mq4 20.89 \u043a\u0411 · 1 загрузка Мы обсудили в личке, но чтобы не тратить чье-то еще время: Должно быть больше, или равно. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 12 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 12 мая, 2023 В 10.05.2023 в 23:14, Lexa000 сказал: Спасибо что вы обратили внимание на мое сообщение! Иногда приходится выставлять отложенные ордера: OP_BUYSTOP, OP_BUYLIMIT, OP_SELLSTOP, OP_SELLLIMIT. Я больше по лимитным ордерам. Я ищу способ открытия лимитных ордеров по нарастающей, можно по одному, по два и более. Но когда цена уходит от лимитного ордера, нужно его переместить ближе к цене. Но, если я открою несколько лимитных ордеров и воспользуюсь тралом, который я добавил в советник, то он переместит все лимитные ордера на одну цену, а мне нужно чтобы они все перемещались вместе друг от руга примерно в пределах 10 пунктов. Добрался до компа. Глядя на скрин: а вас не смущает, что ваши стопы растут по мере движения цены? Это такой антипирамидинг, он традиционно снижает среднюю прибыль, поскольку выталкивает безубыток в сторону худшей цены. Замечания по коду: 1. OnTimer вам, вероятно, не нужен. Протестировать его в МТ4 нельзя нормально, а работать в перерывах между тиками вам не надо - код не мультивалютный. Ну и сам таймер не инициализируется в любом случае 2. У вас в советнике два трала. Один - по профиту, другой - лимиток. Причем трал лимиток написан в рассчете на одну лимитку. Позвольте полюбопытствовать: а зачем вам много лимиток сразу? Это ж просто лишние хлопоты: таскать их по графику, ухаживать за ними всячески, пересчитывать? Не проще ли держать открытой одну лимитку на заданной дистанции от рыночного ордера, или цены? И как только она становится рыночным ордером - это повод открыть новую лимитку? По той же логике: на заданном расстоянии от текущей цены. UPD: Я реализовал отдельный метод TrailLimitGrid и вызвал его в OnTick для OP_BUYLIMIT и OP_SELLLIMIT, а вызов оригинального второго трала заглушил. Этот метод должен делать ровно то, что вы описали: тралить всю сетку по тому же принципу, по которому тралился бы один ордер. Глянул в тестере - тралит. Но после активации ордеров он у вас плодит новые сетки, судя по всему - с этим вы уже сами разбирайтесь, возможно, так задумано? cmea manual gird.mq4 Изменено 12 мая, 2023 пользователем Rigal 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 13 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 13 мая, 2023 7 часов назад, Rigal сказал: Добрался до компа. Глядя на скрин: а вас не смущает, что ваши стопы растут по мере движения цены? Это такой антипирамидинг, он традиционно снижает среднюю прибыль, поскольку выталкивает безубыток в сторону худшей цены. Замечания по коду: 1. OnTimer вам, вероятно, не нужен. Протестировать его в МТ4 нельзя нормально, а работать в перерывах между тиками вам не надо - код не мультивалютный. Ну и сам таймер не инициализируется в любом случае 2. У вас в советнике два трала. Один - по профиту, другой - лимиток. Причем трал лимиток написан в рассчете на одну лимитку. Позвольте полюбопытствовать: а зачем вам много лимиток сразу? Это ж просто лишние хлопоты: таскать их по графику, ухаживать за ними всячески, пересчитывать? Не проще ли держать открытой одну лимитку на заданной дистанции от рыночного ордера, или цены? И как только она становится рыночным ордером - это повод открыть новую лимитку? По той же логике: на заданном расстоянии от текущей цены. UPD: Я реализовал отдельный метод TrailLimitGrid и вызвал его в OnTick для OP_BUYLIMIT и OP_SELLLIMIT, а вызов оригинального второго трала заглушил. Этот метод должен делать ровно то, что вы описали: тралить всю сетку по тому же принципу, по которому тралился бы один ордер. Глянул в тестере - тралит. Но после активации ордеров он у вас плодит новые сетки, судя по всему - с этим вы уже сами разбирайтесь, возможно, так задумано? cmea manual gird.mq4 97.69 \u043a\u0411 · 1 загрузка Спасибо большое! У меня эта стратегия заключается как вмешательство в торговлю если что-то идет не по плану. А скрин я взял в интернете, так как сложно описать все словами. Там для того чтобы сетка начиналась сначала, нужно сначала отключить функцию, потом снова включит. Мне достаточно того что вы сделали Ещё раз спасибо, отложки тралит на определенном расстоянии как я хотел. Могли бы вы мне подсказать, где я мог бы найти подобную информацию чтобы лучше разбираться в коде. Я пытался найти в интернете, но не смог найти, и мне сложно понять чем отличаются условия для одного ордера и для всех Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 13 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 13 мая, 2023 1 час назад, Lexa000 сказал: Спасибо большое! У меня эта стратегия заключается как вмешательство в торговлю если что-то идет не по плану. А скрин я взял в интернете, так как сложно описать все словами. Там для того чтобы сетка начиналась сначала, нужно сначала отключить функцию, потом снова включит. Мне достаточно того что вы сделали Ещё раз спасибо, отложки тралит на определенном расстоянии как я хотел. Могли бы вы мне подсказать, где я мог бы найти подобную информацию чтобы лучше разбираться в коде. Я пытался найти в интернете, но не смог найти, и мне сложно понять чем отличаются условия для одного ордера и для всех Я тут подредактировал код чтобы лимитки начинали сначала вот это OT=OrderType(); if(OT==OP_BUY) b++; if(OT==OP_SELL) s++; заменил на OT=OrderType(); if(tip==OP_BUY && (OT==OP_BUYLIMIT || OT==OP_BUYSTOP)) error=OrderDelete(Ticket=0); if(tip==OP_SELL && (OT==OP_SELLLIMIT || OT==OP_SELLSTOP)) error=OrderDelete(Ticket=0); это. И сетка не растет, как было до этого. Это в блоке bool CloseByOrders() Теперь такой результат Изменено 13 мая, 2023 пользователем Lexa000 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 13 мая, 2023 Поделиться Доработка советников: общая тема Опубликовано 13 мая, 2023 4 часа назад, Lexa000 сказал: Могли бы вы мне подсказать, где я мог бы найти подобную информацию чтобы лучше разбираться в коде. Я пытался найти в интернете, но не смог найти, и мне сложно понять чем отличаются условия для одного ордера и для всех Я там комментировал в коде. Кроме кода почитать нечего - это оригинальный код. Вот он весь: Спойлер /* трал сетки лимиток */ void TrailLimitGrid(int _type) { int sign = (_type == OP_BUYLIMIT ? 1 : -1); double currentPrice = (_type == OP_BUYLIMIT ? Ask : Bid); double bestPrice = (_type == OP_BUYLIMIT ? 0 : DBL_MAX); int count = 0; //сперва ищем наилучший ордер этого типа for(int i = OrdersTotal(); i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol() && (Magic == -1 || OrderMagicNumber() == Magic) && OrderType() == _type) { count++; if(sign * (OrderOpenPrice() - bestPrice) > 0) bestPrice = OrderOpenPrice(); } } //на этом этапе мы знаем цену лимитки, которую нужно таскать за ценой. Остальные сдвигать на ту же величину if(count > 0) { //если у нас вообще нашлись лимитки double distance = sign * (currentPrice - bestPrice); if(distance > (TrailingStop + TrailingStep - 1) * Point()) { //да, дистанция от текущей цены до наилучшего ордера уже больше, чем трал + шаг, надо двигать double targetPrice = currentPrice - sign * TrailingStop * Point(); double delta = targetPrice - bestPrice; //повторяем цикл, модифицируем все ордера этого типа for(int i = OrdersTotal(); i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol() && (Magic == -1 || OrderMagicNumber() == Magic) && OrderType() == _type) { double newPrice = NormalizeDouble(OrderOpenPrice() + delta, Digits); double newSL = (OrderStopLoss() > DBL_EPSILON ? NormalizeDouble(OrderStopLoss() + delta, Digits) : 0.0); double newTP = (OrderTakeProfit() > DBL_EPSILON ? NormalizeDouble(OrderTakeProfit() + delta, Digits) : 0.0); OrderModify(OrderTicket(), newPrice, newSL, newTP, OrderExpiration(), (_type == OP_BUYLIMIT ? clrBlue : clrRed)); } } } } } /* трал сетки лимиток */ Изменено 13 мая, 2023 пользователем Rigal 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти