Возможно ли ограничить Equity? - страница 4

 
notused:
chv - разработчики никогда не поменяют константы OP_xxx, и догадайтесь сами почему. А по поводу стиля - хм, а с чего Вы решили, что это плохой стиль? Надо бы ИМХОй прикрываться - сколько людей, столько и мнений.
Лично я пишу
if (OrderType() > OP_SELL) OrderDelete(OrderTicket());
Видимо, не так много народу программировало на каком-нибудь спектруме или 286-м - когда каждая лишняя команда - большие тормоза при вычислении.
Короче, каждый программирует как считает нужным - не надо навязывать свой "единственно правильный" стиль


Что такое "Спектрум", я помню, так же, как и "Вектор 06Ц" и процессор КР580ВМ80А. Свой стиль я не навязываю (мне в общем параллельно, как вы пишете свой код), но всегда свой аргументирую. Если производительность, это ваш единственный аргумент вашего стиля кодирования, не подкрепленный реальными тестами, насколько она при этом повышается, то больше об этом говорить нечего, из технического вопрос перетёк в абстрактно-философский, а это форум для других целей.

 
"Элементарно, Ватсон" (с)  - вместо 4-х оп-ий сравнения и 3-х логических - всего лишь одна сравнения. Но это не важно в данном случае. А вот в других случаях (считаем матрицы какие-нибудь больших размеров) - даже пеньок затормозит, если так расхлябано писать код. Но всё зависит от цели: читабельность (для кого?), эффективность, скорость, и т. д.
 

Спасибо большое всем

Что скажете на счет того, что получилось?

Недочеты? Более оптимальные варианты?

//===Удаление ненужных отложенных ордеров===

int sells;//Количество сделок на продажу

int buys;//Количество сделок на покупку

if(OrdersTotal()>=0)

{for (int i=OrdersTotal(); i>=0; i--)

{double e=NormalizeDouble((AccountMargin()/AccountEquity()),1);

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) continue;

if (OrderType() == OP_BUY) sells++;

if (OrderType() == OP_SELL) buys++;}

{for (i=OrdersTotal()-1; i>=0; i--)

//Стоит ли один цикл отделять от другого?

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==false) continue;

if((OrderType()>OP_SELL)&&(e>1/2))

{if((sells>buys)&&(OrderType()==OP_SELLSTOP)&&(OrderOpenPrice()-Bid)<1*Point){OrderDelete(OrderTicket()); Sleep(1000);}
if((sells<buys)&&(OrderType()==OP_BUYSTOP)&&(OrderOpenPrice()-Ask)<1*Point){OrderDelete(OrderTicket()); Sleep(1000);}
if(sells==buys){OrderDelete(OrderTicket()); Sleep(1000);}

//Сколько лучше спать? Ничего не прозевает?

}}}

 
 
 
 
 

SergeyKa, боевой код нужно проверять лично, на демо-счёте. Кстати, поразмыслите над условием (OrderOpenPrice()-Bid)<1*Point