первые 2 параметра Highest и Lowest - symbol, period. поставьте NULL, 0
и вообще, внимательно почитайте, что написано в словаре MetaEditor про эти функции
и вообще, внимательно почитайте, что написано в словаре MetaEditor про эти функции
Спасибо. А вообще-то, я писал вам, что хелп сломан, а вы (Ренат) "экспериментируйте сами", "пробуйте"... Блин. Но все равно, спасибо :)
Спасибо. А вообще-то, я писал вам, что хелп сломан, а вы (Ренат) "экспериментируйте сами", "пробуйте"... Блин. Но все равно, спасибо :)
у нас-то он не сломан. и многие вещи просто не воспроизводятся. поэтому мы просим: "если есть проблема, максимально подробно описывайте сопутствующие обстоятельства". и всегда работайте с последними билдами
Спасибо. А вообще-то, я писал вам, что хелп сломан, а вы (Ренат) "экспериментируйте сами", "пробуйте"... Блин. Но все равно, спасибо :)
у нас-то он не сломан. и многие вещи просто не воспроизводятся. поэтому мы просим: "если есть проблема, максимально подробно описывайте сопутствующие обстоятельства". и всегда работайте с последними билдами
Я всегда работаю с последними билдами. После предпоследнего апдейта хелп и перестал работать. Все подробности описал...
Работаю на вин. 2000, английская, русифицирована стандартными средствами с диска инсталляции, затем с сайта Майкрософта подкачаны все критические апдейты. А что еще написать? Если Вы мне подскажете, в каком из файлов Вашей поставки находится хелп по Highest, я посмотрю этот файл, или пришлю его вам. Вся проблема - в том, что при нажатии на ф1, выдается хелп по applied price enumeration, не всегда, но на половине ключевых слов. Проблема была и раньше, но после какого-то апдейта исчезла. Теперь вернулась. Проблема была не только у меня - на форуме кто-то ответил (когда я сообщил о проблеме в первый раз), что и у него такое было.
Надеюсь, найдете.
Кварк
Спасибо. А вообще-то, я писал вам, что хелп сломан, а вы (Ренат) "экспериментируйте сами", "пробуйте"... Блин. Но все равно, спасибо :)
у нас-то он не сломан. и многие вещи просто не воспроизводятся. поэтому мы просим: "если есть проблема, максимально подробно описывайте сопутствующие обстоятельства". и всегда работайте с последними билдами
А после сегодняшнего апдейта хелп заработал :) Зато появилась проблема с крешем, см. мой следующий пост.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В теле эксперта есть код:
double varH = High[Highest(MODE_HIGH, nBarNum, nBarNum)];
double varL = Low[Lowest(MODE_LOW, nBarNum, nBarNum)];
Print(varH, ", ", varL);
Который выводит в лог два нуля, вместо наименьшего и наибольшего значений цены. Вопрос - что не так?
С уважением,
Кварк.
int nBarNum = 700; int dD = 80; int dZazor = 10; double dLotSize = 0.1; double dInitAmount = 1000.0; int nNumOfExperts = 5; // To do: autocalculate number of active experts int nSlip = 3; double dProfit = 0; // old: arrTotals double dStopLoss = 15; double dTakeProfit = 200; double dTrailingStop = 50; int nMagic = 7; bool bReportDone = false; ////////////////// int init () { if(Symbol() == "EURUSD" && Period() == 1) { nBarNum = 700; dD = 80 * Point; dZazor = 20 * Point; dTrailingStop = 50 * Point; dStopLoss = 25 * Point; dTakeProfit = 250 * Point; nMagic = 7; } else if(Symbol() == "EURJPY" && Period() == 1) { nBarNum = 700; dD = 80 * Point; dZazor = 20 * Point; dTrailingStop = 50 * Point; dStopLoss = 25 * Point; dTakeProfit = 250 * Point; nMagic = 8; } else if(Symbol() == "USDJPY" && Period() == 1) { nBarNum = 700; dD = 80 * Point; dZazor = 10 * Point; dTrailingStop = 50 * Point; dStopLoss = 25 * Point; dTakeProfit = 200 * Point; nMagic = 9; } return(0); } ////////////////// int deinit() { return(0); } //////////////////// int start() { if(Bars < 700) return(0); if(AccountFreeMargin() < 500) return(0); Report("SimpleBreak"); // ------ double varH = High[Highest(MODE_HIGH, nBarNum, nBarNum)]; double varL = Low[Lowest(MODE_LOW, nBarNum, nBarNum)]; Print(varH, ", ", varL); int nNumOfOpenedOrders = 0; for(int nCnt = 0; nCnt < OrdersTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic && OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { nNumOfOpenedOrders++; } } dProfit = 0; for(nCnt = 0; nCnt < OrdersTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_HISTORY); if(OrderMagicNumber() == nMagic && OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { dProfit += OrderProfit(); } } if(varH - varL <= dD && nNumOfOpenedOrders < 2) { dLotSize = GetLotSize(); if(nNumOfOpenedOrders == 0) { OrderSend(Symbol(), OP_BUYSTOP, dLotSize, varH + dZazor, nSlip, varH + dZazor - dStopLoss, varH + dZazor + dTakeProfit, "SimpleBreak", nMagic, 0, Aqua); return(0); } if(nNumOfOpenedOrders == 1) { OrderSend(Symbol(), OP_SELLSTOP, dLotSize, varL - dZazor, nSlip, varL - dZazor + dStopLoss, varL - dZazor - dTakeProfit, "SimpleBreak", nMagic, 0, OrangeRed); return(0); } } int nStopCount = 0; for(nCnt = 0; nCnt < OrdersTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic && (OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderSymbol() == Symbol()) { nStopCount++; } } if(nStopCount > 0) { for(nCnt = 0; nCnt < OrdersTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic && (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) && OrderSymbol() == Symbol()) { OrderDelete(OrderTicket()); return(0); } } } // ------ for(nCnt = 0; nCnt < OrdersTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic && OrderSymbol() == Symbol()) { if(OrderType() == OP_BUY && Bid - OrderOpenPrice() > dTrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - dTrailingStop, OrderTakeProfit(), 0, Aqua); return(0); } if(OrderType() == OP_SELL) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + dTrailingStop, OrderTakeProfit(), 0, OrangeRed); return(0); } } } return(0); } // ------ double GetLotSize() { double dLot = (0.1 * dInitAmount + 0.1 * dProfit) / 1000; // To do: what fraction of free margin should be used if(dLot * 2 * dInitAmount > AccountFreeMargin() / nNumOfExperts) dLot = AccountFreeMargin() / (2 * dInitAmount * nNumOfExperts); dLot = MathFloor(dLot * 10) / 10; if(dLot < 0.1) dLot = 0.1; return(dLot); } // ------ void Report(string strFileName) { if(Hour() == 0 && Minute() >= nMagic && IsTesting() == false) { if(bReportDone == false) { int hFile = FileOpen(strFileName + "_" + Symbol() + "_" + Period() + ".rpt", FILE_BIN | FILE_WRITE, ','); string str = "CloseDateTime,Type,Profit\r\n"; FileWriteString(hFile, str, StringLen(str)); for(int nCnt = 0; nCnt < HistoryTotal(); nCnt++) { OrderSelect(nCnt, SELECT_BY_POS, MODE_HISTORY); if(OrderMagicNumber() == nMagic && OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { str = ""; str = str + TimeToStr(OrderCloseTime(), TIME_DATE|TIME_MINUTES); if(OrderType() == OP_BUY) str = str + ", buy"; else str = str + ", sell"; str = str + "," + OrderProfit(); str = str + "\r\n"; FileWriteString(hFile, str, StringLen(str)); } } FileFlush(hFile); FileClose(hFile); bReportDone = true; } } else if(Hour() != 0) bReportDone = false; } // ------