eevviill2
Местный знаток
|| && ()категорически не согласен с вами. любой нормальный код написанный на старый билд без труда компилируется на новом без каких либо изменений вообще...
|| && ()категорически не согласен с вами. любой нормальный код написанный на старый билд без труда компилируется на новом без каких либо изменений вообще...
Категорически не соглашаюсь с таким мнением. Когда-то я Ренату предлагал, предложу и вам:категорически не согласен с вами. любой нормальный код написанный на старый билд без труда компилируется на новом без каких либо изменений вообще. те же названные фами функции init() start() deinit() продолжают работать в новом билде и компилятор даже не выдает никаких предупреждений.
Вот если код был написан пьяными индусами - да появлялись проблемы... которые у слову решались в самых запущенных случаях минут за 5.
MQ да как то ляпнули мол mt4 устарел и поддерживать больше не будем, но пользователи проголосовали иначе. На моей практике как было года 3-4 назад заказов на mql5 в районе 5-10%, так и осталось. По этому у MQ не осталось выбора как расширить язык mql4 до приемлемого уровня, появилось долгожданное ООП. Но они не оставляют попыток пропихнуть mql5, потому и были реализованы хедж счета. Хотя все профессиональные участники прекрасно понимают что это абсолютно бесполезная фича. Но у большинства пользовалетей все было очень плохо с математикой в школе и они любят хеджироваться на той же паре копя комиссии и свопы себе в убыток
Никаких проблем для освоения и использования языка не появилось. Учебник который у них висит на сайте с хрен знает каких годов до сих пор актуален и все что написано в нем прекрасно работает.
Стесняюсь спросить--что за зверь?С чем едят? или сарказм с матюками?появилось долгожданное ООП.
Да, согласен (я не про сообщение), только вот буквально на дня написал мультивалютника на 5-ке и с грустью узнал (проковырявшись в новой документации для 5-ки), что новый параметр на нехеджевом счете для функции OrderSend, который обозначивает закрытие всей позиции на данном инструменте по типу функци из 4-ки OrderCloseBy, на нехеджевом счете не работает. Может я отстал от жизни и этот параметр как-то по особому нужно прописывать в MQL запросе OrderSenda...:nda:В общем, не хочу сказать что именно это повлияло на решение MQ но хедж появился вскоре после такого моего сообщения.
Я этим вариантом закрытия не пользовался, но можно ведь посмотреть в стандартной библиотеке.Да, согласен (я не про сообщение), только вот буквально на дня написал мультивалютника на 5-ке и с грустью узнал (проковырявшись в новой документации для 5-ки), что новый параметр на нехеджевом счете для функции OrderSend, который обозначивает закрытие всей позиции на данном инструменте по типу функци из 4-ки OrderCloseBy, на нехеджевом счете не работает. Может я отстал от жизни и этот параметр как-то по особому нужно прописывать в MQL запросе OrderSenda...:nda:
//+------------------------------------------------------------------+
//| Close one position by other |
//+------------------------------------------------------------------+
bool CTrade::PositionCloseBy(const ulong ticket,const ulong ticket_by)
{
//--- check stopped
if(IsStopped(__FUNCTION__))
return(false);
//--- check hedging mode
if(!IsHedging())
return(false);
//--- check position existence
if(!PositionSelectByTicket(ticket))
return(false);
string symbol=PositionGetString(POSITION_SYMBOL);
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
if(!PositionSelectByTicket(ticket_by))
return(false);
string symbol_by=PositionGetString(POSITION_SYMBOL);
ENUM_POSITION_TYPE type_by=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
//--- check positions
if(type==type_by)
return(false);
if(symbol!=symbol_by)
return(false);
//--- clean
ClearStructures();
//--- check filling
if(!FillingCheck(symbol))
return(false);
//--- setting request
m_request.action =TRADE_ACTION_CLOSE_BY;
m_request.position =ticket;
m_request.position_by=ticket_by;
m_request.magic =m_magic;
//--- close position
return(OrderSend(m_request,m_result));
}
Вот я что и имею ввиду, что в нехеджевом счете у меня перестает работать функция с использованием параметра request.action =TRADE_ACTION_CLOSE_BY; и без проблем работает закрытие позиции тупо открытием ордера тем же лотом противоположного направления.Я этим вариантом закрытия не пользовался, но можно ведь посмотреть в стандартной библиотеке.
void ClosePosition(string sym)
{
PositionSelect(sym);
MqlTradeResult result={0};
MqlTradeRequest request={0};
request.symbol=sym;
request.magic=Magic;
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
request.type=ORDER_TYPE_SELL;
request.price=SymbolInfoDouble(sym,SYMBOL_BID);
}
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
request.type=ORDER_TYPE_BUY;
request.price=SymbolInfoDouble(sym,SYMBOL_ASK);
}
//request.type=ORDER_TYPE_CLOSE_BY;
request.volume=PositionGetDouble(POSITION_VOLUME);
request.action=TRADE_ACTION_DEAL;
request.type_filling=ORDER_FILLING_FOK;
if(PositionGetDouble(POSITION_VOLUME)>0) z=OrderSendAsync(request,result);
...
Зачем меняли? Да, видимо, просто так захотели...
Зачем возмущаться тем что идёт дождь? Сколько не возмущайся он всё равно будет идти...
Так ведь на счетах netting может быть только одна позиция по символу. Отсюда и отсутствие такой возможности.Вот я что и имею ввиду, что в нехеджевом счете у меня перестает работать функция с использованием параметра request.action =TRADE_ACTION_CLOSE_BY; и без проблем работает закрытие позиции тупо открытием ордера тем же лотом противоположного направления.
PHP:void ClosePosition(string sym) { PositionSelect(sym); MqlTradeResult result={0}; MqlTradeRequest request={0}; request.symbol=sym; request.magic=Magic; if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) { request.type=ORDER_TYPE_SELL; request.price=SymbolInfoDouble(sym,SYMBOL_BID); } if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) { request.type=ORDER_TYPE_BUY; request.price=SymbolInfoDouble(sym,SYMBOL_ASK); }//request.type=ORDER_TYPE_CLOSE_BY; request.volume=PositionGetDouble(POSITION_VOLUME); request.action=TRADE_ACTION_DEAL; request.type_filling=ORDER_FILLING_FOK; if(PositionGetDouble(POSITION_VOLUME)>0) z=OrderSendAsync(request,result);
1. Перестали работать в подавляющем большинстве по причине такого написания. Я встречал таких писателей, которые именовали переменные с точкой, типа ticket.ordera и при нововведениях моментально появились ошибки. Но если кто-то хоть чуток интересовался языком С++ тот знает что так делать нельзя. Как только в mql ввели структуры и классы, тут и пошли проблемы в таких кодах.вот вот,захотели и делают что хотят,не слушая мнения трейдеров..и это не первый раз уже!:facepalm:
да и вапще имею право возмущаться,тем более по их вине многие вещи перестали работать в новых билдах, если в старом 509 нет ошибок,то в новом уже есть...кстати кто писал им на их сайте претензии и возмущения,они также банили,чем доказали 2й раз что плевали они на мнение трейдеров!:facepalm:
поэтому мне тоже плевать на их новые билды, сижу в старом!
Да, эти точки в старых прогах не работают и иногда их нудно удалять, особенно если прога большая по объему. Но всегда достаточно просто удалить эти точки из имен переменных или массивов, чтобы все скомпилировалось и заработало.1. Перестали работать в подавляющем большинстве по причине такого написания. Я встречал таких писателей, которые именовали переменные с точкой, типа ticket.ordera и при нововведениях моментально появились ошибки. Но если кто-то хоть чуток интересовался языком С++ тот знает что так делать нельзя. Как только в mql ввели структуры и классы, тут и пошли проблемы в таких кодах.
2. Писать претензии и возмущения надо без оскорблений. Тогда и банить не будут. Плюс к этому, надо читать ответы и пытаться понять объяснения.
и 3. До поры, до времени можно сидеть и на старом билде. Но недалёк тот час когда его закроют и останешься у разбитого корыта.
Да, согласен. Будет не лень, поэкспериментирую. Просто на 5-ке что-то пишешь в основном когда нужно тестировать мультивалютник, а так какого-то плюса по сравнению с 4-кой я не вижу.Так ведь на счетах netting может быть только одна позиция по символу. Отсюда и отсутствие такой возможности.
Если есть желание делать возможность торговать на разных типах счетов, то надо просто делить алгоритм по условию if(тип_счёта) ... ; else ... ;
И тут-то как раз будет очень полезна возможность ООП именовать функции одинаково, но входные параметры могут отличаться, как по количеству, так и по типу этих параметров.
Например если счёт hadge то в функцию передаётся тикет позиции, а если netting то передаётся символ. Вот уже есть две одноимённые функции. И при написании кода советника не надо иметь в памяти две разные функции, к какой надо обратиться.
В общем полёт фантази...
От того, что в новых билдах больше проверок кода на грамотность - это же наоборот огромный плюс прогеру в том плане, что из-за какой-то мелочи (тупо опечатки), старый билд ее пропустит при компиляции, а новый увидит. И при старой компиляции будешь долго голову ломать, пытаясь понять, почему расчеты не те, которые должны быть.вот вот,захотели и делают что хотят,не слушая мнения трейдеров..и это не первый раз уже!
да и вапще имею право возмущаться,тем более по их вине многие вещи перестали работать в новых билдах, если в старом 509 нет ошибок,то в новом уже есть...кстати кто писал им на их сайте претензии и возмущения,они также банили,чем доказали 2й раз что плевали они на мнение трейдеров!
поэтому мне тоже плевать на их новые билды, сижу в старом!
....Но если кто-то хоть чуток интересовался языком С++ тот знает что так делать нельзя. Как только в mql ввели структуры и классы, тут и пошли проблемы в таких кодах.
2)...Писать претензии и возмущения надо без оскорблений. Тогда и банить не будут. Плюс к этому, надо читать ответы и пытаться понять объяснения.
3)...и До поры, до времени можно сидеть и на старом билде. Но недалёк тот час когда его закроют и останешься у разбитого корыта.
Ну видимо каждому своё. Я уже полностью отказался от МТ4 и торгую только на МТ5. И где-то здесь я писал, что отсутствие в mql4 функции OnTradeTransaction просто убивает желание программировать.Да, согласен. Будет не лень, поэкспериментирую. Просто на 5-ке что-то пишешь в основном когда нужно тестировать мультивалютник, а так какого-то плюса по сравнению с 4-кой я не вижу.
К сожалению я ни тот ни другой язык не знаю и ничего не программировал на них. Только однажды открыл книгу, не помню автора и создателя языка, прочёл максимум 5 страниц и бросил. Нет задачи и изучение превращается в пытку. Я просто повторил слова где-то прочитанные. А такая манера именовать переменные, через точку, мне даже понравилась. Слава Богу это было непосредственно перед этим глобальным обновлением и править мне пришлось очень мало.кстати вопросик по Си, на какой язык больше похож MQL4 и MQL5, на С++ или на С#,или вапще на что то третье?
2) - а кто их оскорблял то, просто написал им,как есть - что им плевать на мнение трейдеров, что они лоббируют банки и брокеров, и тут же бан получил:facepalm:
3) -дык если волков бояться то в лес не ходить, если думать только об плохом ,то оно рано или поздно случится...
а слабо было метаквотам сделать в МТ4 три вида функций,для подсчета числа ордеров,например вот так?Ну видимо каждому своё. Я уже полностью отказался от МТ4 и торгую только на МТ5. И где-то здесь я писал, что отсутствие в mql4 функции OnTradeTransaction просто убивает желание программировать.
Если не пробовал не поймёшь как просто определить активировался-ли отложенный ордер или закрылась-ли позиция по стопу или тейку.
2. Я не следил и не читал твои посты там. Не мне судить, но видимо всё-же что-то их обидело.
3. Бойся, не бойся, а такой волк придёт независимо от фобий.
А сам-то чьи интересы стал-бы лоббировать если с одних нихрена ничего не получаешь, а другие платят за эти программы? И платят ежемесячно.
OrdersPending()
BuyOrdersMarket()
SellOrdersMarket()
Я этим мудакам метакротам много раз говорил как надо было.а слабо было метаквотам сделать в МТ4 3-ре вида функций,для подсчета числа ордеров,например вот так?
- всего открыто отложенных ордеровPHP:OrdersPending()
- открыто рыночных ордеров BUYPHP:BuyOrdersMarket()
- открыто рыночных ордеров SELL,PHP:SellOrdersMarket()
чтобы не извращаться с кодом как щас,где есть только OrdersTotal()
...
Вот в mql5 как раз и реализовано отдельный учёт позиций и отложенных ордеров. А поскольку им тяжело тащить 2 проекта почти одинаковых, вот они и рекламируют тот что поновее. А те кто никак не хочет расстаться с недоделкой могут написать свои функции и к ним обращаться при необходимости. Скорость не будет отличаться. Как ни крути, а отсеять какой-то отдельный тип ордеров можно только перебирая их все в цикле. И нет никакой разницы будет этот цикл пользовательский или стандартный.а слабо было метаквотам сделать в МТ4 три вида функций,для подсчета числа ордеров,например вот так?
- всего открыто отложенных ордеровPHP:OrdersPending()
- открыто рыночных ордеров BUYPHP:BuyOrdersMarket()
- открыто рыночных ордеров SELL,PHP:SellOrdersMarket()
чтобы не извращаться с кодом как щас,где есть только OrdersTotal()
2- на обиженных воду возят!
мне пофигу на их обиды,они тоже плевали на мнение трейдеров!
3- они рано решили, что они пуп земли, есть и другие платформы,более продвинутые чем МТ4 и МТ5,на их месте надо было повернуться лицом к трейдерам,а не задом,но им решать кого лоббировать и кому продаваться за зеленые бумажки!
Категорически не соглашаюсь с таким мнением. Когда-то я Ренату предлагал, предложу и вам:
В 0:00 ставим 2 разнонаправленных позиции без стопов и с тейком 20 старорежимных 4х значных пунктов. Посчитайте сколько дней будет по 40 пунктов прибыли... Для облегчения скрипт в прицепе. Ставит 3 линии по цене открытия дня, +20 пунктов вверх и 20 вниз на тот день на который скрипт перетащишь мышкой. На мой взгляд лучше видно на Н1.
Ну, а если цена попёрла в одну сторону, тут уже вторая часть стратегии. К сожалению так и не доработанная. Но если применять эту стратегию визуально оценивая вероятность на следующий день, то получится неплохо.
В общем, не хочу сказать что именно это повлияло на решение MQ но хедж появился вскоре после такого моего сообщения.
начнем с конца:Вот в mql5 как раз и реализовано отдельный учёт позиций и отложенных ордеров. А поскольку им тяжело тащить 2 проекта почти одинаковых, вот они и рекламируют тот что поновее. А те кто никак не хочет расстаться с недоделкой могут написать свои функции и к ним обращаться при необходимости. Скорость не будет отличаться. Как ни крути, а отсеять какой-то отдельный тип ордеров можно только перебирая их все в цикле. И нет никакой разницы будет этот цикл пользовательский или стандартный.
Из других продвинутых есть только квик, но попробуй его освоить... Потом поделишься впечатлениями. А программирование в квике ... легче сдохнуть.
Ну и на этом я для себя эту тему прекращаю. Нет смысла пытаться тебя в чём-то убеждать. У тебя ведь нет желания попытаться понять или хотя-бы задуматься.
верно ли я понял ,что речь идет об локе,например открыт ордер BUY, и он ушел в просадку(в минуса),то открываем ему противоположный ордер SELL,так сказать локовый,вы про это имели ввиду?.....именно это я и имел ввиду что все профессиональный участники рынка понимают что это бесполезная фича.
хватит играться с хеджами, это абсолютно тупой самообман.
поняли верно но остальное видимо не захотели читать.верно ли я понял ,что речь идет об локе,например открыт ордер BUY, и он ушел в просадку(в минуса),то открываем ему противоположный ордер SELL,так сказать локовый,вы про это имели ввиду?
если так, то я бы не сказал что это бесполезняк полный, если например минусовой ордер у вас 0.5 лота, а локовый в 1.5 лота, он как раз может вытянуть минуса и сразу их закрыть оба, или в 0 или в небольшой профит по счету,но без убытка!
Может быть и так, но в тот момент я не пытался разобраться в таких тонкостях. Просто я писал такой советник и половину заказанной стратегии привёл в пример. И всё-же при любом раскладе вторая половина стратегии не отработана и лично я не вижу решения, равно как и та девушка которой я его писал.а теперь изменим вашу стратегию, можно на базе того же мт4.
если цена прошла 20 пунктов вниз - покупаем с профитом 40 пунктов. если прошла 20 пунктов вверх - продаем с профитом 40 пунктов.
это именно то что на самом деле происходило с вашим счетом по вашей же стратегии.
в чем разница спросите вы? разница в итоговой прибыли, и она огромна. вы теряете только 1 спред вместо двух. вы платите только 1 комиссию вместо двух. а на выходе получаете абсолютно тоже самое, только прибыли больше и меньше просадки.