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

Рейтинг 2073



РЕКОМЕНДУЮ



Доработка советника. Стоповые ордера в качестве частичной-фиксации прибыли

Уважаемые Программисты!
Для сеточной стратегии необходимо произвести изменения и подправить советник «e-MovingInWL2» от известного в среде MQL программистов автора Игоря Кима.
Надеюсь сам автор не будет возражать против использования и изменения его кода.
Советник должен выставлять стоповые ордера для профитных ордеров, тем самым частично фиксируется прибыль открытых профитных ордеров.
Кое-какие изменения в этом советнике мне удалось произвести. Советник исправно выставляет стоповые ордера для каждого профитного ордера на определённом растоянии в пунктах но к сожелению стоповые ордера выставляются в огромно колличестве. Нужно добавить функци учёта стоповых ордеров. Помогите пожалуйста я сам в програмировании не селён. Заранее благодарю

Вот оригинальный код советника.«e-MovingInWL2»

//+----------------------------------------------------------------------------+
//| e-MovingInWL2.mq4 |
//| |
//| Ким Игорь В. aka KimIV |
//| |
//| |
//| 27.10.2008 Советник перемещает стоп в безубыток. |
//+----------------------------------------------------------------------------+
#property copyright «Kim Igor V. aka KimIV»
#property link
//------- Внешние параметры советника -----------------------------------------+
extern string _P_Expert = "---------- Параметры советника";
extern bool AllSymbols = True; // Следить за позициями всех символов
extern int Magic = -1; // Идентификатор позиций
extern int LevelProfit = 25; // Уровень профита в пунктах
extern int LevelWLoss = 1; // Уровень безубытка в пунктах
extern bool ShowComment = True; // Показывать комментарий

//------- Параметры исполнения торговых приказов ------------------------------+
extern string _P_Performance = "---------- Параметры исполнения";
extern bool UseSound = True; // Использовать звуковой сигнал
extern string SoundSuccess = «expert.wav»; // Звук успеха
extern string SoundError = «timeout.wav»; // Звук ошибки
extern int NumberOfTry = 2; // Количество торговых попыток

//------- Глобальные переменные советника -------------------------------------+
bool gbDisabled = False; // Флаг блокировки советника
bool gbNoInit = False; // Флаг неудачной инициализации
color clModifyBuy = Aqua; // Цвет значка модификации покупки
color clModifySell = Tomato; // Цвет значка модификации продажи

//------- Подключение внешних модулей -----------------------------------------+
#include <stdlib.mqh>

//+----------------------------------------------------------------------------+
//| |
//| ПРЕДОПРЕДЕЛЁННЫЕ ФУНКЦИИ |
//| |
//+----------------------------------------------------------------------------+
//| expert initialization function |
//+----------------------------------------------------------------------------+
void init() {
gbNoInit=False;
if (!IsTradeAllowed()) {
Message(«Для нормальной работы советника необходимо\n»+
«Разрешить советнику торговать»);
gbNoInit=True; return;
}
if (!IsLibrariesAllowed()) {
Message(«Для нормальной работы советника необходимо\n»+
«Разрешить импорт из внешних экспертов»);
gbNoInit=True; return;
}
if (!IsTesting()) {
if (IsExpertEnabled()) Message(«Советник будет запущен следующим тиком»);
else Message(«Отжата кнопка \»Разрешить запуск советников\"");
}
start();
}

//+----------------------------------------------------------------------------+
//| expert deinitialization function |
//+----------------------------------------------------------------------------+
void deinit() {
if (!IsTesting()) Comment("");
}

//+----------------------------------------------------------------------------+
//| expert start function |
//+----------------------------------------------------------------------------+
void start() {
if (gbDisabled) {
Message(«Критическая ошибка! Советник ОСТАНОВЛЕН!»); return;
}
if (gbNoInit) {
Message(«Не удалось инициализировать советник!»); return;
}
if (ShowComment) {
Comment(IIFs(AllSymbols, «AllSymbols », "")
,«Magic=»+IIFs(Magic<0, «Любой», DoubleToStr(Magic, 0))+" "
,«LevelProfit=»+DoubleToStr(LevelProfit, 0)+«п „
,“LevelWLoss=»+DoubleToStr(LevelWLoss, 0)+«п „
);
} else Comment(“»);

string sy=IIFs(AllSymbols, "", NULL);
MovingInWL(sy, -1, Magic);
}

//+----------------------------------------------------------------------------+
//| |
//| ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ |
//| |
//+----------------------------------------------------------------------------+
//| Автор: Ким Игорь В. aka KimIV, www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия: 01.09.2005 |
//| Описание: Возвращает наименование торговой операции |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| op — идентификатор торговой операции |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY: return(«Buy»);
case OP_SELL: return(«Sell»);
case OP_BUYLIMIT: return(«BuyLimit»);
case OP_SELLLIMIT: return(«SellLimit»);
case OP_BUYSTOP: return(«BuyStop»);
case OP_SELLSTOP: return(«SellStop»);
default: return(«Unknown Operation»);
}
}

//+----------------------------------------------------------------------------+
//| Автор: Ким Игорь В. aka KimIV, www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия: 18.07.2008 |
//| Описание: Возвращает одно из двух значений взависимости от условия. |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Автор: Ким Игорь В. aka KimIV, www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия: 01.02.2008 |
//| Описание: Возвращает одно из двух значений взависимости от условия. |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
if (condition) return(ifTrue); else return(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Автор: Ким Игорь В. aka KimIV, www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия: 01.09.2005 |
//| Описание: Вывод сообщения в коммент и в журнал |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| m — текст сообщения |
//+----------------------------------------------------------------------------+
void Message(string m) {
Comment(m);
if (StringLen(m)>0) Print(m);
}

//+----------------------------------------------------------------------------+
//| Автор: Ким Игорь В. aka KimIV, www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия: 28.11.2006 |
//| Описание: Модификация одного предварительно выбранного ордера. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| pp — цена установки ордера |
//| sl — ценовой уровень стопа |
//| tp — ценовой уровень тейка |
//| ex — дата истечения |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
double op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;

if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();
pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice(), dg);
os=NormalizeDouble(OrderStopLoss(), dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);

if (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
if (fm) {
if (UseSound) PlaySound(SoundSuccess); break;
} else {
er=GetLastError();
if (UseSound) PlaySound(SoundError);
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print(«Error(»,er,") modifying order: ",ErrorDescription(er),", try ",it);
Print(«Ask=»,pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Sleep(1000*10);
}
}
}
}

//+----------------------------------------------------------------------------+
//| Автор: Ким Игорь В. aka KimIV, www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия: 23.04.2009 |
//| Описание: Перенос уровня стопа в безубыток |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy — наименование инструмента ( "" — любой символ, |
//| NULL — текущий символ) |
//| op — операция ( -1 — любая позиция) |
//| mn — MagicNumber ( -1 — любой магик) |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
double po, pp;
int i, k=OrdersTotal();

if (sy==«0») sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
po=MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
if (OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_BID);
if (pp-OrderOpenPrice()>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()+LevelWLoss*po, -1);
}
}
}
if (OrderType()==OP_SELL) {
if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderOpenPrice()-pp>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()-LevelWLoss*po, -1);
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+
  • 0
  • Просмотров: 5104
  • 4 ноября 2015, 13:55
  • Witar
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Зачем вы опять скинули код сплошным текстом? Я же просил вас в прошлый раз скидывать файлом или пользоваться тегами. Иначе код не соберешь в компиляторе. И не нужно плодить лишних топиков.
avatar

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

  • 4 ноября 2015, 15:45
+
0
Спасибо за ваш комент. Я конечно изведняюсь если что не так, у меня небыло злого умысла. Хочу спросить а вы кто? Почему высказываете свои притензии? Если вы администратор или модератор тогда тогда можно понять ваше недовльство, ну а если посетитель умеющий программировать то я не вижу проблеммы в том чтобы скопирвать выложенный мной код со страници затем открыть панель MQL создать новую программу, занести туда ранее скопирвавнный код и скомпилирвать. Я сам так делаю.
avatar

  2  Witar Автор Сообщений: 11

  • 4 ноября 2015, 16:49
+
0
Я здесь делаю, простые заказы для пользователей сайта. Посмотрите что выдает компилятор после вставки вашего кода:


Если кто то еще возьмется за ваш заказ, я не буду против.
avatar

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

  • 4 ноября 2015, 17:01
+
0
Действительно, вы правы. Как теперь исправить положение? Как вложить файл чтобы не наплодить ещё один топик?
Редактирован: 4 ноября 2015, 18:27
avatar

  2  Witar Автор Сообщений: 11

  • 4 ноября 2015, 18:27
+
0
Пользуйтесь тегами для вставки или можно залить на файлообменник и оставить здесь ссылку. Проще всего с тегами.


//------- Внешние параметры советника -----------------------------------------+
extern string _P_Expert = "---------- Параметры советника";
extern bool AllSymbols = True; // Следить за позициями всех символов
extern int Magic = -1; // Идентификатор позиций
extern int LevelProfit = 25; // Уровень профита в пунктах
extern int LevelWLoss = 1; // Уровень безубытка в пунктах
extern bool ShowComment = True; // Показывать комментарий

//------- Параметры исполнения торговых приказов ------------------------------+
avatar

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

  • 4 ноября 2015, 18:34
+
0
На панели форматирования текста есть теги CODE между ними вставляете весь советник. Должен уместиться, т.к. есть ограничение на длину сообшения.

avatar

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

  • 4 ноября 2015, 18:39
+
0
//+----------------------------------------------------------------------------+
//|                                                         e-MovingInWL2.mq4  |
//|                                                                            |
//|                                                    Ким Игорь В. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//|                                                                            |
//|  27.10.2008  Советник перемещает стоп в безубыток.                         |
//+----------------------------------------------------------------------------+
#property copyright "Kim Igor V. aka KimIV"
#property link      "http://www.kimiv.ru"

//------- Внешние параметры советника -----------------------------------------+
extern string _P_Expert = "---------- Параметры советника";
extern bool   AllSymbols  = True;      // Следить за позициями всех символов
extern int    Magic       = -1;        // Идентификатор позиций
extern int    LevelProfit = 25;        // Уровень профита в пунктах
extern int    LevelWLoss  = 1;         // Уровень безубытка в пунктах
extern bool   ShowComment = True;      // Показывать комментарий

//------- Параметры исполнения торговых приказов ------------------------------+
extern string _P_Performance = "---------- Параметры исполнения";
extern bool   UseSound     = True;          // Использовать звуковой сигнал
extern string SoundSuccess = "expert.wav";  // Звук успеха
extern string SoundError   = "timeout.wav"; // Звук ошибки
extern int    NumberOfTry  = 2;             // Количество торговых попыток

//------- Глобальные переменные советника -------------------------------------+
bool   gbDisabled   = False;           // Флаг блокировки советника
bool   gbNoInit     = False;           // Флаг неудачной инициализации
color  clModifyBuy  = Aqua;            // Цвет значка модификации покупки
color  clModifySell = Tomato;          // Цвет значка модификации продажи

//------- Подключение внешних модулей -----------------------------------------+
#include <stdlib.mqh>


//+----------------------------------------------------------------------------+
//|                                                                            |
//|  ПРЕДОПРЕДЕЛЁННЫЕ ФУНКЦИИ                                                  |
//|                                                                            |
//+----------------------------------------------------------------------------+
//|  expert initialization function                                            |
//+----------------------------------------------------------------------------+
void init() {
  gbNoInit=False;
  if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit=True; return;
  }
  if (!IsTesting()) {
    if (IsExpertEnabled()) Message("Советник будет запущен следующим тиком");
    else Message("Отжата кнопка \"Разрешить запуск советников\"");
  }
  start();
}

//+----------------------------------------------------------------------------+
//|  expert deinitialization function                                          |
//+----------------------------------------------------------------------------+
void deinit() {
  if (!IsTesting()) Comment("");
}

//+----------------------------------------------------------------------------+
//|  expert start function                                                     |
//+----------------------------------------------------------------------------+
void start() {
  if (gbDisabled) {
    Message("Критическая ошибка! Советник ОСТАНОВЛЕН!"); return;
  }
  if (gbNoInit) {
    Message("Не удалось инициализировать советник!"); return;
  }
  if (ShowComment) {
    Comment(IIFs(AllSymbols, "AllSymbols  ", "")
           ,"Magic="+IIFs(Magic<0, "Любой", DoubleToStr(Magic, 0))+"  "
           ,"LevelProfit="+DoubleToStr(LevelProfit, 0)+"п  "
           ,"LevelWLoss="+DoubleToStr(LevelWLoss, 0)+"п  "
           );
  } else Comment("");

  string sy=IIFs(AllSymbols, "", NULL);
  MovingInWL(sy, -1, Magic);
}


//+----------------------------------------------------------------------------+
//|                                                                            |
//|  ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ                                                  |
//|                                                                            |
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("BuyLimit");
    case OP_SELLLIMIT: return("SellLimit");
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
  }
}

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 18.07.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
  if (condition) return(ifTrue); else return(ifFalse);
}

Продолжение следует
Редактирован: 4 ноября 2015, 19:00
avatar

  2  Witar Автор Сообщений: 11

  • 4 ноября 2015, 18:59
+
0
<code>//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.02.2008                                                     |
//|  Описание : Возвращает одно из двух значений взависимости от условия.      |
//+----------------------------------------------------------------------------+
string IIFs(bool condition, string ifTrue, string ifFalse) {
  if (condition) return(ifTrue); else return(ifFalse);
}

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Вывод сообщения в коммент и в журнал                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    m - текст сообщения                                                     |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);
}

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Модификация одного предварительно выбранного ордера.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    pp - цена установки ордера                                              |
//|    sl - ценовой уровень стопа                                              |
//|    tp - ценовой уровень тейка                                              |
//|    ex - дата истечения                                                     |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
  bool   fm;
  color  cl=IIFc(OrderType()==OP_BUY
              || OrderType()==OP_BUYLIMIT
              || OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
  double op, pa, pb, os, ot;
  int    dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;

  if (pp<=0) pp=OrderOpenPrice();
  if (sl<0 ) sl=OrderStopLoss();
  if (tp<0 ) tp=OrderTakeProfit();
  
  pp=NormalizeDouble(pp, dg);
  sl=NormalizeDouble(sl, dg);
  tp=NormalizeDouble(tp, dg);
  op=NormalizeDouble(OrderOpenPrice() , dg);
  os=NormalizeDouble(OrderStopLoss()  , dg);
  ot=NormalizeDouble(OrderTakeProfit(), dg);

  if (pp!=op || sl!=os || tp!=ot) {
    for (it=1; it<=NumberOfTry; it++) {
      if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
      while (!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
      if (fm) {
        if (UseSound) PlaySound(SoundSuccess); break;
      } else {
        er=GetLastError();
        if (UseSound) PlaySound(SoundError);
        pa=MarketInfo(OrderSymbol(), MODE_ASK);
        pb=MarketInfo(OrderSymbol(), MODE_BID);
        Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
        Print("Ask=",pa,"  Bid=",pb,"  sy=",OrderSymbol(),
              "  op="+GetNameOP(OrderType()),"  pp=",pp,"  sl=",sl,"  tp=",tp);
        Sleep(1000*10);
      }
    }
  }
}

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.04.2009                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
  double po, pp;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          po=MarketInfo(OrderSymbol(), MODE_POINT);
          if (OrderType()==OP_BUY) {
            if (OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po) {
              pp=MarketInfo(OrderSymbol(), MODE_BID);
              if (pp-OrderOpenPrice()>LevelProfit*po) {
                ModifyOrder(-1, OrderOpenPrice()+LevelWLoss*po, -1);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po) {
              pp=MarketInfo(OrderSymbol(), MODE_ASK);
              if (OrderOpenPrice()-pp>LevelProfit*po) {
                ModifyOrder(-1, OrderOpenPrice()-LevelWLoss*po, -1);
              }
            }
          }
        }
      }
    }
  }
}
//+----------------------------------------------------------------------------+</code>


это последние строки кода
Редактирован: 4 ноября 2015, 19:02
avatar

  2  Witar Автор Сообщений: 11

  • 4 ноября 2015, 19:00
+
0
Собрал код, но не обнаружил в нем ни одной торговой функции. Советник не выставляет никаких ордеров вообще.
avatar

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

  • 4 ноября 2015, 21:47
+
0
Вот по этой ссылке можно скачать этого советника
http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=24

от автора Игоря Кима на свободное пользование людям. Возможно что-то при разделения мною советника на две части или при сборке вами в одну часть ошибка «подкралась» так что на сайте у самого автора в орегинале должно работать
Редактирован: 4 ноября 2015, 23:47
avatar

  2  Witar Автор Сообщений: 11

  • 4 ноября 2015, 23:46
+
0
По ссылке тоже неторговый.
avatar

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

  • 5 ноября 2015, 00:11
+
0
Очень жаль, тогда я незнаю в чём дело. Я этим советником пользуюсь несколько лет на торговых платформах от различных брокеров и всё работает, выводит ордера в безубыток. Правда иногда как-бы «Засыпает» приходтся его будить путём переключением таймфреймов.
avatar

  2  Witar Автор Сообщений: 11

  • 5 ноября 2015, 00:31
+
0
Проще по ТЗ написать чем править чужой код.
avatar

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

  • 5 ноября 2015, 00:32
+
0
Если я правельно понимаю там незачем чтото править, надо только функцию учёта стоповых ордеров прикрутить. Я со своими мизирными умениями в программировании MQL и то с умел модификацию ордеров стоповыми заменить. Вот только я незнаю как составить логику учёта стоповых ордеров чтобы не выстовлялось их бесчисленное множество. Вообщето это Адвизор уже старенький, возможно его надо оптимировать под новый билд, чтобы сначало хоть работать начал, а потом уже можно и совершенствовать его.
avatar

  2  Witar Автор Сообщений: 11

  • 5 ноября 2015, 02:21

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