[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 497
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
внедрить код в советник, у меня было примерно так пока не удалил, я использовал часовой таймфрейм
orderselect - выделить последний ордер в истории
взять время его закрытия вытащить именно час закрытия
и перед открытием ордера поставить условие, чтобы нынешний час был НЕ равен часу закрытия ордера из истории
помогите пожалуйста с проблемой, у меня обнуляется переменная TP после второго обновлеия цены, тоесть советник открывает ордер, и выдает значение TP и Bid, оба не равны нулю, потом цена опять обновляется, а TP становится равен нулю, хотя в коде таких команд нет, у меня была проблема с подтягивание SL вверх, а теперь оказалось что проблема в определении TP
int start()
{
//----
double TP;
double SL;
if (OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,Bid+4*Point);
OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
TP=OrderTakeProfit();
}
Alert ("TP=" + TP);
Alert ("Bid=" + Bid);
if (OrdersTotal()>0)
{
if (TP-Bid<3*Point)
{
Alert ("Приблизился к ТП на 1 или 2");
Alert ("TP=" + TP);
Alert ("Bid=" + Bid);
}
}
//----
return(0);
}
помогите пожалуйста с проблемой, у меня обнуляется переменная TP после второго обновлеия цены, тоесть советник открывает ордер, и выдает значение TP и Bid, оба не равны нулю, потом цена опять обновляется, а TP становится равен нулю, хотя в коде таких команд нет, у меня была проблема с подтягивание SL вверх, а теперь оказалось что проблема в определении TP
double TP, SL;
int start()
{
//----
if (OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,Bid+4*Point);
OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
TP=OrderTakeProfit();
}
Alert ("TP=" + TP);
Alert ("Bid=" + Bid);
if (OrdersTotal()>0)
{
if (TP-Bid<3*Point)
{
Alert ("Приблизился к ТП на 1 или 2");
Alert ("TP=" + TP);
Alert ("Bid=" + Bid);
}
}
//----
return(0);
}
Подскажите плиз как сделать что бы ордер открывался на новом баре только 1 раз ????
Читайте здесь: https://www.mql5.com/ru/forum/134437
Всем привет!
Стратегия предусматривает наличие двух сигналов: главного и второстепенного. Сделка открывается при появлении второго сигнала не позднее чем через 12 часов. Вопрос: как научить советник не реагировать на сигнал, если он появляется позднее чем через 12 часов?? Пожалуйста, если можно конкретный пример кода
Всем привет!
Стратегия предусматривает наличие двух сигналов: главного и второстепенного. Сделка открывается при появлении второго сигнала не позднее чем через 12 часов. Вопрос: как научить советник не реагировать на сигнал, если он появляется позднее чем через 12 часов?? Пожалуйста, если можно конкретный пример кода
Привет, Дмитрий. Со своей стороны готов предложить Вам следующий вариант. Для аналогии см. сработку торговых критериев этой статьи-там идут также сработка ордера по двум сигналам - а именно - см. после второго рисунка "Первое, чего необходимо дождаться на графике DeMarker, это момент, когда DeMarker пересечет быструю и медленую линии MA в районе 0.7 для короткой позиции. Это первый предварительный сигнал. Далее дожидаемся пересечения собственно самих линий MA. Этот сигнал основной, после наступления которого можно приниматься за показания индикатора Taichi. Если пересечения линий MA не произошло, считается, что сигнал ложный, и развитие движения цены сохранится." Вот как это у меня выполнено в виде кода - во включаемом инклюде в сов, отвечающим за сработку торговых критериев.
Основная фишка в том, что работаем через две нижеприведенные в (конце) инклюда ф-ии посредством установки и сброса флагов при сработках того или иного торгового критерия.
У Вас дополнительно будет идти - запоминание текущего времени при сработке основного критерия через TimeCurrent, т.е. по аналогии в первой ф-ии int type_op_DeMarker укажете перед return(OP_BUY); или return(OP_SELL); выражение типа x = TimeCurrent; где x-глобальная переменная типа datetime. После чего аналогично сделаете и со второй ф-ей int type_op_MA... - там уже запоминаете переменную y= TimeCurrent;
Далее в блоке вычисления торговых критериев сравниваете плюсом и значение этих двух переменных след образом (получается, что аналог работы со значениями Тайчи - Вам не нужен - вместо него Вы бьете сравнение времени поступления Ваших двух торговых сигналов):
П.С. Плюсом Вам направляю ф-ию для возможности оптимизации значения рабочего ТФ.
П.П.С. Таким образом подобная конструкция кода организована у меня. Не исключаю, что существуют и гораздо более оптимальные варианты кода для выполнения подобных условий работы советника. :-)))
Как подсчитать профит в советнике на одной валютной паре???
Например у меня открыто по евро семь бай ордеров на разных ценах . как посчитать профит по евро не трогая другие ордера по другим парам ????
используешь SelectOrder сканируешь им все открытые ордера
проверяешь нужная ли пара (OrderSymbol)
затем в любую переменную плюсуешь профит если это нужный ордер OrderProfit
вот сылка с полезными функциями https://docs.mql4.com/ru/trading/OrderSelect
слева есть меню с операциями, там описаны они все