[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 288

 
TheXpert писал(а) >>

Тут. Приведенное Вами выражение однозначно стоит.

Thanks!

 
Доброго времени суток всем). Есть система торговли Гребенщикова. Работа в канале и на пробой канала, а также вход отложенными ордерами из флета. Хочу протестировать ее на истории и подогнать ММ под нее. Может ктонить уже забивал эту систему в код? И из каких элементов можно собрать такую систему? вот описание самой системы http://www.fx4u.ru/rinki-forex-commodities-cfd-futures-f14/strategii-opitnih-f4/ts-grebenschikova-si-forex-i-mi-t529.html
 

У меня вопрос

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

А учитывая что доллар йена имеет скажем цену 101,50 перевести ее скажем втакое состояние 1,0150,а потом уже использовать при построении этого среднего графика ..

Да и ее хорошо бы возможность использования этого средего графика при тесте и оптимизации ..

заранее благодарю что выслушали ...

 

Здравствуйте Все и Вся!

Привожу код (только ф-ия старт)

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения средних на 0-ом и 1-ом барах
    double MAF_0 = iMA(NULL, 0, MAFP, 0, 1, 1, 0);
    double MAF_1 = iMA(NULL, 0, MAFP, 0, 1, 1, 1);
    double MAS_0 = iMA(NULL, 0, MASP, 0, 1, 1, 0);
    double MAS_1 = iMA(NULL, 0, MASP, 0, 1, 1, 1);
    
   // ----открытие позиции Buy покупка-----
    if(MAF_0 > MAF_1 && MAS_0 > MAS_1) { //-условие на покупку--- 
    if( isCloseLastPosByTake( NULL, OP_SELL,MagicNumber) ==true) {
     if(CheckOrders(OP_SELL))                                      {
       if(StopLoss <= StopLevel+Spread)
         double SL = 0;        else         SL = Ask - StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         double TP = 0;        else         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
                }
               }
              }
   //-------------------Конец блока покупки ------------------
    
  //  ----- Открытие позиции Sell продажа------------  
    if(MAF_0 < MAF_1 && MAS_0 < MAS_1) { //-условие на продажу---
    if(CheckOrders(OP_BUY))                                     {
      if(StopLoss <= StopLevel+Spread)
         SL = 0;        else         SL = Bid + StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         TP = 0;        else         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
                 }
                }
   //-------------------конец блока продажи -------------------
     
   return(0);
  }//+----------КОНЕЦ ФУНКЦИИ СТАРТ -------------------+

//ЖЖЖЖЖЖЖ Другие вызываемые пользовательские функции ЖЖЖЖЖЖ
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия                                       |
//|  последней позиции по тейку.                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }} }}}}}

  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
 

Здесь как бы реализовано одно условие, по рекомендации rid-а. С его замечаниями и исправлениями.

Сам эксперт компилируется, торгует.......Правда не так.......

Попробывал в тестере поставить только long-ни одной сделки, поставил только short-тоже ни одной сделки.

Логика проста при выполнении условия на покупку, советник совершает сделку, сделка закрывается по тейку.

А дальше советник ЖДЁТ КОГДА НАСТУПИТ СЛЕДУЮЩЕЕ ТОРГОВОЕ УСЛОВИЕ. ТОЛЬКО ЭТО УСЛОВИЕ ДОЛЖНО БЫТЬ ПРОТИВОПОЛОЖНЫМ ТОМУ, ЧТО БЫЛО РАНЬШЕ.

Т. Е. если сделка была по BAY то следующая должна быть по SHELL.

 

и ещё. В этой ветке, только гораздо раньше, подымался вопрос, примерно похожий на мой. Там говорилось про флаги. Вот поэтому весь этот сыр-бор.

 

А ещё вопрсик.

Открываем 2 окна, 1-е 5-и минутка, 2-е 15-и минутка.

рисуем на обоих МАки (10). ПРАВИЛЬНО ЛИ БУДЕТ УТВЕРЖДЕНИЕ, если на 5-и мин. нарисовать МАку с (30), то она соответствует МА (10) на 15-и мин.

Для графиков 15 и 30 коэф. будет 2.

Для графиков 30 и 1 час коэф. будет 2.

Для графиков 1ч. и 4ч. коэф. будет 4.

Это так или нет????????????

 

igrok2008 писал(а) >>

Это так или нет????????????

Строго говоря, нет. Но очень рядом.

 

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

Первый раз пишу на форум. Надеюсь не последний. В сравнении с тем о чем на форуме пишут я новичок. Язык изучил за месяц, примерно пол года

назад, " Учебник по программированию на MQL4" Сергея Ковалёва. Прекрасный учебник. Написал несколько советников, пользовательских индикаторов,

скриптов. На все непонятные вопросы ответы пытаюсь найти на форуме. Но столкнулся с одной вроде бы мелочью, а ответа найти не могу.

Помогите пожалуйста.

Вопрос касается использование #include <ХХХ.mqh>, перечитал весь форум не нашел ответа. На одной из веток написано:

"...Ещё можно добавить, что файл ех4 является самодостаточным - для того, чтоб он работал,
не требуется, чтоб в include находились исходные коды пользовательских функций.
Файл ех4 можно скопировать, передать другим трейдерам и там использовать.
Он является полноценным независимо от технологии его получения."

В этом и проблема. При передачи советника он не "видит" функцию, а пишет при компиляции - cannot open the program file .

Хотя в include на другом терминале появилась запись не компилированная в ex4.

Объясните в чем ошибка. Спасибо.

 
gvi2504 >>:

... При передачи советника он не "видит" функцию, а пишет при компиляции - cannot open the program file .

Хотя в include на другом терминале появилась запись не компилированная в ex4.

Объясните в чем ошибка. Спасибо.

Примерчик приведите, с полными логами. Как производится вызов библиотеки в советнике, что в заголовке самой библиотеки. Может, в этом дело.

Кстати, тут где-то рядом TheXpert пробегал, он в этом деле хорошо разбирается.

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