Простой торговый робот

 

Добрый день!

Помогите выставитить ордер с помощью эксперта... 

int OnTick()
  {
   bool  OrderSend (MqlTradeRequest)
     {
     TRADE_ACTION_PENDING,EURUSD,1.0,BID,0,0,3,ORDER_TYPE_BUY,ORDER_FILLING_AON;
     }
   return(0);
  }
Я же просил Вас оформлять код правильно! (Rosh)
 
Trashkevich писал(а)  :

Добрый день!

Помогите выставитить ордер с помощью эксперта... 

  

Откройте пример MACD.

Найдите функцию OrderSend 

И разберитесь с ней + справку читаните, а то у вас совсем неправильно 

 
sergeev:

Откройте пример MACD.

Найдите функцию OrderSend 

И разберитесь с ней + справку читаните, а то у вас совсем неправильно

в этом примере, который в самом MT5, не нашёл... (во всех остальных файлах тоже)...

в справке тоже примеров нет, только общее описание, на форуме все чего-то рисуют...

есть где-нибудь простой эксперт по выставлению ордеров?

в 4-ой версии как-то понятно всё было... 

 

 

 
на сколько я знаю ордер выставляется в таком виде
                     В. пара      тип             кол-во    цена   стоп\профит\время действия\время истечение\
if(m_trade.OrderOpen(Symbol(),ORDER_TYPE_BUY_STOP,lots,NULL,priceb,slb,tpb,ORDER_TIME_GTC,StringToTime(closetime)))

но в функцию "он тик" я бы это не пихал
 
StrikeR:

но в функцию "он тик" я бы это не пихал

 

Спасибо, друг... Всё равно - не понятно...

Понятно одно - чайникам здесь не место... Вход только для продвинутых программно-ориентируемых художников... 

 

 

Это скрипт.

открывает один ордер на покупку. + выводит в журнал всю информаци по результату.

 

void OnStart()
{
         OpenBuy();
}

void OpenBuy()
{
   MqlTradeRequest   m_request;         // request data
   MqlTradeResult    m_result;          // result data

   m_request.action      =TRADE_ACTION_DEAL;
   m_request.magic       =101;
   m_request.symbol      =Symbol();
   m_request.volume      =1;
   m_request.price       =SymbolInfoDouble(Symbol(), SYMBOL_ASK);
   m_request.sl          =0;
   m_request.tp          =0;
   m_request.deviation   =0;
   m_request.type        =ORDER_TYPE_BUY;
   m_request.type_filling=ORDER_FILLING_AON;
   m_request.comment     ="";
//---
   OrderSend(m_request, m_result);
   Print("ret "+m_result.retcode);
   Print("comm "+m_result.comment);
   Print("deal "+m_result.deal);
   Print("ask "+m_result.ask);
   Print("bid "+m_result.bid);
   Print("order "+m_result.order);
   Print("price "+m_result.price);
   Print("vol "+m_result.volume);
}
 
sergeev:

Это скрипт.

открывает один ордер на покупку. + выводит в журнал всю информаци по результату.

 

 

СПАСИБО ОГРОМНОЕ....
 
sergeev:

Это скрипт.

открывает один ордер на покупку. + выводит в журнал всю информаци по результату.

 

 

С открытием позиции все понятно. А как грамотно закрыть или перевернуться? выложите пример пожалуйста или ссылочку дайте где это расписано)
 
OneBillionUSD:
С открытием позиции все понятно. А как грамотно закрыть или перевернуться? выложите пример пожалуйста или ссылочку дайте где это расписано)
Закрытие позиции это обратная операция открытия, и выполняется точно также.
 
 MqlTradeRequest BigDogBuy;
         MqlTradeRequest BigDogSell;
         BigDogBuy.action=TRADE_ACTION_PENDING;
         // Устанавливаем отложенный ордер
         BigDogBuy.magic = MagicNumber;
         BigDogBuy.symbol=Symbol();
         BigDogBuy.price=Higest;
         //Цена, по которой будет установлен ордер
         BigDogBuy.volume=Lots;
         BigDogBuy.sl=Lowest;
         //если стоп лосс не задан, то будем устанавливать по стратегии
         BigDogBuy.tp=Higest+TakeProfit*Point();
         //устанавливаем тейк профит
         BigDogBuy.deviation=dev;
         //минимальное отклонение от запрошенной цены, 
         //то есть, насколько цена исполенния может отличаться от заданной цены
         BigDogBuy.type=ORDER_TYPE_BUY_STOP;
         //тип ордера, который исполняется по указанной цене или по цене лучше указаной
         //в данном случае ордер установится по цене выше или равной указанной 
         //если бы тип ордера был buy_limit, то он бы исполнился 
         //по указанной цене или ценам, ниже указанной
         BigDogBuy.type_filling=ORDER_FILLING_AON;
         //данный параметр показывает, как ведёт себя ордер 
         //при частичном исполнения обьёма 
         BigDogBuy.expiration=TimeTradeServer()+6*60*60;
         //так как после открытия америки прошло 2 часа, а рабочий день у нас 8 часов, то 8-2 = 6
         BigDogSell.action=TRADE_ACTION_PENDING;

         // Устанавливаем отложенный ордер
         BigDogSell.magic = MagicNumber;
         BigDogSell.symbol=Symbol();
         BigDogSell.price=Lowest;
         //Цена, по которой будет установлен ордер
         BigDogSell.volume=Lots;
         BigDogSell.sl=Higest;
         //Стоп лосс устанавливаем по стратегии
         BigDogSell.tp=Lowest-TakeProfit*Point();
         //устанавливаем тейк профит
         BigDogSell.deviation=dev;
         //Минимальное отклонение от запрошенной цены, 
         //то есть, насколько цена исполения может отличаться от заданной цены
         BigDogSell.type=ORDER_TYPE_SELL_STOP;
         //тип ордера, который исполняется по указанной цене или по цене лучше указаной
         //в данном случае ордер установиться по цене ниже или равной указанной 
         //если бы тип ордера был buy_limit, то он бы исполнился
         //по указанной цене или ценам ниже указанной
         BigDogSell.type_filling=ORDER_FILLING_AON;
         //данный параметр показывает, как ведёт себя ордер 
         //при частичном исполнения обьёма 
         BigDogSell.expiration=TimeTradeServer()+6*60*60;
         //так как после открытие америки прошло 2 часа, а рабочий день у нас 8 часов, то 8-2 = 6
         MqlTradeResult ResultBuy,ResultSell;
         OrderSend(BigDogBuy,ResultBuy);
         OrderSend(BigDogSell,ResultSell);


 
CoreWinTT:

 

Не принимай за критику просто понятнее былобы строку

 

BigDogBuy.expiration=TimeTradeServer()+6*60*60;
//так как после открытия америки прошло 2 часа, а рабочий день у нас 8 часов, то 8-2 = 6

заменить на

BigDogBuy.expiration=TimeTradeServer()+6*PeriodSeconds(PERIOD_H1);
//так как после открытия америки прошло 2 часа, а рабочий день у нас 8 часов, то 8-2 = 6

я понимаю, это привычка с MQL4 ;) 

 

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