Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск.
start
-
Индекс (смещение относительно текущего бара) начального бара, с которого начинается поиск наибольшего значения. Отрицательные значения игнорируются и заменяются нулевым значением.
Что тут непонятного может быть для человека-я не знаю. Равно, как и не понимаю, что стало причиной агрессии и хамства (могли бы просто проигнорировать), ответили бы другие/справился бы сам-вам не все ли равно?
Зря Вы так воспринимаете Алексея. Он здесь один самых благожелательных людей. Он совсем не хотел Вас обидеть. К телепатам всех посылают, если не понятна задача. Это такая местная шутка со смыслом.
Вот они (ошибок в Вашем коде гораздо больше, но эти не пройдут даже через компилятор): Причем, даже если изменить код на более вменяемый с точки зрения компилятора:
то все равно будет теоретически неверно без предварительной нормализации вещественных значений перед сравнением. Хлеще того и нормализация может не дать результат, если за один тик цена изменится более чем на один пипс и проскочит Ваше условие.
Правильнее будет искать условие пересечения так:
P.S. В MetaTrader найти место с ошибкой после компиляции достаточно легко:
1. Во вкладке "Инструментарий" в графе "Файл" в круглых скобках указываются через запятую номер строки и номер символа в которых компилятор обнаружил ошибку.
2. Если в той же самой вкладке в графе "Описание" дважды кликнуть по сообщению об ошибке, то курсор в редакторе перескочит на то место, где компилятор обнаружил эту самую ошибку.
Добрый день!Уважуха всем участникам форума! Если можно, подскажите- при выключении платформы данные из журнала стираются непременно, так ведь? А как из эксперта писать принты или любые другие выводящие данные, так, чтоб при выключении компа они сохранялись бы- в блокноте там, еще либо где? Не слишком ли это сложно, и возможно ли?
dkfl.zrjdktdbx: Добрый день!Уважуха всем участникам форума! Если можно, подскажите- при выключении платформы данные из журнала стираются непременно, так ведь? А как из эксперта писать принты или любые другие выводящие данные, так, чтоб при выключении компа они сохранялись бы- в блокноте там, еще либо где? Не слишком ли это сложно, и возможно ли?
Ну если глянуть логи в папке программы, то найдете там много интересного.
sss2019: Скажите как имея цену открытия ордера и цену стоплосса рассчитать возможный убыток в валюте депозита?
//--------------------------------------------------------------------// Функция модификации StopLoss всех ордеров указанного типа// Глобальные переменные:// Mas_Ord_New Массив ордеров последний известный// int TralingStop Значение TralingStop(количество пунктов)//--------------------------------------------------------------------void SampleTrailing_texbook ( int Tip, double V_StopLossPips, double V_TakeProfitPips)
{
int Ticket; // Номер ордераdouble
Price, // Цена открытия рыночного ордера
TS, // TralingStop (относит.знач.цены)
SL, // Значение StopLoss ордера
TP; // Значение TakeProfit ордераdouble difference; //разность в пунктах double Profit;
bool Modify; // Признак необходимости модифи.//----------------------------------------------------------------------
PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));
Print("PointValue = ",PointValue, " Point = ", DoubleToStr(Point, Digits) );
Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL ); // мин уровень трала
Modify=false; // Пока не назначен к модифи
Price = OrderOpenPrice(); // Цена открытия ордера
SL = V_StopLossPips; // Значение StopLoss ордера
TP = V_TakeProfitPips; // Значение TakeProft ордера
Ticket= OrderTicket(); // Номер ордераif (TralingStop<Level_new) // Если меньше допустимого..
TralingStop=Level_new; // .. то допустимый
TS=TralingStop*Point; // То же в относит.знач.цены//-----------------------------------------------------------------switch(Tip) // Переход на тип ордера
{
case0 : // Ордер Buy
difference = NormalizeDouble (Bid-TS - OrderOpenPrice(), Digits)/Point;
Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit)if (trlinloss==false){ // тралим только профитif (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз if (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
NormalizeDouble(Bid-TS,Digits) && NormalizeDouble(Price,Digits)< NormalizeDouble(Bid-TS,Digits))
{ // ..то модифицируем его:
SL=Bid-TS; // Новый его StopLoss
Modify=true; // Назначен к модифи.
}
}
else { // тралим с зоны лоссовif (NormalizeDouble(SL,Digits)<// Если ниже желаемого..
NormalizeDouble(Bid-TS,Digits))
{ // ..то модифицируем его:
SL=Bid-TS; // Новый его StopLoss
Modify=true; // Назначен к модифи.
}
}
break; // Выход из switchcase1 : // Ордер Sell
difference = NormalizeDouble (OrderOpenPrice()-(Ask+TS),Digits)/Point;
Profit = Lots_New * difference*PointValue; // Профит по УРОВНЮ ТРАЛА рыночного ордера на данном объеме (не путать c OrderProfit) if (trlinloss==false) { // тралим с уровня профита по ордеруif (Profit>MathAbs (Sum_Loss)) // если профит по уровню трала больше суммарного убытка предыдущих поз if ((NormalizeDouble(SL,Digits)> // Если выше желаемого..
NormalizeDouble(Ask+TS,Digits)||
NormalizeDouble(SL,Digits)==0) && NormalizeDouble(Price,Digits)>NormalizeDouble(Ask+TS,Digits)) //.. или нулевой(!)
{ // ..то модифицируем его
SL=Ask+TS; // Новый его StopLoss
Modify=true; // Назначен к модифи.
}
}
else { // тралим с зоны лоссовif (NormalizeDouble(SL,Digits)>// Если выше желаемого..
NormalizeDouble(Ask+TS,Digits)||
NormalizeDouble(SL,Digits)==0)//.. или нулевой(!)
{ // ..то модифицируем его
SL=Ask+TS; // Новый его StopLoss
Modify=true; // Назначен к модифи.
}
}
} // Конец switchif (Modify==false) // Если его не надо модифи..return; // ..то идём по циклу дальшеbool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифицируем его!//----------------------------------------------------------------------if (Ans==false) // Не получилось :(
{ // Поинтересуемся ошибками:
Print("Не удалось модифицировать ордер №",OrderTicket(),". Ошибка: ",GetLastError());
return; // .. то уходим.
}
} // Выход из пользов. функции
Эта ф-ия трала рдеров из учебника, мной переделанная под собственные нужды. Здесь расчет профита на данном объеме лотов, при уровне трала и значении профита выше суммарного убытка предыдущих закрытых последовательных убыточных поз - трал включается- у Вас будет все по аналогии, только к применению не профита, как здесь, но убытка - как Вам надо.
Обратите внимание на расчет для бая и селла переменных:
double difference; //разность в пунктах double Profit;
PointValue=MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE));
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара).Что тут непонятного может быть для человека-я не знаю. Равно, как и не понимаю, что стало причиной агрессии и хамства (могли бы просто проигнорировать), ответили бы другие/справился бы сам-вам не все ли равно?
Вот они (ошибок в Вашем коде гораздо больше, но эти не пройдут даже через компилятор): Причем, даже если изменить код на более вменяемый с точки зрения компилятора:
то все равно будет теоретически неверно без предварительной нормализации вещественных значений перед сравнением. Хлеще того и нормализация может не дать результат, если за один тик цена изменится более чем на один пипс и проскочит Ваше условие.
Правильнее будет искать условие пересечения так:
P.S. В MetaTrader найти место с ошибкой после компиляции достаточно легко:
1. Во вкладке "Инструментарий" в графе "Файл" в круглых скобках указываются через запятую номер строки и номер символа в которых компилятор обнаружил ошибку.
2. Если в той же самой вкладке в графе "Описание" дважды кликнуть по сообщению об ошибке, то курсор в редакторе перескочит на то место, где компилятор обнаружил эту самую ошибку.
спасибо за подсказки.
Добрый день!Уважуха всем участникам форума! Если можно, подскажите- при выключении платформы данные из журнала стираются непременно, так ведь? А как из эксперта писать принты или любые другие выводящие данные, так, чтоб при выключении компа они сохранялись бы- в блокноте там, еще либо где? Не слишком ли это сложно, и возможно ли?
Скажите как имея цену открытия ордера и цену стоплосса рассчитать возможный убыток в валюте депозита?
Эта ф-ия трала рдеров из учебника, мной переделанная под собственные нужды. Здесь расчет профита на данном объеме лотов, при уровне трала и значении профита выше суммарного убытка предыдущих закрытых последовательных убыточных поз - трал включается- у Вас будет все по аналогии, только к применению не профита, как здесь, но убытка - как Вам надо.
Обратите внимание на расчет для бая и селла переменных:
Делайте все аналогично и все.Так я все равно не понял как узнать стоимость пункта в валюте депозита?
см. этот расчет - делайте АНАЛОГИЧНО. Все.