Вчера я спешил, нужно было уйти. Написал вопрос в том момент не тот, который хотел.
На самом деле, я имел ввиду именно эксперты, которые при заданном условии кидают пачку ордеров (сетку). Вот в таких экспертах я не встречал, чтоб проверялись ни спред, ни стоплевел, ни положение цены выше (ниже Аска или Бида) ни что-н. ещё. Щяс напишу как это вижу сам, выложу на всеобщий суд..
Зачем вообще брать в пример какие-то горе-эксперты? Как минимум они предназначены исключительно для тестера, как максимум - написаны кривыми руками, как было сказано выше...
Зачем вообще брать в пример какие-то горе-эксперты? Как минимум они предназначены исключительно для тестера, как максимум - написаны кривыми руками, как было сказано выше...
Ну я понимал как это реализовать, но решил посмотреть как это делают другие.
Ребят, у меня очень ужасная проблема! У меня график не смещается влево, когда я сохраняю рисунок! Функция "смещение графика" активирована! Как исправить?
Здравствуйте, я не давно начал изучать mql4 может кто то из опытных программистов поможет. Есть скрипт он локирует ордера как только они уходят в минус, как сделать чтобы он локировал с определённого уровня(например когда ордер достигнет -30 или -40) который можно будет прописывать в свойствах.
Хочу чтобы эксперт открывал не больше одной сделки в день. Подскажите как это сделать.
externint MagicNumber=555;
//---if (OrdersTotal()>0) // Есть ли отложенные ордера или открытые позиции
{ for (i=OrdersTotal()-1; i>=0; i--) // Перебираем ордера
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Oрдер выбирается среди открытых и отложенных ордеров
{ if (OrderSymbol()!=Symbol()) continue; // Если торговый символ не тот, на котором работает эксперт - игнорируетсяif (OrderMagicNumber()!=MagicNumber) continue; // Если магик номер не тот, что надо - игнорируетсяif (OrderOpenTime()>=iTime(NULL,PERIOD_D1,0)) // Если время открытия ордера больше или равен началу открытия данной свечи,// то дальший код эксперта не работает. Вместо PERIOD_D1 можно вставить любой другой период.return(0);
} } }
Ребят, у меня очень ужасная проблема! У меня график не смещается влево, когда я сохраняю рисунок! Функция "смещение графика" активирована! Как исправить?
Обратите внимание: на графике вверху справа есть такой ма-а-а-ленький треугольничек. При наведении на него курсора подсказочка всплывает "Смещение графика". Зацепите его и влево сдвиньте на столько, на сколько нужно освободить место справа.
Зачем вообще брать в пример какие-то горе-эксперты? Как минимум они предназначены исключительно для тестера, как максимум - написаны кривыми руками, как было сказано выше...
Написал по-своему. Особо не оптил код, писал просто что б работало, чтоб показать логику.
//+-------------------------------------------------------------------------------------+//| Открытие длинной позиции |//+-------------------------------------------------------------------------------------+bool OpenBuy(double initialOOP, int i)
{
int ticket;
ticket = OrderSend(Symbol(), OP_BUYSTOP,0.1,NormalizeDouble(Ask + (step*i) * pt, Digits),3,0,0,NULL,i_magic,0,CLR_NONE);
if (ticket > 0)
return (true);
}
//+-------------------------------------------------------------------------------------+//| Открытие короткой позиции |//+-------------------------------------------------------------------------------------+bool OpenSell(double initialOOP, int i)
{
int ticket;
ticket = OrderSend(Symbol(), OP_SELLSTOP,0.1,NormalizeDouble(Bid - (step*i)*pt, Digits),3,0,0,NULL,i_magic,0,CLR_NONE);
if (ticket > 0)
return (true);
}
//+-------------------------------------------------------------------------------------+//| Посылаем пачку ордеров на сервер |//+-------------------------------------------------------------------------------------+bool SendPackOfOrders(int lastPosTicket, int lastPosType, double initialOOP)
{
if (lastPosTicket == -1) // Если нет рыночных ордеров, значит..return(false); //..сетку отложек не кидаем// if (lastPosType != g_lastPosType) // Если тикет изменился, значит..
{
lastPosType = g_lastPosType;
for (int i=1; i<=5; i++)
{
if (!OpenBuy(initialOOP, i))
return(false);
if (!OpenSell(initialOOP, i))
return(false);
}
}
}
тут step - шаг расстановки сетки ордеров.
Мой вопрос такой. Логика правильная моя? Может как-то можно адекватнее прооптить код чтоб он быстрее работал? С точки зрения производительности..
Так же вот мысль есть, может нада паузы делать после каждого посыла? Ну в общем вот эти моменты мне очень интересны.
Вчера я спешил, нужно было уйти. Написал вопрос в том момент не тот, который хотел.
На самом деле, я имел ввиду именно эксперты, которые при заданном условии кидают пачку ордеров (сетку). Вот в таких экспертах я не встречал, чтоб проверялись ни спред, ни стоплевел, ни положение цены выше (ниже Аска или Бида) ни что-н. ещё. Щяс напишу как это вижу сам, выложу на всеобщий суд..
Зачем вообще брать в пример какие-то горе-эксперты? Как минимум они предназначены исключительно для тестера, как максимум - написаны кривыми руками, как было сказано выше...
Зачем вообще брать в пример какие-то горе-эксперты? Как минимум они предназначены исключительно для тестера, как максимум - написаны кривыми руками, как было сказано выше...
Ну я понимал как это реализовать, но решил посмотреть как это делают другие.
Ребят, у меня очень ужасная проблема! У меня график не смещается влево, когда я сохраняю рисунок! Функция "смещение графика" активирована! Как исправить?
Здравствуйте!
Хочу чтобы эксперт открывал не больше одной сделки в день. Подскажите как это сделать.
Здравствуйте, я не давно начал изучать mql4 может кто то из опытных программистов поможет. Есть скрипт он локирует ордера как только они уходят в минус, как сделать чтобы он локировал с определённого уровня(например когда ордер достигнет -30 или -40) который можно будет прописывать в свойствах.
void start()
{
double StopLoss;
double Lots=0;
for(int i=0;i<OrdersTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_POS))
continue;
if(OrderSymbol()!=Symbol())
continue;
if(OrderType()==OP_BUY)
Lots+=OrderLots();
if(OrderType()==OP_SELL)
Lots-=OrderLots();
}
if(Lots>0)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,0,NULL,Red);
if(Lots<0)
OrderSend(Symbol(),OP_BUY,-(Lots),Ask,3,Bid-StopLoss*Point,0,NULL,Blue);
Здравствуйте!
Хочу чтобы эксперт открывал не больше одной сделки в день. Подскажите как это сделать.
Ребят, у меня очень ужасная проблема! У меня график не смещается влево, когда я сохраняю рисунок! Функция "смещение графика" активирована! Как исправить?
Ну я понимал как это реализовать, но решил посмотреть как это делают другие.
Спасибо за подсказку!
Только в предложенном варианте эксперт не работает)))) Предлагаю рабочий вариант, который я получил :
if (OrdersTotal()==0) // Если нет открытых позиций
{ for (int i=OrdersHistoryTotal()-1; i>=0; i--) // Перебираем ордера из списка истории счёта
{ if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) // Oрдер выбирается среди закрытых ордеров
{
if (OrderCloseTime()>=iTime(NULL,PERIOD_D1,0)) // Если время закрытия ордера больше или равен началу открытия данной свечи,
// то эксперт не работает. Вместо PERIOD_D1 можно вставить любой другой период.
return(-1);
} } }
Зачем вообще брать в пример какие-то горе-эксперты? Как минимум они предназначены исключительно для тестера, как максимум - написаны кривыми руками, как было сказано выше...
Написал по-своему. Особо не оптил код, писал просто что б работало, чтоб показать логику.
тут step - шаг расстановки сетки ордеров.
Мой вопрос такой. Логика правильная моя? Может как-то можно адекватнее прооптить код чтоб он быстрее работал? С точки зрения производительности..
Так же вот мысль есть, может нада паузы делать после каждого посыла? Ну в общем вот эти моменты мне очень интересны.