[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 1110

 
ALEX_SPB_RU:

Всё равно не понимаю!

Даже если я явно укажу, что поиск надо начинать с нулевой позиции, то удалится объект с именем яяя_Prefix_78, т.к. функция вернёт число 4

А именно для удаления по префиксу надо указать либо ==0 либо перед функцией поставить !

Без обид, я только учусь и поэтому хочу всё для себя разложить по полочкам.

Ещё раз благодарю за помощь!

Удачи!

Это, наверное, я не достаточно ясно выразился :

if (StringFind(name, prefix,0) == 0) - это для поиска исключительно с начала строки.

Не люблю параметры по умолчанию, если только это не собственноручно написаные функции - там контроль полный....

Удачи.

 
abolk:

если можно назвать это обломом, то облом. мне бы конкретно кому-то помочь, кто нуждается в помощи. но по себе знаю, если кому-то лень самому хоть чуть-чуть разбираться в своей же задаче, то помогать - это полный облом...
это почему так? разве можно поспорить с тем, что компетентному человеку написать код быстрее и легче, чем человеку который только открыл учебник, который ошибётся несколько раз, а потом только получит нужный результат? если вы про то, что я не хочу подумать над тем как написать, то по логике я бы сразу написал задачу и попросил бы написать такую, но ведь нет, я же хочу сам разобраться, но разобраться не во всём языке, а в конкретно моей задачей
 
sergeev:

я вам написал конкретные имена функций.

даже показал алгоритм ваших действий.

вам даже лень подумать над написанным ?

как не странно, но прежде чем написать я подумал, и попытался найти эти функции в учебнике. нашел только OrderModify, я не смог найти OrderOpenPrice ,хотя помню что видел её раньше. Что касается размышлений, то я думал что такая задача относиться к логическим функциям(кажется if, then) в которую надо вписывать то что вы написали. я правильно думаю?
 
Danil93:
как не странно, но прежде чем написать я подумал, и попытался найти эти функции в учебнике. нашел только OrderModify, я не смог найти OrderOpenPrice ,хотя помню что видел её раньше. Что касается размышлений, то я думал что такая задача относиться к логическим функциям(кажется if, then) в которую надо вписывать то что вы написали. я правильно думаю?

да.

ок. если я вам дам функцию что вы хотите, вы её хоть бы в код вставить сможете самостоятельно?

 
sergeev:

да.

ок. если я вам дам функцию что вы хотите, вы её хоть бы в код вставить сможете самостоятельно?

смогу
 

как найти хай в промежутке времени от определенной даты до другой даты програмно.

есть такая функция, я так поняла что она занимается поиском хая по барам, здесь поиск хая производится от 0 бара до 4 бара, а можно вместо бара вставить дату и время этого бара?

определить как то програмно номер бара, к примеру вставляю дату 2011.01.05 20:00 и определяю какой это бар(10 или 100 бар), потом вставляю в функцию поиска хая?

iHigh(Symbol(),0,iHighest(NULL,0,MODE_HIGH,4,0)
 
Eliza:

как найти хай в промежутке времени от определенной даты до другой даты програмно.

есть такая функция, я так поняла что она занимается поиском хая по барам, здесь поиск хая производится от 0 бара до 4 бара, а можно вместо бара вставить дату и время этого бара?

определить как то програмно номер бара, к примеру вставляю дату 2011.01.05 20:00 и определяю какой это бар(10 или 100 бар), потом вставляю в функцию поиска хая?


int iBarShift( string symbol, int timeframe, datetime time, bool exact=false) 
Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. 
Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости 
от параметра exact, -1 или смещение ближайшего бара.

Параметры:
symbol   -   Символьное имя инструмента. NULL означает текущий символ. 
timeframe   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика. 
time   -   Значение времени для поиска. 
exact   -   Возвращаемое значение если бар не найден. FALSE - iBarShift возвращает ближайший. 
            TRUE - iBarShift возвращает -1. 

Пример:
  datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);

 
 
VladislavVG:

Спасибо.)
 
Danil93:
смогу
//------------------------------------------------------------------ TralTP
void TralTP()
{
        int TS=20; // расстояние убытка, на котором переносим тейкпрофит на цену открытия
        
        double FreezLvl=MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point; // расстояние заморозки ордера
        double StopLvl=MarketInfo(Symbol(), MODE_STOPLEVEL)*Point; // расстояние стопуровня ордера
        
        int n=OrdersTotal(); // число текущих открытых ордеров
        for (int i=0; i<n; i++) // проходим по всем ордерам и двигаем стоп
        {
                if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; // берем ордер
                if (OrderSymbol()!=Symbol()) continue; // если ордер не нашей валюты, то пропускаем
                
                // берем его параметры
                int dir=OrderType(); double cop=NormalizeDouble(OrderOpenPrice(), Digits);
                double csl=NormalizeDouble(OrderStopLoss(), Digits); 
                double ctp=NormalizeDouble(OrderTakeProfit(), Digits);
                
                double apr; if (dir==OP_BUY) apr=Bid; else apr=Ask;
                // проверили уровень заморозки
                if (MathAbs(ctp-apr)<=FreezLvl || MathAbs(csl-apr)<=FreezLvl) continue; // если уровень заморозки
                
                double tp=cop; // ставим ТП на цену открытия
                
                // и проверяем условия выполнения отхода в убыток и правильность установки
                if ((dir==OP_BUY && cop-apr>=TS*Point && (tp<ctp || ctp==0) && tp>apr+StopLvl)
                 || (dir==OP_SELL && apr-cop>=TS*Point && (tp>ctp || ctp==0) && tp<apr-StopLvl))
                {
                        if (!OrderModify(OrderTicket(), cop, csl, tp, 0)) 
                                Print(GetLastError(), " -TralPos #"+OrderTicket()+" tp="+tp);
                }
        }
}
 


if (OrderSymbol()!=Symbol()) continue; // если ордер не нашей валюты, то пропускаем

Еще ничего не понял,только вошол в форум,смотрю секунд 15,но тут ошибка,надо == писать,с первого взгляда.Извините,если чего не так.

С продолжением праздников!!Всех!!!!