Скачать MetaTrader 5

Торговать из одного ОКНА по нескольким парам!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114287
Forex Trader  
СРАЗУ ОГОВРКА НЕ НА ТЕСТЕРЕ СТРАТЕГИЙ!!! а в реальном времени , пробую на ДЕМО

Можно ли без проблем торговать из одного окна по нескольким валютным парам!
какие могут быть при этом проблемы!
основна идея повесить на самый подвижный иструмент! золото или буйныйе валютные пары
проблема возникает не срабатывает
ошибки идут 138 - новые цены и еще 129 новая цена



непонятно как такие ошибки возможны !!!


стопы slippgae гонял как угодно проблема остается !

вопрос САМ В ТОМ !!!
что порочного в данном подходе в данной идее




вот примерынй код примитива который для работы по разным ВАЛЮТАМ с одного окна
передаем в параметраx кроме всего прочего КОД валюты



static string sCurrency [5];
static int OP; 
 
static   int Order_ID;
static   double mAsk;
static   double mBid;
static   string sSymbol;
static   int ErrCod;
 
 
void init()
{
 sCurrency [ 1] = "EURUSD";
 sCurrency [ 2] = "USDCHF";
 sCurrency [ 3] = "USDJPY";
 sCurrency [ 4] = "GBPUSD";
 sCurrency [ 5] = "AUDUSD";
OP = 0;
}
 
 
 
void start()
{
 
 
 if (OP <= 3) 
 {
   OP = OP + 1;
   ОткрытьПозицию(  OP_SELL  ,  1  ,"");
 
   ОткрытьПозицию(  OP_BUY   ,  2  ,"");
 
   ОткрытьПозицию(  OP_BUY   ,  3  ,"");
 
   ОткрытьПозицию(  OP_SELL  ,  4  ,"");
  }
}
 
 
 
int ОткрытьПозицию(  int pTypeOper,int pCur  ,string psComment)
{
 
     
   
   sSymbol = sCurrency [ pCur ];
 
  ErrCod = GetLastError(); // проверим ВДРУГ КОД НЕ ПУСТ!
  ErrCod = 0;
 
  // пока количество 1 начиная с 1 элемента ! в 0 сидит кол ордеров по валюте
//   mPoint =  sCurrency_POINT        [pCur];  //  и т д
 
   mAsk = MarketInfo( sSymbol, MODE_ASK);  // получаем курс этой самой ВАЛЮТЫ
   mAsk = MarketInfo( sSymbol, MODE_ASK);  // получаем курс этой самой ВАЛЮТЫ
/*
   ErrCod = GetLastError();
   if (ErrCod != 0)  
   {
      Print( "ASK  "+sSymbol+" "+mAsk+" "+msgErrors(ErrCod)) ;
      return(-1);
   }
*/

 
   mBid = MarketInfo( sSymbol, MODE_BID );  // получаем курс этой самой ВАЛЮТЫ
   mBid = MarketInfo( sSymbol, MODE_BID );  // получаем курс этой самой ВАЛЮТЫ
/*
   ErrCod = GetLastError();
   {
      Print( "BID  "+sSymbol+" "+mBid+" "+msgErrors(ErrCod)) ;
      return(-1);
   }
   
*/
   

 
 
// SLIPPAGE допусти 10 - 20 !!! для гарантии :))
 
if ( pTypeOper  == OP_SELL )
{
   Order_ID = OrderSend(sSymbol,  pTypeOper  , 0.1 , mAsk, 20 , 0,0,  psComment,  0 , 0 ,Red);
   ErrCod = GetLastError();
   if (ErrCod != 0)  
   {
      Print("SELL  "+ msgErrors(ErrCod)) ;
      return(-1);
   }
}
if ( pTypeOper  == OP_BUY )
{
     Order_ID = OrderSend(sSymbol,  pTypeOper  , 0.1 , mBid, 20 , 0,0,  psComment,  0 , 0 ,Red);
   ErrCod = GetLastError();
   if (ErrCod != 0)  
   {
      Print("BUY  "+ msgErrors(ErrCod)) ;
      return(-1);
   }
}
   ErrCod = 0;
 
   return(  Order_ID);
}
 
 
string msgErrors(int error_code)
{
   string strError;
 
   switch(error_code)
   {
      case        0: strError=error_code+" Нет ошибки                                                   "; break;
      case        1: strError=error_code+" Нет ошибки, но результат неизвестен                          "; break;
      case        2: strError=error_code+" Общая ошибка                                                 "; break;
      case        3: strError=error_code+" Неправильные параметры                                       "; break;
      case        4: strError=error_code+" Торговый сервер занят                                        "; break;
      case        5: strError=error_code+" Старая версия клиентского терминала                          "; break;
      case        6: strError=error_code+" Нет связи с торговым сервером                                "; break;
      case        7: strError=error_code+" Недостаточно прав                                            "; break;
      case        8: strError=error_code+" Слишком частые запросы                                       "; break;
      case        9: strError=error_code+" Недопустимая операция нарушающая функционирование сервера    "; break;
      case       64: strError=error_code+" Счет заблокирован                                            "; break;
      case       65: strError=error_code+" Неправильный номер счета                                     "; break;
      case      128: strError=error_code+" Истек срок ожидания совершения сделки                        "; break;
      case      129: strError=error_code+" Неправильная цена                                            "; break;
      case      130: strError=error_code+" Неправильные стопы                                           "; break;
      case      131: strError=error_code+" Неправильный объем                                           "; break;
      case      132: strError=error_code+" Рынок закрыт                                                 "; break;
      case      133: strError=error_code+" Торговля запрещена                                           "; break;
      case      134: strError=error_code+" Недостаточно денег для совершения операции                   "; break;
      case      135: strError=error_code+" Цена изменилась                                              "; break;
      case      136: strError=error_code+" Нет цен                                                      "; break;
      case      137: strError=error_code+" Брокер занят                                                 "; break;
      case      138: strError=error_code+" Новые цены                                                   "; break;
      case      139: strError=error_code+" Ордер заблокирован и уже обрабатывается                      "; break;
      case      140: strError=error_code+" Разрешена только покупка                                     "; break;
      case      141: strError=error_code+" Слишком много запросов                                       "; break;
      case      145: strError=error_code+" Модификация запрещена, так как ордер слишком близок к рынку  "; break;
      case      146: strError=error_code+" Подсистема торговли занята                                   "; break;
      case      147: strError=error_code+" Использование даты истечения ордера запрещено брокером       "; break;
 
      case     4000: strError=error_code+" Нет ошибки                                                  "; break;
      case     4001: strError=error_code+" Неправильный указатель функции                              "; break;
      case     4002: strError=error_code+" Индекс массива - вне диапазона                              "; break;
      case     4003: strError=error_code+" Нет памяти для стека функций                                "; break;
      case     4004: strError=error_code+" Переполнение стека после рекурсивного вызова                "; break;
      case     4005: strError=error_code+" На стеке нет памяти для передачи параметров                 "; break;
      case     4006: strError=error_code+" Нет памяти для строкового параметра                         "; break;
      case     4007: strError=error_code+" Нет памяти для временной строки                             "; break;
      case     4008: strError=error_code+" Неинициализированная строка                                 "; break;
      case     4009: strError=error_code+" Неинициализированная строка в массиве                       "; break;
      case     4010: strError=error_code+" Нет памяти для строкового массива                           "; break;
      case     4011: strError=error_code+" Слишком длинная строка                                      "; break;
      case     4012: strError=error_code+" Остаток от деления на ноль                                  "; break;
      case     4013: strError=error_code+" Деление на ноль                                             "; break;
      case     4014: strError=error_code+" Неизвестная команда                                         "; break;
      case     4015: strError=error_code+" Неправильный переход                                        "; break;
      case     4016: strError=error_code+" Неинициализированный массив                                 "; break;
      case     4017: strError=error_code+" Вызовы DLL не разрешены                                     "; break;
      case     4018: strError=error_code+" Невозможно загрузить библиотеку                             "; break;
      case     4019: strError=error_code+" Невозможно вызвать функцию                                  "; break;
      case     4020: strError=error_code+" Вызовы внешних библиотечных функций не разрешены            "; break;
      case     4021: strError=error_code+" Недостаточно памяти для строки, возвращаемой из функции     "; break;
      case     4022: strError=error_code+" Система занята                                              "; break;
      case     4050: strError=error_code+" Неправильное количество параметров функции                  "; break;
      case     4051: strError=error_code+" Недопустимое значение параметра функции                     "; break;
      case     4052: strError=error_code+" Внутренняя ошибка строковой функции                         "; break;
      case     4053: strError=error_code+" Ошибка массива                                              "; break;
      case     4054: strError=error_code+" Неправильное использование массива-таймсерии                "; break;
      case     4055: strError=error_code+" Ошибка пользовательского индикатора                         "; break;
      case     4056: strError=error_code+" Массивы несовместимы                                        "; break;
      case     4057: strError=error_code+" Ошибка обработки глобальныех переменных                     "; break;
      case     4058: strError=error_code+" Глобальная переменная не обнаружена                         "; break;
      case     4059: strError=error_code+" Функция не разрешена в тестовом режиме                      "; break;
      case     4060: strError=error_code+" Функция не подтверждена                                     "; break;
      case     4061: strError=error_code+" Ошибка отправки почты                                       "; break;
      case     4062: strError=error_code+" Ожидается параметр типа string                              "; break;
      case     4063: strError=error_code+" Ожидается параметр типа integer                             "; break;
      case     4064: strError=error_code+" Ожидается параметр типа double                              "; break;
      case     4065: strError=error_code+" В качестве параметра ожидается массив                       "; break;
      case     4066: strError=error_code+" Запрошенные исторические данные в состоянии обновления      "; break;
      case     4067: strError=error_code+" Ошибка при выполнении торговой операции                     "; break;
      case     4099: strError=error_code+" Конец файла                                                 "; break;
      case     4100: strError=error_code+" Ошибка при работе с файлом                                  "; break;
      case     4101: strError=error_code+" Неправильное имя файла                                      "; break;
      case     4102: strError=error_code+" Слишком много открытых файлов                               "; break;
      case     4103: strError=error_code+" Невозможно открыть файл                                     "; break;
      case     4104: strError=error_code+" Несовместимый режим доступа к файлу                         "; break;
      case     4105: strError=error_code+" Ни один ордер не выбран                                     "; break;
      case     4106: strError=error_code+" Неизвестный символ                                          "; break;
      case     4107: strError=error_code+" Неправильный параметр цены для торговой функции             "; break;
      case     4108: strError=error_code+" Неверный номер тикета                                       "; break;
      case     4109: strError=error_code+" Торговля не разрешена                                       "; break;
      case     4110: strError=error_code+" Длинные позиции не разрешены                                "; break;
      case     4111: strError=error_code+" Короткие позиции не разрешены                               "; break;
      case     4200: strError=error_code+" Объект уже существует                                       "; break;
      case     4201: strError=error_code+" Запрошено неизвестное свойство объекта                      "; break;
      case     4202: strError=error_code+" Объект не существует                                        "; break;
      case     4203: strError=error_code+" Неизвестный тип объекта                                     "; break;
      case     4204: strError=error_code+" Нет имени объекта                                           "; break;
      case     4205: strError=error_code+" Ошибка координат объекта                                    "; break;
      case     4206: strError=error_code+" Не найдено указанное подокно                                "; break;
      case     4207: strError=error_code+" Ошибка при работе с объектом                                "; break;
      default:   strError="unknown error";
 
   }
   return  (strError);
}
Forex Trader
114287
Forex Trader  
"безнадежно влюбилась в его синтаксис" (с) =)))

Ничего "порочного" в торговле по нескольким инструментам нет, просто надо покупать по Бид-у, а продавать по Аск-у, а не наоборот ;)
Forex Trader
114287
Forex Trader  
ОЙ спасибо!
действительно все верно!
перепутал



Ничего "порочного" в торговле по нескольким инструментам нет, просто надо покупать по Бид-у, а продавать по Аск-у, а не наоборот ;)


обратите внимание у меня при BUY и SELL стояло как вы говорите!
у меня было как вы написали!


исправил и все пошло!
вот верный фрагмент кода


if ( pTypeOper  == OP_SELL )
{
   Order_ID = OrderSend(sSymbol,  pTypeOper  , 0.1 ,NormalizeDouble( mBid, gDigits), 20 , 0,0,  psComment,  0 , 0 ,Red);
   ErrCod = GetLastError();
   if (ErrCod != 0)  
   {
      Print("SELL  "+sSymbol+" "+gDigits+" "+mBid+" "+ msgErrors(ErrCod)) ;
      return(-1);
   }
}
if ( pTypeOper  == OP_BUY )
{
     Order_ID = OrderSend(sSymbol,  pTypeOper  , 0.1 , NormalizeDouble( mAsk, gDigits), 20 , 0,0,  psComment,  0 , 0 ,Red);
   ErrCod = GetLastError();
   if (ErrCod != 0)  
   {
      Print("BUY  "+sSymbol+" "+gDigits+" "+mAsk+" "+ msgErrors(ErrCod)) ;
      return(-1);
   }
}
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий