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

 

001 ответил

Насколько я понял здесь и сравнивается. Если ошибаюсь пусть поправят.

if(
(sar10>Open[0])&& // SAR 1 // сравниваем с ценой открытия
(sar11>Close[0+1])&& // минута и сравниваем с ценой закрытия
(sar50>Open[0])&& // SAR 5
(sar51>Close[0+1])&& // минут
(sar150>Open[0])&& // SAR 15
(sar151>Close[0+1])&& // минут
(sar152<Close[0+2]) // начало тренда

)

но это не то. Уточню, эксперт прикрепляется на 15 ти мин. график, и происходит сравнение SAR с ценой для 15, 5 и 1 мин. временных интервалов.... Open[0] Close[0+2] и Close[0+2] это ведь цена откр. и закр. ДЛЯ ТОГО графика к которому прикреплён эксперт а мне нужно что бы сравнение происходило и по донным с младших временных графиков!!???!!???!!???

Заранее благодарен..

 
boris.45:

У вас в окне "Обзор рынка" присутствует данная пара?

Попробуйте при выдаче сообщения "Нет новых данных для символа" пересчитать все Таймфреймы, ведь он вас об этом спрашивает. Я обычно делаю так: открываю окно загрузки данных (F2) дважды щёлкаю по нужному мне символу, дважды щёлкаю по М1 и загружаю данные, несмотря на все его сообщения. И делаю это для каждого ТФ - М1, М5, М15 ... Месяц...

Обычно помогает... Хотя и сам порою в ступор встаю от этого... :)

 
igrok2008:

но это не то. Уточню, эксперт прикрепляется на 15 ти мин. график, и происходит сравнение SAR с ценой для 15, 5 и 1 мин. временных интервалов.... Open[0] Close[0+2] и Close[0+2] это ведь цена откр. и закр. ДЛЯ ТОГО графика к которому прикреплён эксперт а мне нужно что бы сравнение происходило и по донным с младших временных графиков!!???!!???!!???

Заранее благодарен..

   iSAR(Symbol(),PERIOD_M1, step,maximum,1);  // Данные параболика для текущего символа с периода М1
   iSAR(Symbol(),PERIOD_M5, step,maximum,1);  // Данные параболика для текущего символа с периода M5
   iSAR(Symbol(),PERIOD_M15,step,maximum,1);  // Данные параболика для текущего символа с периода М15
   iSAR(Symbol(),PERIOD_M30,step,maximum,1);  // Данные параболика для текущего символа с периода М30

   iOpen (Symbol(),PERIOD_M1,0);     // цена открытия минутной свечи текущего (нулевого) бара
   iClose(Symbol(),PERIOD_M1,0);     // цена закрытия минутной свечи текущего (нулевого) бара
   iOpen (Symbol(),PERIOD_M1,1);     // цена открытия минутной свечи предыдущего (первого) бара
   iClose(Symbol(),PERIOD_M1,1);     // цена закрытия минутной свечи предыдущего (первого) бара
   iOpen (Symbol(),PERIOD_M5,0);     // цена открытия пятиминутной свечи текущего бара
   iClose(Symbol(),PERIOD_M5,0);     // цена закрытия пятиминутной свечи текущего бара

По аналогии дальше сами...

 
artmedia70:

У вас в окне "Обзор рынка" присутствует данная пара?

Попробуйте при выдаче сообщения "Нет новых данных для символа" пересчитать все Таймфреймы, ведь он вас об этом спрашивает. Я обычно делаю так: открываю окно загрузки данных (F2) дважды щёлкаю по нужному мне символу, дважды щёлкаю по М1 и загружаю данные, несмотря на все его сообщения. И делаю это для каждого ТФ - М1, М5, М15 ... Месяц...

Обычно помогает... Хотя и сам порою в ступор встаю от этого... :)

 
В чем может быть причина, когда советник не закрывает ордера (хотя в его коде это и указано), а тестер при этом выдает вот такие ошибки: 
 
ViktorF:
В чем может быть причина, когда советник не закрывает ордера (хотя в его коде это и указано), а тестер при этом выдает вот такие ошибки:
не правильно указано в коде значит, поэтому и не закрывает. А это безобидные ошибки, просто котиры желательно обновить
 
artmedia70:

По аналогии дальше сами...

Проверьте пожалуйста что получилось!!!!!

//+------------------------------------------------------------------+
//|                                 expert SAR_1_5_15 min primer.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern double    Lots=0.01;
extern int       StopLoss=300;
extern int       TakeProfit=150;
extern int       MagicNumber=123456;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
bool CheckOrders(int Type)
{
 bool Result=True;
 for(int i=0;i<OrdersTotal();i++)
  if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol())
      if(OrderType()==Type)
        {
         if(Type==OP_BUY)
           if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
             Result=False;
         if(Type==OP_SELL)
           if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
             Result=False;
         } 
        else Result=False;
 return(Result); 
}

// Проверяем наличие закрытой на текущей свече позиции типа Type. Если есть, то возвращает False  
bool CheckExists(int Type)  
{
 bool Result=True;
 for(int i=OrdersHistoryTotal()-1; i>=0;i--)
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol()&&OrderCloseTime()>=Time[0]&&OrderType()==Type)
    {
     Result=False;
     break;
     }
 return(Result); 
 }
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения Parabolic,на 0-ом, 1-ом и 2-м барах для 1,5-ти,15-ти минутн. графиков
    double sar10 = iSAR(NULL,1,0.02,0.2,0);
    double sar11 = iSAR(NULL,1,0.02,0.2,1);
    double sar50 = iSAR(NULL,5,0.02,0.2,0);
    double sar51 = iSAR(NULL,5,0.02,0.2,1);
    double sar150 = iSAR(NULL,15,0.02,0.2,0);
    double sar151 = iSAR(NULL,15,0.02,0.2,1);
    double sar152 = iSAR(NULL,15,0.02,0.2,2);
    // Определяем цену открытия и закрытия для 15,5 и 1 мин. графиков
   double Open10 = iOpen (Symbol(),PERIOD_M1,0); // цена открытия 1 мин. свечи нулевого бара
   double Close10= iClose(Symbol(),PERIOD_M1,0); // цена закрытия 1 мин. свечи нулевого бара
   double Open50 = iOpen (Symbol(),PERIOD_M5,0); // цена открытия 5 мин. свечи нулевого бара
   double Close51= iClose(Symbol(),PERIOD_M5,1); // цена закрытия 5 мин. свечи первого бара    
   //-------------открытие позиции Buy покупка----------------- 
    if(
    (sar10>Open10)&&     //  SAR 1 // сравниваем с ценой открытия
    (sar11>Close10)&&    // минута и сравниваем с ценой закрытия
    (sar50>Open50)&&         //  SAR 5
    (sar51>Close51)&&        // минут
    (sar150>Open[0])&&        //  SAR 15
    (sar151>Close[0+1])&&     // минут
    (sar152<Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_SELL) && CheckExists(OP_BUY))
      {
       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, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
    //-------------------Конец блока покупки -------------------
    
    //-------------Открытие позиции Sell продажа----------------  
    if(
    (sar10<Open10)&&       //  SAR 1// сравниваем с ценой открытия
    (sar11<Close10)&&      // минута и сравниваем с ценой закрытия
    (sar50<Open50)&&       //  SAR 5
    (sar51<Close51)&&      // минут
    (sar150<Open[0])&&        //  SAR 15
    (sar151<Close[0+1])&&     // минут
    (sar152>Close[0+2])       // начало тренда
    )
     if(CheckOrders(OP_BUY) && CheckExists(OP_SELL))
      {
       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, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//-----------------конец блока продажи ----------------------
   return(0);
  }
//+------------------------------------------------------------------+

При компиляции ошибок не обнаружено!!!!!

Заранее благодарен!

 
artmedia70:
artemida70, в окне "Обзор рынка" валютная пара присутствует. Попробовал Ваш метод загрузки, не получается. При загрузке данных зеленая полоса до конца не доходит и загрузка обрывается. При повторной загрузке таблличка "Нет новых данных символа..." перестала появляться. Кстати, все кубики таймфреймов стали одновременно ярких цветов (хотя загрузка производится на М1). Может быть произошло повреждение загрузочного файла? Ваше мнение - что делать ?
 
Vinin:


Возможно вы хотели спросить как получить значение переменной, описанной во включаемом файле?


Да, именно это. Есть файл, Вы выкладывали нижайший Вам поклон, очень полезная вещь, OptimizationReport.mq4. Я его немного доработал, с целью вычесления Фактора Восстановления. Теперь хочу значение этой переменной получить в основном коде, для ускорения оптимизации, отсеивая проходы тестера, выставив ограничение по уровню ФВ. Попытался сделать это через глобальные переменные. В основном коде не видно значение моей переменной.

В советнике пишу:

double myValue = GlobalVariableGet("myValue");
Print("myValue="+myValue);
MessageBox("myValue="+myValue);
Alert("myValue="+myValue);

в include(выкладываю):

GlobalVariableSet("myValue", 1);

Не работает, myValue=0.00000000

Файлы:
 

Решил и здесь отметиться ...

Подскажите, как настроить отправку почты на ящик narod.ru

Все варианты перепробовал:

Сервер SMTP - smtp.narod.ru

SMTP логин: - имя@narod.ru

SMTP пароль - пароль

От кого: slt-soft@narod.ru

Кому: slt-soft@narod.ru

Выскакивает ошибка: Mail: login to smtp.narod.ru failed

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