Артем, или это у Вас троллинг ненавязчивый такой, или Вы сами не понимаете, о чем пишете!!!
В прошлом посте Вы говорили о сортировке. Объяснил Вам, что зависимость от сортировки отсутствует.
Дискуссии о выборе ордеров по времени видел и ПРИНИМАЛ УЧАСТИЕ в одной из них. Вывод был сделан такой, что сейчас ордера располагаются в базе данных ордеров по времени их отправки на сервер. Но ТЕОРЕТИЧЕСКИ есть опасение, что разработчики могут это изменить. На этом та дискуссия закончилась. Как специалист по базам данных заверяю Вас, что это опасение напрасно, изменение исключено. Можете обратиться с этим вопросом к разработчикам. Если что-то пишу - то знаю, что пишу. Подходит 50-летний юбилей программирования. Если заметите в моих постах какую-то лажу с Вашей точки зрения - пишите в личку. Объясню, и Ваши сомнения развеются. А здесь препираться вряд ли уместно. Написал человеку скрипт - он сказал спасибо. Ведь хорошо?
Вот так же считали все те, кто рраз, и нарвался на то, что внезапно появилась зависимость от сортировки. У людей грохнулась логика. Потом опять зависимость от сортировки исчезла. Но ведь уже было. Если вы желаете зависеть не от своей программы, а от гипотетического неизменения сортировки - ваше право, но в ветке помощи новичкам вы не имеете такого права - дать скрипт, и не упомянуть о том, что он может когда-нибудь дать сбой. Поищите такие обсуждения на mql4.com - лет 6 - 7 назад.
Так я и упомянул - человек говорил про стоплосс, а не убыток.
Спасибо-то он сказал - вежливый, но он же не знает верно там, или нет ;)
Так я и упомянул - человек говорил про стоплосс, а не убыток.
Спасибо-то он сказал - вежливый, но он же не знает верно там, или нет ;)
Внимательно посмотрите, что человек написал
X = OrderProfit( ); // запомнить величину тейкпрофитаif (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY)) // если ПОСЛЕДНИЙ ордер if ( OrderType ()==OP_SELL) // СЕЛif(X < 0) // и если этот сел закрылся по стопу
Отсюда следует, что он имел в виду убыточные ордера. Так он понимает стоп. Слово стоплосс у него отсутствует
Хотел еще написать ему, что стопы - это обобщенное название StopLoss и TakeProfit. Чтобы убедиться в этом, наберите в MetaEditor 130 и нажмите F1
Стопы. Во множественном числе.
Тут работаю, Вы меня отвлекаете
Давайте лучше скажите datetime --> TimeToStruct -->MqlDateTime Как теперь обратно в datetime ???
виталик: на часовом графике отрисовывалась линия между хая и лоу
//+-------------------------------------------------------+//| на H1 суточную линию между хая и лоу PROBA.mq4|//+-------------------------------------------------------+#property strictvoidOnStart()
{
// Удалим все объектыObjectsDeleteAll();
string Символ = "GBPUSD";
datetime Первый, Последний;
int Период=PERIOD_H1;
// Прежде всего узнаем дату и время последнего бара
Последний = iTime(Символ, Период, 0);
Alert("Последний бар на часовом ",Последний);
// Теперь получить начало суток, обнулив часы// Для этого преобразуем время последнего бара в структуруMqlDateTime MqlПервый;
TimeToStruct(Последний,MqlПервый);
MqlПервый.hour=0;
// Терерь надо обратно преобразовать во время
Первый=StructToTime(MqlПервый);
Alert("Первый бар на часовом ",Первый); // Смотрим начало первого бара суток// По времени определим номер первого бара сутокint НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);
Alert("Первый бар на часовом под номером ",НомерПервого);
// Можно было просто узнать время начала бара на D1
// Теперь у нас есть НомерПервого бара, а номер послелнего = 0// Найдем на этом интервале номера баров, где макс и мин// iHighest и iLowest находят номер бара с макс и мин ценойint БарМакс = iHighest(Символ, // symbol = инструмента
Период, // timeframe = ПериодMODE_HIGH, // Наибольшая цена бара
НомерПервого+1, // Количество баров0); // Начальный барint БарМин = iLowest(Символ,
Период,
MODE_LOW, // Наименьшая цена бара
НомерПервого+1,
0);
Alert("Максимальный бар = ", БарМакс, " Минимальный бар = ", БарМин);
// iHigh и iLow дают макс и мин цены указанного бараdouble max_price=iHigh(Символ, Период, БарМакс);
double min_price=iLow (Символ, Период, БарМин);
Alert("Максимум цены = ", max_price, " Минимум цены = ", min_price);
// Проводим линиюObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[БарМакс], max_price, Time[БарМин], min_price);
ObjectSet("Макс_Мин",OBJPROP_RAY,false); // Выключить свойство бесконечного луча// Теперь хорошо бы узнать уголAlert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));
}
// Возвращает 0.0 Угол надо задавать, а потом уж получать... // Значит, зная разность цен и количество баров между Макс и Мин, угол надо вычислять // Наверное, можно покороче...
// Возвращает 0.0 Угол надо задавать, а потом уж получать... // Значит, зная разность цен и количество баров между Макс и Мин, угол надо вычислять // Наверное, можно покороче...
Для чего я это хочу использовать - у меня в советнике есть ряд фильтров и вариантов управления позицией - я хочу их комбинировать между собой, в том числе делая мини сеты (заготовленные комбинации) - в результате получу данные для анализа, при этом не буду предвзято относиться к выборке, что, надеюсь, расширит горизонты восприятия влияния настроек на результат. В итоге получиться ряд результатов, которые я проанализирую детально. Ну и, есть ещё причина, у меня есть класс для сбора статистики, который сохраняет ограниченное количество переменных в файл, что препятствует детальному анализу.
// Возвращает 0.0 Угол надо задавать, а потом уж получать... // Значит, зная разность цен и количество баров между Макс и Мин, угол надо вычислять // Наверное, можно покороче...
спасибо ещё раз,за скрипт,я переделал его в индикатор,одна беда,никак не могу понять как зациклить его,чтоб не один день показывал,то есть на истории отображался,подскажите пожалуйста
#property indicator_chart_windowexternint boom = 1;
//=================================void fishka(int ma,int mi,double map,double mip) // ф-ция
{
ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линиюObjectSet("Макс_Мин",OBJPROP_RAY,false); // Выключить свойство бесконечного луча
}
int deinit()
{
ObjectsDeleteAll();// Удалим все объектыreturn(0);
}
void start()
{
string Символ = "GBPUSD";
datetime Первый, Последний;
int Период=PERIOD_H1;
Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бараif(boom){
Alert("Последний бар на часовом ",Последний);}
MqlDateTime MqlПервый; // Теперь получить начало суток, обнулив часыTimeToStruct(Последний,MqlПервый); // Для этого преобразуем время последнего бара в структуру
MqlПервый.hour=0;
Первый=StructToTime(MqlПервый); // Терерь надо обратно преобразовать во времяif(boom){
Alert("Первый бар на часовом ",Первый);} // Смотрим начало первого бара сутокint НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара сутокif(boom){
Alert("Первый бар на часовом под номером ",НомерПервого);}
// Можно было просто узнать время начала бара на D1// Теперь у нас есть НомерПервого бара, а номер послелнего = 0// Найдем на этом интервале номера баров, где макс и мин// iHighest и iLowest находят номер бара с макс и мин ценойint БарМакс = iHighest(Символ, // symbol = инструмента
Период, // timeframe = ПериодMODE_HIGH, // Наибольшая цена бара
НомерПервого+1, // Количество баров0); // Начальный барint БарМин = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бараif(boom){
Alert("Максимальный бар = ", БарМакс, " Минимальный бар = ", БарМин);}
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бараdouble min_price=iLow (Символ, Период, БарМин);
fishka(БарМакс,БарМин,max_price,min_price); // ф-цияif(boom){
Alert("Максимум цены = ", max_price, " Минимум цены = ", min_price);
Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол
}
Если в 4 часа утра - еще мало баров за сегодняшний день. На H4 за сутки всего 6 баров. надо задать количество баров для поиска или количество пересечений.
Расстояния большие = тренд
Запускаю как скрипт все работает , а если компелирую код как советник то все линии находятся рядом немогу понять в чем подвох
Артем, или это у Вас троллинг ненавязчивый такой, или Вы сами не понимаете, о чем пишете!!!
В прошлом посте Вы говорили о сортировке. Объяснил Вам, что зависимость от сортировки отсутствует.
Дискуссии о выборе ордеров по времени видел и ПРИНИМАЛ УЧАСТИЕ в одной из них. Вывод был сделан такой, что сейчас ордера располагаются в базе данных ордеров по времени их отправки на сервер. Но ТЕОРЕТИЧЕСКИ есть опасение, что разработчики могут это изменить. На этом та дискуссия закончилась. Как специалист по базам данных заверяю Вас, что это опасение напрасно, изменение исключено. Можете обратиться с этим вопросом к разработчикам. Если что-то пишу - то знаю, что пишу. Подходит 50-летний юбилей программирования. Если заметите в моих постах какую-то лажу с Вашей точки зрения - пишите в личку. Объясню, и Ваши сомнения развеются. А здесь препираться вряд ли уместно. Написал человеку скрипт - он сказал спасибо. Ведь хорошо?
Вот так же считали все те, кто рраз, и нарвался на то, что внезапно появилась зависимость от сортировки. У людей грохнулась логика. Потом опять зависимость от сортировки исчезла. Но ведь уже было. Если вы желаете зависеть не от своей программы, а от гипотетического неизменения сортировки - ваше право, но в ветке помощи новичкам вы не имеете такого права - дать скрипт, и не упомянуть о том, что он может когда-нибудь дать сбой. Поищите такие обсуждения на mql4.com - лет 6 - 7 назад.
Так я и упомянул - человек говорил про стоплосс, а не убыток.
Спасибо-то он сказал - вежливый, но он же не знает верно там, или нет ;)
Так я и упомянул - человек говорил про стоплосс, а не убыток.
Спасибо-то он сказал - вежливый, но он же не знает верно там, или нет ;)
Внимательно посмотрите, что человек написал
Отсюда следует, что он имел в виду убыточные ордера. Так он понимает стоп. Слово стоплосс у него отсутствует
Хотел еще написать ему, что стопы - это обобщенное название StopLoss и TakeProfit. Чтобы убедиться в этом, наберите в MetaEditor 130 и нажмите F1
Стопы. Во множественном числе.
Тут работаю, Вы меня отвлекаете
Давайте лучше скажите datetime --> TimeToStruct -->MqlDateTime Как теперь обратно в datetime ???
Внимательно посмотрите, что человек написал
Отсюда следует, что он имел в виду убыточные ордера. Так он понимает стоп. Слово стоплосс у него отсутствует
Хотел еще написать ему, что стопы - это обобщенное название StopLoss и TakeProfit. Чтобы убедиться в этом, наберите в MetaEditor 130 и нажмите F1
Стопы. Во множественном числе.
Тут работаю, Вы меня отвлекаете
Давайте лучше скажите datetime --> TimeToStruct -->MqlDateTime Как теперь обратно в datetime ???
StructToTime()
// Возвращает 0.0 Угол надо задавать, а потом уж получать...
// Значит, зная разность цен и количество баров между Макс и Мин, угол надо вычислять
// Наверное, можно покороче...
// Возвращает 0.0 Угол надо задавать, а потом уж получать...
// Значит, зная разность цен и количество баров между Макс и Мин, угол надо вычислять
// Наверное, можно покороче...
огромное спс )
Уф, что то я не могу сообразить, как добавлять переменные - т.е. допустим, у меня их 4 булевых, и нужно их перебрать?
Я понимаю суть дела - должен быть остаток меньше или больше нуля после деления - но не как не соображу как этого добиться :(
Для булевых подход немного другой
двоичное кодирование.
Максимальное N в этом случае меньше 16
Не могу понять что Вы хотите получить
Для булевых подход немного другой
двоичное кодирование.
Максимальное N в этом случае меньше 16
Не могу понять что Вы хотите получить
Вы генний! Спасибо!
у меня получилось 16 вариантов
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=15; A=true; B=true; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=13; A=true; B=false; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=9; A=true; B=false; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=1; A=true; B=false; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=5; A=true; B=false; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=3; A=true; B=true; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=11; A=true; B=true; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=7; A=true; B=true; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=14; A=false; B=true; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=6; A=false; B=true; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=10; A=false; B=true; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=2; A=false; B=true; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=12; A=false; B=false; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=4; A=false; B=false; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=8; A=false; B=false; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=0; A=false; B=false; C=false; D=false
огромное спс )
// Возвращает 0.0 Угол надо задавать, а потом уж получать...
// Значит, зная разность цен и количество баров между Макс и Мин, угол надо вычислять
// Наверное, можно покороче...
спасибо ещё раз,за скрипт,я переделал его в индикатор,одна беда,никак не могу понять как зациклить его,чтоб не один день показывал,то есть на истории отображался,подскажите пожалуйста
Если в 4 часа утра - еще мало баров за сегодняшний день. На H4 за сутки всего 6 баров. надо задать количество баров для поиска или количество пересечений.
Расстояния большие = тренд