Вопросы от "чайника" - страница 177

 
tol64:

В OnTrade() ведь мы получаем ответ от сервера. То есть, если проверять событие в OnTrade(), то мы уже будем точно знать, есть позиция или нет. Хотя можно было бы сделать штатные варианты типа DEAL_ENTRY_FULLOUT (полное закрытие) или  DEAL_ENTRY_PARTOUT (частичное закрытие), чтобы всё было идеально элегантно. )))


Дельное предложение. Для текущего момента в реал-тайме то проблем нет, а вот при анализе истории надо суммировать объёмы по всем сделкам, формировавшим позицию, чтобы узнать, когда она была окончательно закрыта.
 
Valmars:
Дельное предложение. Для текущего момента в реал-тайме то проблем нет, а вот при анализе истории надо суммировать объёмы по всем сделкам, формировавшим позицию, чтобы узнать, когда она была окончательно закрыта.
Да, для анализа истории сложнее. Правда всю необходимую информацию можно опять же в комментарий уместить, но код тогда становится всё более и более "пёстрым". :)
 
tol64:
Да, для анализа истории сложнее. Правда всю необходимую информацию можно опять же в комментарий уместить, но код тогда становится всё более и более "пёстрым". :)
Через комментарий, конечно можно, но это только в автоматической торговле своим советником, а при анализе чужих счетов да ещё с ручным управлением не получится. Только по выборке через HistorySelectByPosition().
 
Valmars:
Через комментарий, конечно можно, но это только в автоматической торговле своим советником, а при анализе чужих счетов да ещё с ручным управлением не получится. Только по выборке через HistorySelectByPosition().

Давно, очень давно придумал решение, которое огромную кучу подобного  гемора делает ненужной.

Но оно - на стороне разработчика. :(

А состоит в том, чтоб добавить в описание (структуру) сделки поле, описывающее результирующую открытую  позицию по инструменту (после того как сделка состоялась).

Положительные значения этого поля могли бы означать позицию Бай, отрицательное - позицию Селл.  0 = нет позы.

--

Это можно сделать даже хоть сейчас - и ни один сервер не пострадает. Изменения на сервере не нужны. Вообще. Всё решаемо внутри терминала, причём весьма просто.

// Это изменение даже дешевле чем платить кредиты за все посты на форуме обсуждающие геморрой вокруг подсчёта позиций на истории. :)

 
MetaDriver:

... добавить в описание (структуру) сделки поле, описывающее результирующую открытую  позицию по инструменту (после того как сделка состоялась).

Положительные значения этого поля могли бы означать позицию Бай, отрицательное - позицию Селл.  0 = нет позы.     

Интересный ход! Мою текущую задачу это полностью решило бы. А в сочетании с новыми свойствами  DEAL_ENTRY_DECREASE (уменьшение объёма) и  DEAL_ENTRY_INCREASE (увеличение объёма) стало бы вообще замечательно: кому нужен результирующий объём от конкретной сделки - пжалста, кому нужен только результат  сделки (в виде "уменьшение/увеличение объёма") - пжалста!

О своём предложении в СД писали? - А то мне не трудно докинуть красивую идею.

MetaDriver:
 

Это можно сделать даже хоть сейчас - и ни один сервер не пострадает. Изменения на сервере не нужны. Вообще. Всё решаемо внутри терминала, причём весьма просто.
// Это изменение даже дешевле чем платить кредиты за все посты на форуме обсуждающие геморрой вокруг подсчёта позиций на истории. :)

 "Кредиты за все посты на форуме, обсуждающие геморрой вокруг подсчёта позиций на истории" - они такие дорогие? :) Отдаю их на алтарь изменений :)

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
 
Yedelkin:

Интересный ход! Мою текущую задачу это полностью решило бы. А в сочетании с новыми свойствами  DEAL_ENTRY_DECREASE (уменьшение объёма) и  DEAL_ENTRY_INCREASE (увеличение объёма) стало бы вообще замечательно: кому нужен результирующий объём от конкретной сделки - пжалста, кому нужен только результат  сделки (в виде "уменьшение/увеличение объёма") - пжалста!

О своём предложении в СД писали? - А то мне не трудно докинуть красивую идею.

 "Кредиты за все посты на форуме, обсуждающие геморрой вокруг подсчёта позиций на истории" - они такие дорогие? :) Отдаю их на алтарь изменений :)

Нет.  Они очень напрягаются при предложениях изменяющих базовые структуры данных.

А я очень не люблю с ними ссориться.

Короче комплексы у меня, по части "фундаментальных" предложений. :)

// Я их много делал, и очень небольшой процент воплощён.

Так что : есть стимул - дерзай, подавай заявку.  Надеюсь, народ поддержит, предложение вроде как ценное.

 
MetaDriver:

Нет.  Они очень напрягаются при предложениях изменяющих базовые структуры данных.

А я очень не люблю с ними ссориться.

Короче комплексы у меня, по части "фундаментальных" предложений. :)

// Я их много делал, и очень небольшой процент воплощён.

Так что : есть стимул - дерзай, подавай заявку.  Надеюсь, народ поддержит, предложение вроде как ценное.

 ОК, будучи радикальным фундаменталистом, не вижу причин для отступления :) Если предложение по изменению базовых структур данных идёт на пользу, а не во вред, то это - идеологически правильное предложение.
 
Спасибо!!
 

Всем Здравия!

Подскажите кто знает, если я в тестере MT5 буду открывать сделку (Buy или Sell) в определенный "момент времени".

Но при этом в этот "момент времени" не было котировок по валютной паре (то-есть там разрыв в данных , например  начало бара M5 в  00:05 , а следующий за ним бар уже начало в 00:25)

А я открываю сделку в тестере например в 00:15.

Какую цену воткнет тестер в сделку от первого бара (клоус) или от второго (опен).

Или вообще откажется её совершать?

 
Добрый вечер! Я пытаюсь открыть пять ордеров- я собственно осваиваю особености пятого тирминала. Так вот, я уже минут 40 не соображу- не вижу вывода в журнал сообщений принт! Если можно, посмотрите пожалуста. 
//+------------------------------------------------------------------+
//|                                                     ордерній.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

uint resultat=0;
          int i;
void OnTick()
  {
//---
                      for( ;i<5;i++){

 // if( resultat!=10009){
   MqlTick last_tick;
SymbolInfoTick(_Symbol,last_tick);
double Ask=last_tick.ask;
double Bid=last_tick.bid;

   MqlTradeRequest request={0};
   MqlTradeResult result={0};
   
   request.action= TRADE_ACTION_DEAL;
   request.magic =600;
   request.symbol=Symbol();
   request.price=Bid;
   request.deviation=20;
   request.volume=1;
   request.sl=Bid-300*Point();
   request.tp=Bid+300*Point();
   request.type=ORDER_TYPE_BUY;
   OrderSend( request,   result    );    
        
  int Error=GetLastError( ) ; ResetLastError();
  printf("Error %i ",Error);
  
   resultat= result.retcode ;
   printf("resultat %i ",resultat); //}
   Print ( i, PositionsTotal());
   // int PositionTicket= PositionGetInteger(POSITION_IDENTIFIER)
   
                                          }
  

   
  }
//+------------------------------------------------------------------+

 bool  PositionModify( int PositionTicket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
      {  MqlTradeRequest request  = {0};

Да, ордера открывает, все путем, но принтов не пишет . Пишет

 2012.09.04 17:20:10 Trades '1232639': order #11979593 buy 1.00 / 1.00 EURUSD at 1.25755 done

 2012.09.04 17:20:10 Trades '1232639': deal #11107137 buy 1.00 EURUSD at 1.25755 done (based on order #11979592)
 

 2012.09.04 17:20:10 Trades '1232639': instant buy 1.00 EURUSD at 1.25739 sl: 1.25439 tp: 1.26039 (deviation: 20)


 2012.09.04 17:20:10 Trades '1232639': instant buy 1.00 EURUSD at 1.25739 sl: 1.25439 tp: 1.26039 (deviation: 20)

 2012.09.04 17:20:09 Experts expert ордерній (EURUSD,M5) loaded successfully

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