Как упростить написание открытия, закрытия, удаления ордеров и улучшить наглядность программы - страница 2

 
Integer:

https://forum.mql4.com/ru/11381/page155#334411 четвертый пост сверху (сон программиста).

 



Ладно, уговорили - я новичок и стиль мой приметивен. Я затронул избитую тему, пытаясь изобрести велосипед, но даже самоката не получилось. Не дождался новичок похлопывания по плечу от больших дядей, а только одни подзатыльники. 

Может кто-нибудь подбросит ссылочку на уже изобретенный велосипед, плиз.

 

Может кто-нибудь подбросит ссылочку на уже изобретенный велосипед, плиз.

https://www.mql5.com/ru/search
 


Благодарю! Буду изучать произведения мастодонтов.
 
3.14:



Ладно, уговорили - я новичок и стиль мой приметивен. Я затронул избитую тему, пытаясь изобрести велосипед, но даже самоката не получилось. Не дождался новичок похлопывания по плечу от больших дядей, а только одни подзатыльники. 

Может кто-нибудь подбросит ссылочку на уже изобретенный велосипед, плиз.


Никаких подзатыльников, просто шутка. Сделайте, чтобы первый параметр был обязательным, пусть он определяет действие выполняемое функцией - буде нагляно и можно будет поиском по коду пользоваться.
 
Integer:

Никаких подзатыльников, просто шутка. Сделайте, чтобы первый параметр был обязательным, пусть он определяет действие выполняемое функцией - буде нагляно и можно будет поиском по коду пользоваться.



Не соображу, так ведь первый параметр volume и так обязательный (он единственный без умолчаний). 

int Order(double volume, int StopLoss=0, int TakeProfit=0, int cmd=0, int delta=0, int expiration=0)

volume -  объем лота

StopLoss - понятно 

TakeProfit - тоже понятно 

cmd - тип операций для функции OrderSend().  Может быть OP_BUY (по умолчанию), OP_SELL( им можно не пользовалься, т.к. при отрицательном значении volume подразумевается команда SELL), OP_BUYLIMIT.....OP_SELLSTOP

delta - величина в пунктах смещения от текущей цены для выставления отложенного ордера  

expiration - время жизни отложенного ордера 

 
ForexTools:

улучшить наглядность говорите? ;)

что более наглядно и понятно при прочтении кода? (выберите правильный вариант)

1) CloseAllMarketOrders(); Open(OP_BUY, 0.03, "EURUSD")

2) Order(0); Order(0.03);

к томуже: достаточно одного неловкого движения клавишей BackSpace и команда открытия ордера Order(0.03) превратится в команду закрытия Order(0.0) и компилятор не выругается да и вы сразу это место не найдете ;)




Согласен Order(-0.001); - не очень понятно и кривовато, но это частный случай, когда по одному инструменту открыты ордера в двух направлениях (я считаю этого не нужно никогда делать  и по-моему в 5 MetaTrader этого и не удасться сделать), т.ч. такой вид применяться не будет в жизни.

Order(0); - означает, что по  BUY и SELL не должно быть ни одного открытого ордера

Order(lots); означает, что должен быть открыт только BUY lots лотов (если принято решение на покупку, то закрывай все SELL)

Order(-lots); означает, что должен быть открыт только SELL lots лотов(если принято решение на продажу, то закрывай все BUY) 

    Если нужно выставлять TP и SL добавляй параметры: 

Order(lots, SL, TP);

   Нужен отложенный ордер:

Order(lots, SL, TP, OP_SELLLIMIT, sdvig,wait);

Повторяю - программа сырая - я на неё потралил от силы 1 час, еще не реализована модификация ордеров, не отработана концепция "доливания" к имеющимся открытым позициям. Эта функция - просто мысль вслух. Надеюсь скоро найду время и приведу её более или менее в Божеский вид. 

 
3.14:


Эта функция - просто мысль вслух. Надеюсь скоро найду время и приведу её более или менее в Божеский вид.

эммм... наверно не стоит просто так свои мысли выплескивать на общее обозрение - конфуз может случится. и действительно не стоит велосипед изобретать - "все уже украдено до вас". У Игоря каждая функция уже давным давно вылизана до самого последнего комментария. Пользуйтесь, затачивайте их под себя, под свою торговлю. А восторг от освоенных функций програмирования быстро остужается реалиями торговли - там надо не красиво, а быстро и надежно ;)

Причина обращения: