OrderSelect по тикету сделан ранее. Ордер отложенный. Каким запросом получить что ордер стал рыночным, кроме как проверки типа ордера на каждом тике. В логах это время записывается, но получается поля для этого времени в структуре ордера не предусмотрено, или я не прав? При смене типа ордера OrdersTotal(), и OrdersHistoryTotal тоже не изменяются, если правильно понимаю.
С остальным вроде прояснилось)
OrderOpenTime пробовали? я уж не помню меняется ли оно при сработке отложника.
В каких случаях есть необходимость каждый тик (а не перед ключевыми действиями или каждую 1..5.. минут) проверять сработку отложника я не знаю, но другого пути в МТ4 нет.
В МТ5 поудобнее. В ОТТ узнаёшь о проведении транзакции, если надо работать со списками, то проводишь обработку в ОТ
datetime some_time=TimeCurrent();
externstring Symbol3 = ""; //Инструмент (""текущий по умолчанию)externdouble P=15; //Таймфреймint start()
{
//Инициализация переменныхbool FractalsUp=false;
bool FractalsDown=false;
int FractalsUpPrice=0;
int FractalsDownPrice=0;
int FractalsLimit=100;
double EMA=iMA(NULL,P,5,3,MODE_EMA,PRICE_CLOSE,0);
//Цикл сканирования последних свечей FractalsLimit, начиная с самых старых и заканчивая самыми последними.for (int i=FractalsLimit; i>=0; i--)
{
//Если на свече есть фрактал, значение будет больше нуля и будет равно самой высокой или самой низкой цене.double fu=iFractals(NULL,0,MODE_UPPER,i);
double fl=iFractals(NULL,0,MODE_LOWER,i);
//Если есть верхний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsUp.if(fu>0)
{
FractalsUp=true;
FractalsDown=false;
FractalsUpPrice=fu;
if (((Close[0])>fu)&&(OrdersTotal() == 0)&&(Close[0]>Open[0])&&(Close[0]>High[1]&&(Close[0]>EMA)))
{
if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))
{
datetime Cd=OrderCloseTime();
int hd=+iBarShift(Symbol3,P,Cd)+1;
if (hd<=2)
{
return(-1);
}
}
metka1();
}
}
//Если есть нижний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsDown.if(fl>0)
{
FractalsUp=false;
FractalsDown=true;
FractalsDownPrice=fl;
if (((Close[0])<fl)&&(OrdersTotal() == 0)&&(Close[0]<Open[0])&&(Close[0]<Low[1]&&(Close[0]<EMA)))
{
if ((OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS, MODE_HISTORY)==true))
{
datetime Cd1=OrderCloseTime();
int hd1=+iBarShift(Symbol3,P,Cd1)+1;
if (hd1<=2)
{
return(-1);
}
}
metka2();
}
}
//Если свеча имеет верхний и нижний фрактал, значения сохраняются, но мы не считаем его последним фракталом.if(fu>0 && fl>0)
{
FractalsUp=false;
FractalsDown=false;
FractalsUpPrice=fu;
FractalsDownPrice=fl;
}
}
return(0);
}
int metka1()
{
int send1=OrderSend(Symbol3,OP_BUY,0.01,Ask,3,Bid-70*Point,Bid+70*Point);
return(0);
}
int metka2()
{
int send2=OrderSend(Symbol3,OP_SELL,0.01,Bid,3,Ask+70*Point,Ask-70*Point);
return(0);
}
Добрый день!
Работаю на совой по фракталам. Есть проблема. Помогите. Суть в чём:
Скрипт выискивает последний верхний или нижний фрактал из 100 последних свечей переменная [FractalsLimit=100;] и открывает позицию BUY - если пробит повышающийся фрактал, и наоборот для SELL.
А нужно чтобы - из 100 последних свечей находил максимальный, или минимальный фрактал и с учётом их открывал позицию. То есть ориентировался только на максимальные и минимальные фракталы, а не на последние.
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
OrderOpenTime пробовали? я уж не помню меняется ли оно при сработке отложника.
В каких случаях есть необходимость каждый тик (а не перед ключевыми действиями или каждую 1..5.. минут) проверять сработку отложника я не знаю, но другого пути в МТ4 нет.
В МТ5 поудобнее. В ОТТ узнаёшь о проведении транзакции, если надо работать со списками, то проводишь обработку в ОТ
OrderOpenTime показывает время открытия отложки. Вопрос на понимание работы больше. Получается в лог и журнал время записывается и больше нигде не отражается. Соответственно если мы его не зафиксировали, то только потом можем посмотреть, по факту)))))
В МТ5 это будет открытие позиции / сделка, если правильно понимаю. Хоть мне и деление на ордер / сделка / позиция малопонятна как оптимальное решение, но данных больше конечно.
бывает и такое)) 1 очень теряется на фоне англ.букв l i и т.п., удобнее называть тогда суффиксы 001, 2.. и т.п.
Я Вас понял) исправил ошибку, теперь значение второго хендла равно 1,0. Если в первом хендле поставить больший таймфрейм, чем во втором, то значение второго хендла равно 0. Подскажите пожалуйста, что нужно еще исправить, чтобы получить верное значение второго хендла?
OrderOpenTime показывает время открытия отложки. Вопрос на понимание работы больше. Получается в лог и журнал время записывается и больше нигде не отражается. Соответственно если мы его не зафиксировали, то только потом можем посмотреть, по факту)))))
Вы с неделю этот вопрос поднимаете, предлагал же Вам пересмотреть принципы выставления ордеров в торговой стратегии
но если этот вопрос все же очень Вам важен , вообще не проблема "зафиксировать" с дискретностью в один тик
можно "фиксировать" как делают все новички, в большой массив сохранять тикеты отложенных ордеров и проверять эти тикеты по приходу тика - про скорость уже писал, не критично ни в тестере ни на реале, но будут проблемы - с массивом не удобно, их нудно чистить - это добавит ошибок...
в CArrayInt будете добавлять тикеты и этот тип данных позволит Вам без труда удалять "тикеты которые стали рыночными"
как писал выше точность - 1 тик, код по проверке будет минимальный
Valeriy Yastremskiy:
В МТ5 это будет открытие позиции / сделка, если правильно понимаю. Хоть мне и деление на ордер / сделка / позиция малопонятна как оптимальное решение, но данных больше конечно.
если можете писать под МТ5 - тогда к чему разговор? пишите, платформа боле мощная, функционал выше - сравнивать МТ4 и МТ5 нет смысла, в МТ4 проще войти, но в МТ5 больше возможностей
Вы с неделю этот вопрос поднимаете, предлагал же Вам пересмотреть принципы выставления ордеров в торговой стратегии
Осталось не понятным. Стратегия конечно другая. Вопрос возник от того, что достаточно важное событие отражается только в логе. И никто напрямую не ответил, что нет нигде кроме лога времени, когда ордер стал рыночным))))
А логика стратегии от терминала не зависит. Если логика хромает, то наоптить можно конечно, но прихрамываение не уберется))))
Осталось не понятным. Стратегия конечно другая. Вопрос возник от того, что достаточно важное событие отражается только в логе. И никто напрямую не ответил, что нет нигде кроме лога времени, когда ордер стал рыночным))))
нет этой информации - нетуууу!!!
важность... ну Вам важно, до этого сколько лет писали стратегии и как бы получалось, даже в профит ;)
обычно не сопровождают много отложенных ордеров, следят за рыночными ордерами, при необходимости добавляют отложенный - стал рыночным еще отложенный
пишется все и усреднение и пирамилинг и сетки ордеров и ... и локи... да не помню уже, этих выкрутасов по форумам трейдеров нужно почитать, не читаю с год - мыслей своих больше теперь чем чужих )))
важность... ну Вам важно, до этого сколько лет писали стратегии и как бы получалось, даже в профит ;)
обычно не сопровождают много отложенных ордеров, следят за рыночными ордерами, при необходимости добавляют отложенный - стал рыночным еще отложенный
пишется все и усреднение и пирамилинг и сетки ордеров и ... и локи... да не помню уже, этих выкрутасов по форумам трейдеров нужно почитать, не читаю с год - мыслей своих больше теперь чем чужих )))
Спасибо))))
Мартин и усреднение это самообман и запредельный (потому что ни просчитать, ни спрогнозировать риск нельзя по определению свойств ВР))))) риск, который иногда, но только иногда, оправдывается))))
Если стратегия верная, то хватит и одного ордера))))
Здравствуйте! Столкнулся с проблемой, как изменить параметры пользовательского индикатора из советника. Проблема в том что при изменении любого параметра в списке индикаторов создается его новая копия, когда заходишь в свойства этих копий то каждая копия со своим параметром. Чем больше я меняю разных значений параметра столько разных копий и создается. Использую через iCustom.
OrderSelect по тикету сделан ранее. Ордер отложенный. Каким запросом получить что ордер стал рыночным, кроме как проверки типа ордера на каждом тике. В логах это время записывается, но получается поля для этого времени в структуре ордера не предусмотрено, или я не прав? При смене типа ордера OrdersTotal(), и OrdersHistoryTotal тоже не изменяются, если правильно понимаю.
С остальным вроде прояснилось)
OrderOpenTime пробовали? я уж не помню меняется ли оно при сработке отложника.
В каких случаях есть необходимость каждый тик (а не перед ключевыми действиями или каждую 1..5.. минут) проверять сработку отложника я не знаю, но другого пути в МТ4 нет.
В МТ5 поудобнее. В ОТТ узнаёшь о проведении транзакции, если надо работать со списками, то проводишь обработку в ОТ
Добрый день!
Работаю на совой по фракталам. Есть проблема. Помогите. Суть в чём:
Скрипт выискивает последний верхний или нижний фрактал из 100 последних свечей переменная [FractalsLimit=100;] и открывает позицию BUY - если пробит повышающийся фрактал, и наоборот для SELL.
А нужно чтобы - из 100 последних свечей находил максимальный, или минимальный фрактал и с учётом их открывал позицию. То есть ориентировался только на максимальные и минимальные фракталы, а не на последние.
OrderOpenTime пробовали? я уж не помню меняется ли оно при сработке отложника.
В каких случаях есть необходимость каждый тик (а не перед ключевыми действиями или каждую 1..5.. минут) проверять сработку отложника я не знаю, но другого пути в МТ4 нет.
В МТ5 поудобнее. В ОТТ узнаёшь о проведении транзакции, если надо работать со списками, то проводишь обработку в ОТ
OrderOpenTime показывает время открытия отложки. Вопрос на понимание работы больше. Получается в лог и журнал время записывается и больше нигде не отражается. Соответственно если мы его не зафиксировали, то только потом можем посмотреть, по факту)))))
В МТ5 это будет открытие позиции / сделка, если правильно понимаю. Хоть мне и деление на ордер / сделка / позиция малопонятна как оптимальное решение, но данных больше конечно.
бывает и такое)) 1 очень теряется на фоне англ.букв l i и т.п., удобнее называть тогда суффиксы 001, 2.. и т.п.
Я Вас понял) исправил ошибку, теперь значение второго хендла равно 1,0. Если в первом хендле поставить больший таймфрейм, чем во втором, то значение второго хендла равно 0. Подскажите пожалуйста, что нужно еще исправить, чтобы получить верное значение второго хендла?
OrderOpenTime показывает время открытия отложки. Вопрос на понимание работы больше. Получается в лог и журнал время записывается и больше нигде не отражается. Соответственно если мы его не зафиксировали, то только потом можем посмотреть, по факту)))))
Вы с неделю этот вопрос поднимаете, предлагал же Вам пересмотреть принципы выставления ордеров в торговой стратегии
но если этот вопрос все же очень Вам важен , вообще не проблема "зафиксировать" с дискретностью в один тик
можно "фиксировать" как делают все новички, в большой массив сохранять тикеты отложенных ордеров и проверять эти тикеты по приходу тика - про скорость уже писал, не критично ни в тестере ни на реале, но будут проблемы - с массивом не удобно, их нудно чистить - это добавит ошибок...
что хотел бы предложить изучить - СБ CArrayInt https://www.mql5.com/ru/docs/standardlibrary/datastructures/carrayint
в CArrayInt будете добавлять тикеты и этот тип данных позволит Вам без труда удалять "тикеты которые стали рыночными"
как писал выше точность - 1 тик, код по проверке будет минимальный
В МТ5 это будет открытие позиции / сделка, если правильно понимаю. Хоть мне и деление на ордер / сделка / позиция малопонятна как оптимальное решение, но данных больше конечно.
если можете писать под МТ5 - тогда к чему разговор? пишите, платформа боле мощная, функционал выше - сравнивать МТ4 и МТ5 нет смысла, в МТ4 проще войти, но в МТ5 больше возможностей
Вы с неделю этот вопрос поднимаете, предлагал же Вам пересмотреть принципы выставления ордеров в торговой стратегии
Осталось не понятным. Стратегия конечно другая. Вопрос возник от того, что достаточно важное событие отражается только в логе. И никто напрямую не ответил, что нет нигде кроме лога времени, когда ордер стал рыночным))))
А логика стратегии от терминала не зависит. Если логика хромает, то наоптить можно конечно, но прихрамываение не уберется))))
Осталось не понятным. Стратегия конечно другая. Вопрос возник от того, что достаточно важное событие отражается только в логе. И никто напрямую не ответил, что нет нигде кроме лога времени, когда ордер стал рыночным))))
нет этой информации - нетуууу!!!
важность... ну Вам важно, до этого сколько лет писали стратегии и как бы получалось, даже в профит ;)
обычно не сопровождают много отложенных ордеров, следят за рыночными ордерами, при необходимости добавляют отложенный - стал рыночным еще отложенный
пишется все и усреднение и пирамилинг и сетки ордеров и ... и локи... да не помню уже, этих выкрутасов по форумам трейдеров нужно почитать, не читаю с год - мыслей своих больше теперь чем чужих )))
нет этой информации - нетуууу!!!
важность... ну Вам важно, до этого сколько лет писали стратегии и как бы получалось, даже в профит ;)
обычно не сопровождают много отложенных ордеров, следят за рыночными ордерами, при необходимости добавляют отложенный - стал рыночным еще отложенный
пишется все и усреднение и пирамилинг и сетки ордеров и ... и локи... да не помню уже, этих выкрутасов по форумам трейдеров нужно почитать, не читаю с год - мыслей своих больше теперь чем чужих )))
Спасибо))))
Мартин и усреднение это самообман и запредельный (потому что ни просчитать, ни спрогнозировать риск нельзя по определению свойств ВР))))) риск, который иногда, но только иногда, оправдывается))))
Если стратегия верная, то хватит и одного ордера))))
Если стратегия верная, то хватит и одного ордера))))
если в Вашей ТС жестко задано количество ордеров, то у Вас не должно быть проблем с определением, что произошло на текущем тике с отложенными ордерами
знание точного времени ничего не даст - вся информация все равно поступает по приходу тика - нет тика нет информации
Здравствуйте! Столкнулся с проблемой, как изменить параметры пользовательского индикатора из советника. Проблема в том что при изменении любого параметра в списке индикаторов создается его новая копия, когда заходишь в свойства этих копий то каждая копия со своим параметром. Чем больше я меняю разных значений параметра столько разных копий и создается. Использую через iCustom.
Например:
#resource "\\Indicators\\inicator.ex4"
extern int Var1=1;
//------------------------------------------
void OnTick()
{
int A;
Var1++;
A=iCustom(Symbol(),PERIOD_CURRENT,"::Indicators\\indicator",Var1,0,0);
В итоге в списке индикаторов видим:
Indicator (с параметром Var1=2)
Indicator (с параметром Var1=3)
Indicator (с параметром Var1=4)
.... и т.д.