vypchela

 
Уровень 12

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от vypchela



Советник по Фибоначчи Комментариев 8
2020-11-10 16:12:30Рейтинг 0

Советник для МТ5 Комментариев 17
2022-10-22 17:34:39Рейтинг 0

Советник для МТ5

Здравствуйте, Андрей прошу в написанном тобой советнике изменить места размещения отложенных ордеров и размещение тейкпрофита и стоплосс как показано на скриншоте. Для тебя думаю это не сложно. За ранее благодарен.



//+------------------------------------------------------------------+
//|                                                    ProboyDay.mq5 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"

#include <Trade\Trade.mqh>             // Подключаем торговый класс CTrade

input ulong  Magic   = 123;  // магик
input double Lots    = 0.01; // лот
input double KLot    = 2;    // увеличение лота
input double MaxLot  = 10;   // максимальный лот
input int    Stop    = 2000;  // стоплосс
input int    Take    = 2000;  // тейкпрофит
input int    StartHour = 8;  // час начала торговли
input int    StartMin = 30;  // минута начала торговли
input int    EndHour = 19;   // час окончания торговли
input int    EndMin  = 30;   // минута окончания торговли

input bool   BuyStop   = 1;   // BuyStop
input bool   SellStop  = 1;   // SellStop

CTrade trade;                // Используем торговый класс CTrade

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   trade.SetExpertMagicNumber(Magic);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   HistorySelect(0,TimeCurrent());

   ulong ticket=0;

   for(int i=HistoryDealsTotal()-1; i>=0; i--)
     {
      if((ticket=HistoryDealGetTicket(i))>0)
        {
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)==_Symbol)
           {
            if(HistoryDealGetInteger(ticket,DEAL_MAGIC)==Magic)
              {
               double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
               double LastLot=HistoryDealGetDouble(ticket,DEAL_VOLUME);
               if(profit>0)
                  lot=Lots;
               if(profit<0)
                  lot=LastLot*KLot;
               break;
              }
           }
        }
     }
   if(lot>MaxLot)
      lot=Lots;

   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelOrder()
  {
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderGetInteger(ORDER_MAGIC)==Magic)
        {
         ulong ticket=OrderGetTicket(i);
         trade.OrderDelete(ticket);
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(ENUM_ORDER_TYPE type=-1)
  {
   int count=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(OrderGetTicket(i)))
        {
         if(OrderGetInteger(ORDER_MAGIC)==Magic)
           {
            if(OrderGetInteger(ORDER_TYPE)==type || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double sl=0,tp=0;
   double lo=iLow(NULL,PERIOD_D1,1);
   double hi=iHigh(NULL,PERIOD_D1,1);
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   

   if(TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && CountOrders()<1)
     {
      if(Bid<hi)
        {
         if(BuyStop && CountOrders(4)<1)
           {
            sl=NormalizeDouble(hi-Stop*_Point,_Digits);
            tp=NormalizeDouble(hi+Take*_Point,_Digits);
            trade.BuyStop(Lot(),hi,NULL,sl,tp,0,0 ,"");
           }

        }
      if(Bid>lo)
        {
         if(SellStop && CountOrders(5)<1)
           {
            sl=NormalizeDouble(lo+Stop*_Point,_Digits);
            tp=NormalizeDouble(lo-Take*_Point,_Digits);
            trade.SellStop(Lot(),lo,NULL,sl,tp,0,0,"");
           }

        }
     }

   if(!TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()))
      DelOrder();

   Comment("\n Hi: ",hi,
           "\n Lo: ",lo);
  }
//+------------------------------------------------------------------+

  • +1
  • Просмотров: 2152
  • 22 октября 2022, 17:34
  • vypchela
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник,,пробой уровня,,
Следующая запись в группе  
Простой советник
22 октября 2022
23 октября 2022

Брокер для ваших роботов, 15 лет на рынке

Комментарии (17)

+
0
поручитель
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 22 октября 2022, 20:57
+
0
Ищу поручителя.
avatar

  12  vypchela Автор Сообщений: 112

  • 23 октября 2022, 04:21
+
0
Андрей можно ли выполнить данный заказ, или делать новый заказ?
avatar

  12  vypchela Автор Сообщений: 112

  • 3 ноября 2022, 05:22
+
0
посмотрю сегодня
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 4 ноября 2022, 07:04
+
0
Отлично *good* 
avatar

  12  vypchela Автор Сообщений: 112

  • 5 ноября 2022, 04:52
+
0
По-моему стратегия очень сырая. Очень. Посмотрите сами на свой скрин. Выбрали самые удачные на ваш взгляд свечи. А по какому принципу их будет выбирать советник. Кроме того необходимо добавить как минимум два условия дополнительно.
1.Время жизни ордера. Или он бессрочный будет у вас?
2.Закрытие свечи должно быть ниже середины (для покупок) и выше середины (для
продаж). Иначе постоянно буде ошибка. А советник будет пытаться выставлять
ордер. Будет много запросов. А потом проблемы с брокером.
Но дело конечно ваше. Главное что бы вам нравилось.
*hi* 
avatar

  16  ssg Сообщений: 817

  • 23 октября 2022, 07:37
+
0
Пробитие вчерашнего дня только по другой цене, не отработанные ордера если посмотреть код удаляются в указанное время.
avatar

  12  vypchela Автор Сообщений: 112

  • 23 октября 2022, 08:08
+
0
Пробитие вчерашнего дня только по другой цене

как это?
код я смотрел.мне он понятен. Мне не понятно как бар выбирать будете?
Редактирован: 23 октября 2022, 13:08
avatar

  16  ssg Сообщений: 817

  • 23 октября 2022, 13:06
+
0
Вот как раз в этом и фишка. :) 
avatar

  12  vypchela Автор Сообщений: 112

  • 23 октября 2022, 15:26
+
0
Так вы её и озвучьте. Я её не увидел. Как же тогда программировать и писать код? Не ну может Андрей всё понял. Я не знаю.
Хотя конечно у вас есть какой то хитрый план.

avatar

  16  ssg Сообщений: 817

  • 23 октября 2022, 17:06
+
0
Все хитрые планы на скриншоте.
avatar

  12  vypchela Автор Сообщений: 112

  • 23 октября 2022, 18:14
+
0
Если считаете что все в порядке, ну тогда удачи!
*hi* 
Редактирован: 23 октября 2022, 18:20
avatar

  16  ssg Сообщений: 817

  • 23 октября 2022, 18:20
+
0
*hi* 
avatar

  12  vypchela Автор Сообщений: 112

  • 23 октября 2022, 18:36
+
0
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 5 ноября 2022, 12:52
+
0
Андрей спасибо, отложки выставляет как надо, а вот тп и сл работают как указано в настройках, а как показано на скрине не получается. Посмотри пожалуйста, за ранее спасибо.
avatar

  12  vypchela Автор Сообщений: 112

  • 5 ноября 2022, 17:49
+
0
а вот тп и сл работают как указано в настройках, а как показано на скрине не получается


ставьте стопы 0
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 6 ноября 2022, 10:49
+
0
Хорошо, спасибо.
avatar

  12  vypchela Автор Сообщений: 112

  • 6 ноября 2022, 10:54

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий