Помогите доработать скрипт - страница 2 12 Новый комментарий Alekseu Fedotov 2014.01.20 14:45 #11 kilnart: к сожалению не правильное решение, такой вариант у меня тоже был. дело в том, что к функции обращаемся из цикла, и значения lot и price при каждой итерации обнуляются. если убрать обнуление, тогда при прогоне по Buy, и в случае если есть Sell, то Buy позиции прибавляются к Sell`овым. //+------------------------------------------------------------------+ //| AveragePrice.mq4 | //| Copyright 2013, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" double lotBuy, lotSell, priceBuy, priceSell; double avgpriceBuy, avgpriceSell; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- ObjectsDeleteAll(); for (int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderType() == OP_BUY) { lotBuy += OrderLots(); priceBuy += OrderOpenPrice() * OrderLots() } if (OrderSymbol() == Symbol() && OrderType() == OP_SELL) { lotSell += OrderLots(); priceSell += OrderOpenPrice() * OrderLots(); } } } avgpriceBuy=0; avgpriceSell=0; if(lotBuy !=0) avgpriceBuy = priceBuy / lotBuy; if(lotSell !=0) avgpriceSell = priceSell / lotSell; CreatObject(avgpriceBuy); CreatObject(avgpriceSell); //---- return(0); } //+------------------------------------------------------------------+ void CreatObject(double price) { string name = "AveragePrice "; name = name + DoubleToStr(price,Digits); ObjectCreate(name,OBJ_HLINE,0,0,price); ObjectSet(name,OBJPROP_STYLE,STYLE_DOT); } //+------------------------------------------------------------------+ Как-то так Ahmad Mehdiyev 2014.01.20 14:50 #12 Верно. Первый вариант, т.е. делать расчет внутри цикла для каждого типа ордеров - наиболее правильный. Второй вариант удалю чтобы никого не путать.И еще не забудьте проверку на деление на 0, и нормализацию средних значений. Любые вопросы новичков по вопрос новичка [АРХИВ!] Любой вопрос новичка, Kilnart 2014.01.20 15:02 #13 спасибо ребят. оставлю первый вариант, и буду наращивать свои знания в программировании 12 Новый комментарий
к сожалению не правильное решение, такой вариант у меня тоже был.
дело в том, что к функции обращаемся из цикла, и значения lot и price при каждой итерации обнуляются.
если убрать обнуление, тогда при прогоне по Buy, и в случае если есть Sell, то Buy позиции прибавляются к Sell`овым.
спасибо ребят. оставлю первый вариант, и буду наращивать свои знания в программировании