[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 294

 
forexnew:
Никогда не работал с DLL. У Вас случайно нет готового кода?


Таких функций не делал, хотя, если разобраться, там нет ни чего особо сложного - тупая замена одного файла другим.

Для того, чтоб сделать DLL-ку нужно программить на языке, отличном от MQL4. Кто-то пишет на С/С++. Я делал на Delphi. Вобщем, кому как удобно.

Когда DLL-ка будет готова, то она подключается к советнику так же как и другая библиотека языка MQL4. После этого можно смело вызывать описанные в DLL-ке функции.

 
drknn:


Таких функций не делал, хотя, если разобраться, там нет ни чего особо сложного - тупая замена одного файла другим.

Можно сделать линки в файловой системе чтобы логи читать из скрипта.
 

Уважаемые, у Игоря Кима есть функция, возвращающая цену открытия последней открытой позиции https://forum.mql4.com/ru/38949/page5#434239

Если не трудно, напишите функцию, возвращающая цену открытия первой открытой позиции. Думал достаточно в строке

t<OrderOpenTime()
Заменить "<" на ">" но результат не получается.
 

Здравствуйте.

Подскажите как реализовать такую функцию если возможно вообще то.

Выставлено ордер 1 и соответственно TP. Параллельно с ордером установлен отложенный ордер 2. Как удалить отложенный при срабатывании TP ордера 1.

 
strongest:

Здравствуйте.

Подскажите как реализовать такую функцию если возможно вообще то.

Выставлено ордер 1 и соответственно TP. Параллельно с ордером установлен отложенный ордер 2. Как удалить отложенный при срабатывании TP ордера 1.


Вызовом торговой функции OrderDelete()
 
Что надо изменить,чтобы трейлингстоп работал в пятизнаке ? Увеличение пунктов в 10 раз не помогает.
//+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Автоматический Trailing Stop всех открытых позиций    |
//|            Вешать только на один график                          |
//| 21.01.2006 Параметр AllPositions                                 |
//+------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

//------- Внешние параметры ------------------------------------------
extern bool   AllPositions   = False; // Управлять всеми позициями
extern bool   ProfitTrailing = True;  // Тралить только профит
extern int    TrailingStop   = 15;    // Фиксированный размер трала
extern int    TrailingStep   = 2;     // Шаг трала
extern bool   UseSound       = True;  // Использовать звуковой сигнал
extern string NameFileSound  = "expert.wav";  // Наименование звукового файла

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (AllPositions || OrderSymbol()==Symbol()) {
        TrailingPositions();
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  double pBid, pAsk, pp;

  pp = MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
    if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
      if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
        return;
      }
    }
  }
  if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
    if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
      if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
        return;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
  bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
 
david2:
Что надо изменить,чтобы трейлингстоп работал в пятизнаке ? Увеличение пунктов в 10 рвз не помогает.

Скорее всего - проблема в ненормализованных ценах.
 
PapaYozh:

Скорее всего - проблема в ненормализованных ценах.
Извините просто кроме кнопки терминала надо было нажать на дополнительное подтверждение в окне советника,чтобы разрешенить советнику торговать.
 
Sancho77:

Уважаемые, у Игоря Кима есть функция, возвращающая цену открытия последней открытой позиции https://forum.mql4.com/ru/38949/page5#434239

Если не трудно, напишите функцию, возвращающая цену открытия первой открытой позиции. Думал достаточно в строке

Заменить "<" на ">" но результат не получается.

А уточнить? Выбирать первую из открытых (в рынке находящихся) или из уже закрытых? А если первая позиция была открыта три года назад? Её нужно выбрать?

А вообще зачем это всё?

 

Здравствуйте товарищи!

Подскажите пожалуйста такую вещь: можно ли определить что предыдущий ордер закрылся именно по тэйк-профит? И, если да, то как это реализовать программно.

Буду благодарен за ссылку, если подобный вопрос уже поднимался

Причина обращения: