Ошибки, баги, вопросы - страница 355

 
А у агентов всегда та же история что и на главном компе?
 
dimonsky:
А у агентов всегда та же история что и на главном компе?
По идеи да, но есть вопросы с синхронизацией истории и еще некоторыми моментами.
 

Всю ветку не читал, поэтому прошу извинить если уже было.

1. Будет ли возможность выбора времени (не путать с датой) старта и остановки тестирования.

2. Как в тестере просмотреть сделки по другим парам кроме установленного в настройках (для мультивалютников - для одного инструмента - "открыть график" в результатах тестирования, а для остальных).

 
Retsam:

Всю ветку не читал, поэтому прошу извинить если уже было.

1. Будет ли возможность выбора времени (не путать с датой) старта и остановки тестирования.

2. Как в тестере просмотреть сделки по другим парам кроме установленного в настройках (для мультивалютников - для одного инструмента - "открыть график" в результатах тестирования, а для остальных).

1 Нету такого - если только не попросить сделать.

2 тож нету,

 

Добрый день!

MT 5.425 Windows 7 x64

Запускаю индикатор в подокне (подокно №1), вывожу туда график с помощью буфера, хочу получить минимальную и максимальную цену окна с помощью ChartGetDouble(0,CHART_PRICE_MAX,1) и ChartGetDouble(0,CHART_PRICE_MIN,1) соответственно.

На выходе имеем 0, при этом минимум и  максимум основного окна выдает правильно (ChartGetDouble(0,CHART_PRICE_MAX) ChartGetDouble(0,CHART_PRICE_MIN)).  ChartRedraw(0) не помогает. Если график начать скролить мышью, то значения отмирают - начинает показывать правильно.

Такая непонятка происходит при первом запуске или при смене значений в свойствах индикатора. 

Может ошибка, а может я что-то не то делаю.

Как понимать данную запись в файле помощи?

CHART_PRICE_MIN Минимум графика double r/o модификатор - номер подокна

CHART_PRICE_MAX Максимум графика double r/o модификатор - номер подокна

Спасибо! 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Нумерацмя всех окон графика идет от нуля. 0- главное окно графика, 1 -окно первого индикатора, который показывается в отдельном окне. И так далее.
 

ни как не могу понять в чём дело:

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

  

 По идее, должен закрывать сделки второй индикатор, но это не так. Сам код:

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
MqlRates mrate[];

input int TriX_PARAM=14;
input int TriX_PARAM_Close=50;

double TriX[];
double TriX_Close[];
int TriXHandle;
int TriXHandle_Close;

int OnInit()
  {

   TriXHandle=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM,PRICE_WEIGHTED);
   TriXHandle_Close=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM_Close,PRICE_WEIGHTED);
   return(0);
  }

void OnTick()
  {
   CTrade mytrade;
   CPositionInfo myposition;
   CSymbolInfo mysymbol;
   COrderInfo myorder;

   bool Sell_opened,Buy_opened;
   if(myposition.Select(_Symbol)==true) { if(myposition.Type()==POSITION_TYPE_BUY) Buy_opened=true;  if(myposition.Type()==POSITION_TYPE_SELL) Sell_opened=true;}

//Закрываем позицию
   if(Buy_opened==true || Sell_opened==true)
     {
      ArraySetAsSeries(TriX_Close,true);
      CopyBuffer(TriXHandle_Close,0,0,4,TriX_Close);

      if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);

     }

//Открываем позицию
   if(Buy_opened==false && Sell_opened==false)
     {
      ArraySetAsSeries(TriX,true);
      CopyBuffer(TriXHandle,0,0,4,TriX);
      
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

     }
  }
 
Можно ли сделать так, чтоб во время оптимизации терминал не обновлялся?
 
Jager:
Можно ли сделать так, чтоб во время оптимизации терминал не обновлялся?

Так если терминал запущен и в течении минут так 5-10 не обновился,

то и не будет, ну а если и обновиться то новые настройки не сохранятся

до перезапуска терминала, можно еще конечно инет выключить

 
Mr.FreeMan:

ни как не могу понять в чём дело:

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

  

 По идее, должен закрывать сделки второй индикатор, но это не так. Сам код:

 

Писал что-то подобное ты массивы обозначь по другому - (навяд ли поможет но зато

так лучше). поменяй:

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,4,TriX);

на эти строки

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,3,TriX);

Также поменяй:

 if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

на это

 if(Sell_opened=true && TriX_Close[0]>TriX_Close[1] && TriX_Close[1]<TriX_Close[2]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[0]<TriX_Close[1] && TriX_Close[1]>TriX_Close[2]) mytrade.PositionClose(_Symbol);
      if(TriX[0]>TriX[1] && TriX[1]<TriX[2]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[0]<TriX[1] && TriX[1]>TriX[2]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);