Ваши вопросы по языку MQL4

Zolotai

Интересующийся
Код:
for (int i=0; i<cnt; i++)
   { 
    
     if (OrderSymbol() != Symbol())
         Alert('1');
         continue;

    }
Сначала сигнал, а потом выход из цикла


Не понимаю. continue;- выход из цикла? По моему пропуск текущей операции и переход к следующей... то есть переходк следующему ордеру.

Почему так не пропускает?

HTML:
         if (OrderSymbol() == Symbol()){
           Alert('1');
         
         }

Как узнать текущую цену инструмента? Что за функция?
 
Последнее редактирование:

matro3

Почетный гражданин
Т.е. да, пропуск.
А алерт это не пропуск - это алерт )))
 

Ugar

Гуру форума
Не понимаю. continue;- выход из цикла? По моему пропуск текущей операции и переход к следующей... то есть переходк следующему ордеру.

Почему так не пропускает?

HTML:
         if (OrderSymbol() == Symbol()){
           Alert('1');
         
         }
Как узнать текущую цену инструмента? Что за функция?
OrderSymbol() работает если предварительно выбрать ордер.
 

Zolotai

Интересующийся
OrderSymbol() работает если предварительно выбрать ордер.

То есть я понимаю нужно прописать так.

HTML:
      for (int i=0; i<cnt; i++)  {
      
       if(OrderSelect(cnt,SELECT_BY_POS) && OrderSymbol()==Symbol())
            Alert('1');


       }

Все равно не выдает алерт.Можно кодик, готовый с иправленными ошибками. Уже 2-5 часов вокруг да около и никаких сдвигов..
 

matro3

Почетный гражданин
Я же дал уже код, готовый к приминению...
Код:
int cnt = OrdersTotal();
  
   for (int i=0; i<cnt; i++)
   {
      if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
      if (OrderSymbol() != Symbol()) continue;

      Alert('1');
   }
 

Zolotai

Интересующийся
Я же дал уже код, готовый к приминению...
Код:
int cnt = OrdersTotal();
  
   for (int i=0; i<cnt; i++)
   {
      if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
      if (OrderSymbol() != Symbol()) continue;

      Alert('1');
   }

Спс. Я запутался...
А , что за функция которая покажет текущую цену инструмента?

OrderModify(OrderTicket(), 1.32, 0 , 0, 0, Green);

Выдает следующее
return value of 'OrderModify' should be checked jjjjj.mq4 33 15
 
Последнее редактирование:

Zolotai

Интересующийся
При модификации ордера ,остаются стрелки. Как от них избавиться?
Такой вот вопрос.
Допустим мне необходимо передвинуть ордер на 20 пунктов выше. Проблема все в том, что у некоторых инструментах есть сотые. Так вот как прибывать двадцать пунктов к сотых , а не к целым?
 
Последнее редактирование:

Zolotai

Интересующийся
Как прибавить так, чтобы добавить количество пунктов, начиная с сотых, а не прибалять целое число к целому...
 
Последнее редактирование:

matro3

Почетный гражданин
умножай на Point
например:
Код:
OrderOpenPrice()+LevelWLoss*Point
 

Zolotai

Интересующийся
Как так прописать, чтобы робот. Начал работать как только нажмешь, кнопку(автоторговля).

Я вот перенес код в функцию(тот, что был в start()). Как вызвать, откуда?
Так работает только при каждой новой цене...
 

Andy200577

Новичок форума
Всем добрый день.
Хочу задать один вопрос по MQL. Я робота хочу привязать к номеру счета (не важно демо или реал), как делать это понятно, но проблема в том, что при этом, если номер счета не тот, то не работает робот и в тестере стратегий. Скажите можно ли робота привязать к номеру счета для торговли в режиме реального времени, но чтобы в тестере стратегий робот тестировался всегда при любом счёте или это невозможно?
Спасибо.
 

ansol

Местный знаток
Можно проверять номер счета по условию IsTesting() (не проверять номер счета, когда оно TRUE)
 

hoz

Активный участник
Сегодня я заметил, что у меня функция, которая всегда работала. Щяс не работает. Функция библиотечная. В библиотеке она размещена, как я понимаю верно. Вот так:

PHP:
#property library
#property copyright "hoz"
#property link      ""
#property version   "1.00"
#property strict

#include    <HOZ_Code\Structures\MarketData.mqh>

//=========================================================================================================================================
// 1.1a Нормализация числа с плавающей запятой по Digits. =================================================================================
double ND (double v) export
{
    return (NormalizeDouble (v, SSym.gi_Digits));
}
// --- ДРУГИЕ ФУНКЦИИ ДАЛЬШЕ


Библиотека расположена в папке: \1FC724C8C211BFE8ECF8B599A855301E\MQL4\Libraries\ Т.е. там где и нужно.

Вызываю её в эксперте так:

PHP:
#import     "LDataConvertion.ex4"
   double ND (double v);
   double ND0 (double v);
   string DToS (double v);
   string IToS (int v);
   string DToSByLots(double v);
#import


Пытаюсь в простейшей функции, которую упростил уже дальше не куда нормализовать посредством библиотечной функции значения SL и TP, но ничего не выходит. Вот в этом месте в эксперте я использую данную функции библиотеки:

PHP:
void GetTPiSL (double& fd_SL, double& fd_TP, int fi_Type)
{
   if (fi_Type == OP_BUY)
   {
      if (id_SL != 0)
          fd_SL = ND (Bid - id_SL * SSym.gd_Pt);
          Print ("GetTPiSL: fd_SL = ", fd_SL);
          Print ("GetTPiSL: ND (fd_SL) = ", ND (fd_SL));
      if (id_TP != 0)
          fd_TP = ND (Ask + id_TP * SSym.gd_Pt);
          Print ("GetTPiSL: fd_TP = ", fd_TP);
          Print ("GetTPiSL: ND (fd_TP) = ", ND (fd_TP));
   }
   if (fi_Type == OP_SELL)
   {
      if (id_SL != 0)
          fd_SL = Ask + id_SL * SSym.gd_Pt;
          Print ("GetTPiSL: fd_SL = ", fd_SL);
          Print ("GetTPiSL: ND (fd_SL) = ", ND (fd_SL));
/*          fd_SL = ND (Ask + id_SL * SSym.gd_Pt);
          Print ("GetTPiSL: fd_SL = ", fd_SL);*/
      if (id_TP != 0)
          fd_TP = Bid - id_TP * SSym.gd_Pt;
          Print ("GetTPiSL: fd_TP = ", fd_TP);
          Print ("GetTPiSL: ND (fd_TP) = ", ND (fd_TP));
/*          fd_TP = ND (Bid - id_TP * SSym.gd_Pt);
          Print ("GetTPiSL: fd_TP = ", fd_TP);*/
   }
}


Распринтовал всё, чтоб было видно, что возвращается после использования библиотечной функции ND() не то, что получается на самом деле.
Как такое может быть? В чём причина? Библиотеки нынче перестали работать? Есть какой-то нюанс?
Вот лог:

PHP:
2014.08.16 23:40:00.686	2014.06.20 00:05  RSI EURUSD,M5: GetTPiSL: ND (fd_TP) = 1.0
2014.08.16 23:40:00.686	2014.06.20 00:05  RSI EURUSD,M5: GetTPiSL: fd_TP = 1.35959
2014.08.16 23:40:00.686	2014.06.20 00:05  RSI EURUSD,M5: GetTPiSL: ND (fd_SL) = 0.0
2014.08.16 23:40:00.686	2014.06.20 00:05  RSI EURUSD,M5: GetTPiSL: fd_SL = 0.0
2014.08.16 23:40:00.686	2014.06.20 00:05  RSI EURUSD,M5: fi_signal == SIGNAL_SELL
2014.08.16 23:40:00.686	2014.06.20 00:05  RSI EURUSD,M5: SSym.gi_Digits = 5
2014.08.16 23:40:00.686	2014.06.20 00:05  RSI EURUSD,M5: GetTradeSignal Input
 
Верх