kasparsvas16

 
Уровень 8

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


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

Рейтинг 2088



РЕКОМЕНДУЮ



Ещё раз прошу поправить советник

Ещё раз прошу поправить советник
zakaz.opentraders.ru/58854.html
Можно сделать так что бы советник открывал отложенную сделку по каждому ордеру, а не только одну отложку.
и былобы хорошо, если это можно было бы переключять как True False.


сейчас выгледит так, а хочется чтобы на каждый ордер открытый был бы Buy Limit и Stop Limit.
  • 0
  • Просмотров: 2341
  • 11 июня 2021, 02:26
  • kasparsvas16
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Изменение индикатора "Moving MinMax"
Следующая запись в группе  
Please translate this mt4 indicator into mt5
10 июня 2021
12 июня 2021

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

+
0
Простите за мой Русский Язык, очень давно не писал на руском.
avatar

  8  kasparsvas16 Автор Сообщений: 102

  • 11 июня 2021, 02:27
+
0
покажите на скринах суть доработки
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 11 июня 2021, 20:43
+
0
как видно на скрин шоте, только один Стоп Селл и один Стоп Буй.
А ордеров открыто штук 7
А хотелось бы, на каждый ордер советник выставлял свой Стоп селл и стоп буй.
Спасибо.
avatar

  8  kasparsvas16 Автор Сообщений: 102

  • 13 июня 2021, 01:09
+
0
попробую сейчас набросать быстренько
Редактирован: 14 июня 2021, 10:33
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 14 июня 2021, 09:45
+
0
смотрите вариант:


//+------------------------------------------------------------------+
//|                                                        2MA15.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lot        = 0.1;      // лот позы
extern double Lots       = 0.5;      // лот отлоги
extern double Profit     = 10;       // профит
extern int Delta         = 300;      // дельта
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // бар индикатора
extern int Magic         = 123;      // магик

extern int MA1Period                = 30;  // период МА1
extern int MA1Shift                 = 0;   // сдвиг МА1
extern ENUM_MA_METHOD MA1Metod      = 0;   // метод МА1
extern ENUM_APPLIED_PRICE MA1Price  = 0;   // цены МА1

extern int MA2Period                = 50;  // период МА2
extern int MA2Shift                 = 0;   // сдвиг МА2
extern ENUM_MA_METHOD MA2Metod      = 0;   // метод МА2
extern ENUM_APPLIED_PRICE MA2Price  = 0;   // цены МА2

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double lot)
  {
   int r=0;
   color clr=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,_Digits),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder(int type=-1)
  {
   bool del;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type || type==-1)
               del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma11=iMA(NULL,0,MA1Period,MA1Shift,MA1Metod,MA1Price,Shift);
   double ma12=iMA(NULL,0,MA1Period,MA1Shift,MA1Metod,MA1Price,Shift+1);
   double ma21=iMA(NULL,0,MA2Period,MA2Shift,MA2Metod,MA2Price,Shift);
   double ma22=iMA(NULL,0,MA2Period,MA2Shift,MA2Metod,MA2Price,Shift+1);

   bool buy = ma11>ma21 && ma12<ma22;
   bool sell = ma11<ma21 && ma12>ma22;

   if(AllProfit()>Profit && Profit>0)
      CloseAll();

   if(t!=Time[0])
     {
      if(buy)
        {
         PutOrder(0,Ask,Lot);
         PutOrder(4,Bid+Delta*_Point,Lots);
         PutOrder(5,Bid-Delta*_Point,Lots);
        }

      if(sell)
        {
         PutOrder(1,Bid,Lot);
         PutOrder(4,Bid+Delta*_Point,Lots);
         PutOrder(5,Bid-Delta*_Point,Lots);
        }
     }

   Comment("\n Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 14 июня 2021, 10:48

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