Очень нужна помощь!!!! - страница 3

 

Помогите пожалуйста с куском кода ! заранее благодарен.


if (cci<cci1 && canal > zazor && 8<Hour() && 16>Hour() && (**сюда?**>=**сюда?**))

OrderSend(Symbol(), OP_SELL, 0.1,Bid, 3, Bid + SL*Point, Bid - TP*Point,"Pips", 0, 0, Red); }}

if (cci>cci1 && canal > zazor && 8<Hour() && 16>Hour() && (**сюда?**>=**сюда?**))

OrderSend(Symbol(), OP_BUY, 0.1,Ask, 3, Ask - SL*Point, Ask + TP*Point,"Pips", 0, 0, Blue); }

Эксперт должен открывать две сделки в день с 8ч до 16ч,что он и делает,но сделок 5-8шт

в день, а надо одну BUY и одну SELL, по каждой пере но как прописать в коде не знаю.

Да и еще если есть у кого нибудь любой советник с такими функциями можете дать,а дальше я сам вставлю все свое

 
ClassikTrader писал(а) >>

Помогите пожалуйста с куском кода ! заранее благодарен.

Самый простой вариант, при открытие сделки выставляете флаг, примерно так:

bool OneBuy, OneSell;

int PrevDay=0;

int start()
{
if (iTime(NULL,PERIOD_D1,0) != PrevDay)
{
PrevDay=iTime(NULL,PERIOD_D1,0) ;
OneBuy=false; OneSell=false;
}
....
if (Условие открытия бай && !OneBuy)
{
Открываем бай
if (Сделка открылась удачно) OneBuy=true;
}
if (Условие открытия селл && !OneSell)
{
Открываем селл
if (Сделка открылась удачно) OneSell=true;
}

}

З.Ы. Блин похоже сайт не очень дружит с IE8...

 
Figar0 >>:

Самый простой вариант, при открытие сделки выставляете флаг, примерно так:

bool OneBuy, OneSell;

int PrevDay=0;

int start()
{
if (iTime(NULL,PERIOD_D1,0) != PrevDay)
{
PrevDay=iTime(NULL,PERIOD_D1,0) ;
OneBuy=false; OneSell=false;
}
....
if (Условие открытия бай && !OneBuy)
{
Открываем бай
if (Сделка открылась удачно) OneBuy=true;
}
if (Условие открытия селл && !OneSell)
{
Открываем селл
if (Сделка открылась удачно) OneSell=true;
}

}

З.Ы. Блин похоже сайт не очень дружит с IE8...


Спасибо большое буду пробывать!!

 

спасибки за помощь=)

                                 

 

//+------------------------------------------------------------------+
//| проба из инета.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"



//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
  {
//----
  while(iSAR(NULL,0,0.02,0.2,0)<Close[0]){
  if(Orders(Magic,OP_BUY)>0){
  if(buy<1){
  //Открываем ордер buy
  if(OrderSend(Symbol(),OP_BUY,...)<0){
  Alert("Не удалось открыть ордер buy, ошибка:"+GetLastError());
  }
  else
  Alert("открыт ордер buy"); 
  }}}

  while(iSAR(NULL,0,0.02,0.2,0)>Close[0]){

  if(Orders(Magic,OP_SELL)>0){
  if(sell<1){
  //Открываем ордер sell
  if(OrderSend(Symbol(),OP_SELL,...)<0){
  Alert("Не удалось открыть ордер sell, ошибка: "+GetLastError());
  }
  else
  Alert("открыт ордер sell"); 
  }}} 
  }
//----
  return(0);
  }
//+------------------------------------------------------------------+
int Orders(int Magic, int cmd)
 {
  int Total=OrdersTotal();
  for(int i=0; i<Total; i++){
  if(OrderSelect(i,SELECT_BY_POS)){
  if(OrderSymbol()!=Symbol()) continue;
  if(OrderMagicNumber()!=Magic) continue;
  if(OrderType()==cmd){
  return(0);

  }}}

  return(1);

 }


'Magic' - variable not defined C:\Program Files\MetaTrader - Alpari\experts\ïðîáà èç èíåòà.mq4 (18, 15)
'buy' - variable not defined C:\Program Files\MetaTrader - Alpari\experts\ïðîáà èç èíåòà.mq4 (19, 8)
'Magic' - variable not defined C:\Program Files\MetaTrader - Alpari\experts\ïðîáà èç èíåòà.mq4 (30, 15)
'sell' - variable not defined C:\Program Files\MetaTrader - Alpari\experts\ïðîáà èç èíåòà.mq4 (31, 8)
'}' - unbalanced parentheses C:\Program Files\MetaTrader - Alpari\experts\ïðîáà èç èíåòà.mq4 (42, 3)

попробывал сдеалть тот код который был набросан в качестве примера.появилисьтакие ошибки.

че не хватает в коде?

как правилбно обявить магик и бай и селл? чтоб все заработало?

if(OrderSelect(i,SELECT_BY_POS)) - что означает эта строчка?

вот сделал первую удачную копмиляцию!!!!!код следующий:

int start()
  {
  while(iSAR(NULL,0,0.05,0.2,0)<Close[0])
  {
  OrderSend(Symbol(),OP_BUY,0.1,NULL,10*Point,Bid-100*Point,Ask+500*Point,"КУПИЛ",1,0,Blue);
   
  if (OrdersTotal()!=0)
  Alert("Открыта позиция!!!");
   
  }  
  return(0);

  }

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!работает!!!!!!!!!!!!!!!!!!!!!!

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

 
я тут ошибочку выдал :-)  Посмотрите вроде исправил. А по поводу Magic так это маджик вашего советника, если он конечно у вас есть. Прочитайте про OrderMagicNumber()