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

Рейтинг 2088



РЕКОМЕНДУЮ



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

Перелопатил весь инет, не могу найти советник для подтягивания стоп-лосса в безубыток для МТ5.
Если можно написать:
AllSymbols – активировать перестановку в безубыток для всех ордеров открытых на данном торговом счете;
Magic – «магическое число», которое будет использовать советник для отслеживания только тех ордеров, которые имеют такой идентификатор, если «-1» — то будут использоваться все ордера;
LevelProfit – величина профита, после которого будет выставляться безубыток, в пунктах;
LevelWLoss – величина безубытка, это количество пунктов от точки входа, на которое будет переставлен стоп-лосс;
NumberOfTry – количество попыток перестановки стоп-лосса, если часто случаются перебои с интернетом.

Заранее спасибо!!!
  • 0
  • Просмотров: 4556
  • 23 ноября 2015, 16:22
  • nonych
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Где то писал отдельно БУ. Сейчас посмотрю.
avatar

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

  • 23 ноября 2015, 22:51
+
0
Сделал пока такой вариант:




//+------------------------------------------------------------------+
//|                                                    ZeroPoint.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.02"

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

//--- входные параметры эксперта
input int      TakeProfit = 500;       // Тейкпрофит
input int      StopLoss   = 500;       // Стоплосс
input int      BULevel    = 200;       // Уровень БУ
input int      BUPoint    = 20;        // Пункты БУ
input int      BuySell    = 1;         // 0-не торгуем 1-Buy 2-Sell
input int      Slip       = 50;        // Проскальзывание
input double   Lot        = 0.1;       // Количество лотов для торговли 

CTrade trade;                          // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

//--- Стопы
   double stop=0,take=0;
//--- Buy
   if(PositionsTotal()<1 && BuySell==1)
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Ask-StopLoss*_Point;
      if(TakeProfit>0) take=Ask+TakeProfit*_Point;
      //--- Открываем ордер на покупку
      trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lot,NormalizeDouble(Ask,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
     }
//--- Sell
   if(PositionsTotal()<1 && BuySell==2)
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Bid+StopLoss*_Point;
      if(TakeProfit>0) take=Bid-TakeProfit*_Point;
      //--- Открываем ордер на продажу
      trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lot,NormalizeDouble(Bid,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double sl=0,tp=0;

   if(PositionSelect(_Symbol))
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         if(PositionGetDouble(POSITION_PRICE_OPEN)<=Bid-BULevel*_Point)
           {
            if(PositionGetDouble(POSITION_PRICE_OPEN)>PositionGetDouble(POSITION_SL))
              {
               sl = PositionGetDouble(POSITION_PRICE_OPEN)+BUPoint*_Point;
               tp = PositionGetDouble(POSITION_PRICE_OPEN)+TakeProfit*_Point;
               trade.PositionModify(_Symbol,sl,tp);
              }
           }
        }

      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         if(PositionGetDouble(POSITION_PRICE_OPEN)>=Ask+BULevel*_Point)
           {
            if(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_PRICE_OPEN))
              {
               sl = PositionGetDouble(POSITION_PRICE_OPEN)-BUPoint*_Point;
               tp = PositionGetDouble(POSITION_PRICE_OPEN)-TakeProfit*_Point;
               trade.PositionModify(_Symbol,sl,tp);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BuySell>0) OpenPos();
   if(BULevel>0) BU();
  }
//+------------------------------------------------------------------+

avatar

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

  • 24 ноября 2015, 00:12
+
0
Андрей, я тут вновь заинтересовалась mql5 и наткнулась на базовый класс CExpertTrailing
Вообще базовых классов несколько. Не знаю, как к ним подступиться и надо ли мне это.
А все началось с того, что у меня человек спросил, как ему лот в советнике mq5 поменять. А советник написан на классе CExpert, но не туда параметры посылает, а совершенно в другое место, в какой то signal, который не объявлен заранее.
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 18 декабря 2015, 02:16
+
0
я тут вновь заинтересовалась mql5


Я использую самые простые вещи CTrade и самописные функции. Если что скидывай в стол заказов я посмотрю.
avatar

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

  • 18 декабря 2015, 02:27
+
0
Да я тоже до недавнего времени программировала на mql5 по той же схеме, что и на mql4
Посижу, почитаю документацию. Самой уже стало интересно. Как там пользоваться классами.
Задание простое. В этом советнике: www.mql5.com/en/code/1896 добавить возможность менять лот и чтобы сделки закрывались только по tp/sl, а то иногда они не только так закрываются.
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 18 декабря 2015, 02:45
+
0
Задание простое. В этом советнике: www.mql5.com/en/code/1896 добавить возможность менять лот и чтобы сделки закрывались только по tp/sl, а то иногда они не только так закрываются.

Оксана, кидай в стол заказов мне как раз будет чем заняться.
avatar

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

  • 18 декабря 2015, 05:49
+
0
и чтобы сделки закрывались только по tp/sl, а то иногда они не только так закрываются


Реверс убрал

avatar

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

  • 18 декабря 2015, 07:55
+
0
Реверс я тоже убрала, оказалось не сложно. Ушла с лотом разбираться.
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 18 декабря 2015, 10:32
+
0
Но на самом деле разработчики большое поле для программистов подготовили, вот только научится этим пользоваться. Документация корявая для изучения. А так на основе того же индикатора MACD смотри сколько написано:
www.mql5.com/ru/docs/standardlibrary/expertclasses/csignal/signal_macd
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 18 декабря 2015, 02:53
+
0
А все началось с того, что у меня человек спросил, как ему лот в советнике mq5 поменять.


Лот заменил:
2015.12.18 08:43:08.885 2015.12.09 04:59:58 deal performed [#1057 buy 0.50 EURUSD at 1.09032]

avatar

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

  • 18 декабря 2015, 07:47
+
0
пошла разбираться, как это самой сделать. не получится — у тебя код спрошу :D 
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 18 декабря 2015, 10:15
+
0
Поменяла лот!
Заменила класс CMoneyNone на класс CMoneyFixedLot и отправила в функцию лот!
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 18 декабря 2015, 12:05
+
0
Я также делал а реверс в классе библиотеки отключал :) 
avatar

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

  • 18 декабря 2015, 13:18
+
0
ну да, я реверс вообще из класса библиотеки удалила
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 18 декабря 2015, 13:21
+
0
Нужно что бы он работал с чужими ордерами, поэтому можно убрать тейепрофит, стоплосс, количество лотов. И что бы он сам видел Buy Sell, а не в ручную выставлять
avatar

  20  nonych Автор Сообщений: 125 - Евгеша

  • 24 ноября 2015, 03:39
+
0
Сейчас как раз нет фильтра по магику, а лось и язь это для теста или если соберетесь им торговать. Если BuySell = 0, то советник не торгует.

input int BuySell = 0;         // 0-не торгуем 1-Buy 2-Sell
avatar

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

  • 24 ноября 2015, 03:48
+
0
Понял, а где скачать его?
avatar

  20  nonych Автор Сообщений: 125 - Евгеша

  • 24 ноября 2015, 04:22
+
0
Установил, спасибо!!!
avatar

  20  nonych Автор Сообщений: 125 - Евгеша

  • 24 ноября 2015, 04:53
+
0
Все есть: www.opentraders.ru/downloads/944/




//+------------------------------------------------------------------+
//|                                                    ZeroPoint.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.02"

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

//--- входные параметры эксперта
input int      TakeProfit = 500;       // Тейкпрофит
input int      StopLoss   = 500;       // Стоплосс
input int      BULevel    = 200;       // Уровень БУ
input int      BUPoint    = 20;        // Пункты БУ
input int      BuySell    = 1;         // 0-не торгуем 1-Buy 2-Sell
input int      AllSymbols = 1;         // 0-символ графика 1-все символы
input int      Slip       = 50;        // Проскальзывание
input double   Lot        = 0.1;       // Количество лотов для торговли 
input long     Magic      = 123;       // Магик

CTrade trade;                          // Используем торговый класс CTrade
long m=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenBuy()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
//--- готовим запрос 
   MqlTradeRequest request={0};
   request.action = TRADE_ACTION_DEAL;                                 // немедленное исполнение
   request.price = NormalizeDouble(Ask,_Digits);                       // последняя цена ask
   request.sl = NormalizeDouble(Ask - StopLoss*_Point,_Digits);        // Stop Loss
   request.tp = NormalizeDouble(Ask + TakeProfit*_Point,_Digits);      // Take Profit
   request.symbol= _Symbol;                                            // символ
   request.volume = Lot;                                               // количество лотов для торговли
   request.magic = Magic;                                              // Magic Number
   request.type = ORDER_TYPE_BUY;                                      // ордер на покупку
   request.type_filling = ORDER_FILLING_FOK;                           // тип исполнения ордера - все или ничего
   request.deviation=Slip;                                             // проскальзывание от текущей цены
//--- отправим торговый приказ 
   MqlTradeResult result={0};
   if(OrderSend(request,result))
//--- выведем в лог ответ сервера   
   Print(__FUNCTION__,":",result.comment); 
   if(result.retcode==10016) Print(result.bid,result.ask,result.price);    
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenSell()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
//--- готовим запрос 
   MqlTradeRequest request={0};
   request.action = TRADE_ACTION_DEAL;                                 // немедленное исполнение
   request.price = NormalizeDouble(Bid,_Digits);                       // последняя цена ask
   request.sl = NormalizeDouble(Bid + StopLoss*_Point,_Digits);        // Stop Loss
   request.tp = NormalizeDouble(Bid - TakeProfit*_Point,_Digits);      // Take Profit
   request.symbol= _Symbol;                                            // символ
   request.volume = Lot;                                               // количество лотов для торговли
   request.magic = Magic;                                              // Magic Number
   request.type = ORDER_TYPE_SELL;                                     // ордер на продажу
   request.deviation=Slip;                                             // проскальзывание от текущей цены
//--- отправим торговый приказ 
   MqlTradeResult result={0};
   if(OrderSend(request,result))
//--- выведем в лог ответ сервера   
   Print(__FUNCTION__,":",result.comment); 
   if(result.retcode==10016) Print(result.bid,result.ask,result.price); 
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

//--- Стопы
   double stop=0,take=0;
//--- Buy
   if(PositionsTotal()<1 && BuySell==1)
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Ask-StopLoss*_Point;
      if(TakeProfit>0) take=Ask+TakeProfit*_Point;
      //--- Открываем ордер на покупку
      //trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lot,NormalizeDouble(Ask,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
      OpenBuy();
     }
//--- Sell
   if(PositionsTotal()<1 && BuySell==2)
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Bid+StopLoss*_Point;
      if(TakeProfit>0) take=Bid-TakeProfit*_Point;
      //--- Открываем ордер на продажу
      //trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lot,NormalizeDouble(Bid,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
      OpenSell();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double sl=0,tp=0;

   for(int i=PositionsTotal()-1;i>=0;i--)
     {
      string Symb=Symbol();
      if(AllSymbols==1)Symb=PositionGetSymbol(i);
      if(PositionSelect(Symb))
        {
         if(PositionGetInteger(POSITION_MAGIC)==Magic)
           {
            m=PositionGetInteger(POSITION_MAGIC);
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
              {
               if(PositionGetDouble(POSITION_PRICE_OPEN)<=Bid-BULevel*_Point)
                 {
                  if(PositionGetDouble(POSITION_PRICE_OPEN)>PositionGetDouble(POSITION_SL))
                    {
                     sl = PositionGetDouble(POSITION_PRICE_OPEN)+BUPoint*_Point;
                     tp = PositionGetDouble(POSITION_PRICE_OPEN)+TakeProfit*_Point;
                     trade.PositionModify(Symb,sl,tp);
                    }
                 }
              }

            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
              {
               if(PositionGetDouble(POSITION_PRICE_OPEN)>=Ask+BULevel*_Point)
                 {
                  if(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_PRICE_OPEN))
                    {
                     sl = PositionGetDouble(POSITION_PRICE_OPEN)-BUPoint*_Point;
                     tp = PositionGetDouble(POSITION_PRICE_OPEN)-TakeProfit*_Point;
                     trade.PositionModify(Symb,sl,tp);
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BuySell>0) OpenPos();
   if(BULevel>0) BU();

   Comment("\n Pos: ",PositionsTotal(),
           "\n Symb1: ",PositionGetSymbol(0),
           "\n Symb2: ",PositionGetSymbol(1),
           "\n Magic: ",m);
  }
//+------------------------------------------------------------------+


Редактирован: 24 ноября 2015, 08:29
avatar

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

  • 24 ноября 2015, 05:01
+
0
Андрей, пытался сделать мультивалютник как ты делал в заказе: http://zakaz.opentraders.ru/63287.html не получилось, в тестере показывает только одну пару и тестируется только при trade.PositionOpen, для OpenSell OpenBuy пишет ошибку "[Invalid request]", также не получается заставить работать один раз в день. Посмотри пожалуйста если будет время, за ранее спасибо.
avatar

  12  vypchela Сообщений: 112

  • 5 декабря 2021, 11:10
+
0
Вот код, что пытался сделать.

//+------------------------------------------------------------------+
//|                                                    ZeroPoint.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.02"

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

//--- входные параметры эксперта
input int      TakeProfit = 500;       // Тейкпрофит
input int      StopLoss   = 500;       // Стоплосс
input int      BULevel    = 200;       // Уровень БУ
input int      BUPoint    = 20;        // Пункты БУ
input int      AllSymbols = 1;         // 0-символ графика 1-все символы
input int      Slip       = 50;        // Проскальзывание
input double   Lot        = 0.01;       // Количество лотов для торговли 
input long     Magic      = 123;       // Магик

input  string Symbols = "EURUSD,GBPUSD";

CTrade trade;                          // Используем торговый класс CTrade
long m=0;
string symbols[4];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Array();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
void Array()
  {
   symbols[0]=StringSubstr(Symbols,0,6);

   for(int i=0; i<4; i++)
     {
      symbols[i]=StringSubstr(Symbols,i*(6+1),6);
     }
  }
//+------------------------------------------------------------------+
//|              1 сделка в день                                     |
//+------------------------------------------------------------------+
bool DayDeal(string symb)
  {
   if(HistorySelect(0,TimeCurrent()))
     {
      if(PositionGetString(POSITION_SYMBOL)==symb)
        {
         datetime t=(datetime)HistoryDealGetInteger(HistoryDealGetTicket(HistoryDealsTotal()-1),DEAL_TIME);
         if(TimeCurrent()-t<24*3600)
           {
            return(false);
           }
        }
     }
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenBuy(string symb)
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(symb,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(symb,SYMBOL_BID);
//--- готовим запрос 
   MqlTradeRequest request;
   request.action = TRADE_ACTION_DEAL;                                 // немедленное исполнение
   request.price = NormalizeDouble(Ask,_Digits);                       // последняя цена ask
   request.sl = NormalizeDouble(Ask - StopLoss*_Point,_Digits);        // Stop Loss
   request.tp = NormalizeDouble(Ask + TakeProfit*_Point,_Digits);      // Take Profit
   request.symbol= symb;                                               // символ
   request.volume = Lot;                                               // количество лотов для торговли
   request.magic = Magic;                                              // Magic Number
   request.type = ORDER_TYPE_BUY;                                      // ордер на покупку
   request.type_filling = ORDER_FILLING_FOK;                           // тип исполнения ордера - все или ничего
   request.deviation=Slip;                                             // проскальзывание от текущей цены
//--- отправим торговый приказ 
   MqlTradeResult result={0};
   if(OrderSend(request,result))
//--- выведем в лог ответ сервера   
   Print(__FUNCTION__,":",result.comment); 
   if(result.retcode==10016) Print(result.bid,result.ask,result.price);    
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenSell(string symb)
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(symb,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(symb,SYMBOL_BID);
   
//--- готовим запрос 
   MqlTradeRequest request;
   request.action = TRADE_ACTION_DEAL;                                 // немедленное исполнение
   request.price = NormalizeDouble(Bid,_Digits);                       // последняя цена ask
   request.sl = NormalizeDouble(Bid + StopLoss*_Point,_Digits);        // Stop Loss
   request.tp = NormalizeDouble(Bid - TakeProfit*_Point,_Digits);      // Take Profit
   request.symbol= symb;                                               // символ
   request.volume = Lot;                                               // количество лотов для торговли
   request.magic = Magic;                                              // Magic Number
   request.type = ORDER_TYPE_SELL;                                     // ордер на продажу
   request.deviation=Slip;                                             // проскальзывание от текущей цены
//--- отправим торговый приказ 
   MqlTradeResult result={0};
   if(OrderSend(request,result))
//--- выведем в лог ответ сервера   
   Print(__FUNCTION__,":",result.comment); 
   if(result.retcode==10016) Print(result.bid,result.ask,result.price);
    {
 
    }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenPos(string symb)
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(symb,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(symb,SYMBOL_BID);

//--- Стопы
   double stop=0,take=0;
//--- Buy
   if(PositionsTotal()<1 && DayDeal(symb))
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Ask-StopLoss*_Point;
      if(TakeProfit>0) take=Ask+TakeProfit*_Point;
      //--- Открываем ордер на покупку
//      trade.PositionOpen(symb,ORDER_TYPE_BUY,Lot,NormalizeDouble(Ask,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
      OpenBuy(symb);
     }
//--- Sell
   if(PositionsTotal()<1 && DayDeal(symb))
     {
      //--- Вычисляем стопы
      if(StopLoss>0)   stop=Bid+StopLoss*_Point;
      if(TakeProfit>0) take=Bid-TakeProfit*_Point;
      //--- Открываем ордер на продажу
//      trade.PositionOpen(symb,ORDER_TYPE_SELL,Lot,NormalizeDouble(Bid,_Digits),NormalizeDouble(stop,_Digits),NormalizeDouble(take,_Digits));
      OpenSell(symb);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   string symb = Symbol();
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(symb,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(symb,SYMBOL_BID);
   for(int i=0; i<ArraySize(symbols); i++)
   {
   if(symbols[i]!="")
     {
     OpenPos(symbols[i]);
//     if(BULevel>0) BU(symbols[i]);
     }
    }


   Comment("\n Pos: ",PositionsTotal(),
           "\n Symb: ",PositionGetSymbol(0),
           "\n Magic: ",m);
  }

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

avatar

  12  vypchela Сообщений: 112

  • 5 декабря 2021, 11:15
+
0
делай заказ отдельный
avatar

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

  • 5 декабря 2021, 11:36
+
0
Сделал, спасибо.
avatar

  12  vypchela Сообщений: 112

  • 5 декабря 2021, 12:51

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