Скачать MetaTrader 5

как правильно написать код входа при открытий нового бара?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ilnaz
440
Ilnaz  

как правильно написать код входа при открытий нового бара. Суть состоит вот в чем, я хочу войту в сделку при образований нового бара (свечи), как правильно написать условия входа?

заранее спасибо.  

Leonid Borsky
2383
Leonid Borsky  

А вот так:

//в глобальных
static int prevtime = 0;


int start()
  {

//  задаем работу по ЦЕНАМ ОТКРЫТИЯ 
if (Time[0] == prevtime) return(0); //если появился новый бар
  prevtime = Time[0]; // начинаем работу
Дмитрий
1460
Дмитрий  
static int prevtime=0;
int start()
  {
  if (Time[0]==prevtime)return(0); 
  prevtime = Time[0];
  if (!IsTradeAllowed())
    {
    prevtime=Time[1];
    MathSrand(TimeCurrent());
    Sleep(30000+MathRand());
    }
Начало такое.
Ilnaz
440
Ilnaz  

а как будет выглядеть, закрытие по close[0]?

static int prevtime = 0; его лучше куда вписать в init? или как переменные данные в самом начале? 

если я правильно понял условие if (Time[0] == prevtime) return(0); //если появился новый бар
  prevtime = Time[0]; // начинаем работу пишем 

загоняем воттак в код

if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
if (Time[0] == prevtime) return(0); //если появился новый бар
prevtime = Time[0]; // начинаем работу
OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,0);
 спасибо

atik
410
atik  
if( iVolume(Symbol(),TF,0)<2) - наилучший и кратчайший вариант для входа
Leonid Borsky
2383
Leonid Borsky  

Просто в самом начале ф-и старт вставьте :

if (Time[0] == prevtime) return(0); //если появился новый бар
prevtime = Time[0]; // начинаем работу

-------------------------------------

И больше ничего.

Весь код будет работать по ценам открытия.

(Разве-что трал лучше задать выше этих строк. Чтобы он по всем тикам работал.)

И закрытие по close[0] (то бишь close[1]) - тоже при этом будет выполняться - так как вы хотите.

----------------------------------------------

Кстати - сами логически подумайте. Выражение close[0] - по сути ЭТО ТЕКУЩАЯ ЦЕНА. И закрытие тут будет бессмысленным. Т.е. не успеет позиция открыться в таком режиме, - она тут же и закроется.

techno
1226
techno  
зачем все делают глобальные переменные статичными ?)) В чем же прикол?)
Ilnaz
440
Ilnaz  
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
  if (Time[0] == prevtime) return(0); //если появился новый бар
  prevtime = Time[0]; // начинаем работу
  OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,0);
  
  if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)
  if (OrderType()==OP_SELL)
  if( Close[1]==prevtime
  ||OrderOpenPrice()-Bid>=k*Point)
  OrderClose(OrderTicket(),OrderLots(),Ask,2,CLR_NONE);
возможно ли вот так написать или я ошибоку допустил?
Ilnaz
440
Ilnaz  
при таком написаний кода сделка открывается при каждой новой тике, т.е. в одном баре он совершает несколько сделок, хотя этого не надо  делать, нужно новые функции для этого?
Leonid Borsky
2383
Leonid Borsky  

========================

int start() 
  {
  if (Time[0] == prevtime) return(0); //если появился новый бар
  prevtime = Time[0]; // начинаем работу


  if (OrdersTotal()<1)               {//если нет откр. позиций
  OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,0);
                     }
                   
  for (int i=0; i<OrdersTotal(); i++) {
  if   (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
  if (OrderType()==OP_SELL)                       {
  if( OrderOpenPrice()-Bid>=k*Point)               {
  OrderClose(OrderTicket(),OrderLots(),Ask,2,CLR_NONE);
          }
         }
        }
      }
      

}//int start() 
Ilnaz
440
Ilnaz  
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
  if (OrderType()==OP_SELL)                       {
  if( OrderOpenPrice()-Bid>=k*Point)               {
  OrderClose(OrderTicket(),OrderLots(),Ask,2,CLR_NONE);
          }
         }
        }

а вот если написать при закрытий того же бара при котором мы открыли сделку, закрыть сделку

if( OrderOpenPrice()-Bid>=k*Point) 

можно ли написать вместо этого просто close[1]? 

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий