[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 64

 
alsu:
Потрудитесь заглянуть в терминал, RSI "в виде кода" есть в стандартной поставке.
Если у вас нет, то держите вот.
Файлы:
rsi.mq4  3 kb
[Удален]  

Как зафиксировать меню в МетаТрейдере4? Его иногда так разбросает по всему экрану жуть. Ну так как Таскбар в Виндовсе фиксируется, может так и здесь окна фиксируются?

 

Здравствуйте, подскажите пож-ста

у меня сейчас код такой:

         if(M_1<NizUroven && M_0 >=NizUroven)
                {
 for(int i=OrdersTotal()-1;i>=0;i--)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {     CloseOrder();
     }
   Lot2=GetLot(MaxRisk);
NewOrder(OP_SELL,Lot2);
}


             if(M_1>VerhUroven && M_0<=VerhUroven)
               {
 for(int j=OrdersTotal()-1;j>=0;j--)
   if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
     {    CloseOrder();
     }
Lot2=GetLot(MaxRisk);
 NewOrder(OP_BUY,Lot2);
}



как его упростить по такому принципу?

 for(int i=OrdersTotal()-1;i>=0;i--)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {     CloseOrder(); 
     }
   Lot2=GetLot(MaxRisk);

         if(M_1<NizUroven && M_0 >=NizUroven) 
                { NewOrder(OP_SELL,Lot2);
}
             if(M_1>VerhUroven && M_0<=VerhUroven)
               {  NewOrder(OP_BUY,Lot2);
}

 

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

 
monopolie:

Как зафиксировать меню в МетаТрейдере4? Его иногда так разбросает по всему экрану жуть. Ну так как Таскбар в Виндовсе фиксируется, может так и здесь окна фиксируются?

Говорят, это не баг, а фича))
 
monopolie:

Как зафиксировать меню в МетаТрейдере4? Его иногда так разбросает по всему экрану жуть. Ну так как Таскбар в Виндовсе фиксируется, может так и здесь окна фиксируются?


Правая кнопка по меню - пункт "Авторазмер столбцов" и двигайте как хотите
 
griha:

Здравствуйте, подскажите пож-ста

у меня сейчас код такой:



как его упростить по такому принципу?


эту часть:

for(int j=OrdersTotal()-1;j>=0;j--)
   if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
     {    CloseOrder();
     }
Lot2=GetLot(MaxRisk);
 NewOrder(OP_BUY,Lot2);

поместите в функцию:

ff(int cmd)
{
   for(int j=OrdersTotal()-1;j>=0;j--)
      if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
      {
         CloseOrder();
      }
   double Lot2=GetLot(MaxRisk);
   NewOrder(cmd,Lot2);
}

и дальше:

if(M_1<NizUroven && M_0 >=NizUroven)
{
   ff(OP_SELL);
}

if(M_1>VerhUroven && M_0<=VerhUroven)
{
   ff(OP_BUY);
}

это как пример, с видимостью или передачей в функцию перменной MaxRisk - разберётесь сами

 
Добрый день!
Сталкнулся с проблемой открытия определенного (заданного пользователем) количества ордеров.
Написал небольшой код который эту проблему должен решить и вроде решает, но бывают моменты
когда открывается произвольное количество ордеров, как правило ближе к концу теста.

Ниже сам код.

extern string Kolichestvo_orderov = "Количество единовременно открытых ордеров";
extern int OrederBuy = 1;
extern int OrederSell = 1;


int OrdS=1,OrdB=1,ticketBuy,ticketSell,lastticketSell=0,lastticketBuy=0;

//========================================================================================================//     
                                  //---- Открытие ордеров SELL ----//
//========================================================================================================//

if(OrdS<=OrederSell)
  { //----- start
 
if(trendDn==true && SthFast>88.2 && SthSlow<38.2)
     {
ticketSell=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,0,magick,0,Blue);OrdS++; //--- Если ордер открыт параметр OrdS увеличиваю 
     }
   } //-----end
          
//========================================================================================================//  
                                   //----Открытие ордеров BUY ----//
//========================================================================================================//  

if(OrdB<=OrederBuy)
  { //-----start

if(trendUp==true && SthFast<11.8 && SthSlow>61.8)
      {
ticketBuy=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,0,magick,0,Red);OrdB++; //--- Если ордер открыт параметр OrdB увеличиваю
      }

  } //------end
  

//------------------------------- Подсчет количества ордеров BUY & SELL ----------------------------------//
   
  if(ticketBuy<=OrdersHistoryTotal()) //------ проверка тикетов тех  ордеров которые уже закрыты
   {
  for(int ordBuy=lastticketBuy;ordBuy<=OrdersHistoryTotal();ordBuy++) //--- перебор новых закрытых ордеров
    {
     if(OrderSelect(ordBuy,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_BUY)OrdB--;lastticketBuy=ticketBuy;} //--- если добавился новый закрытый ордер бай, то параметр OrdB уменьшаю
    }
   }
  
  //-----
    
 if(ticketSell<=OrdersHistoryTotal()) //------ проверка тикетов тех  ордеров которые уже закрыты
  {
 for(int ordSell=lastticketSell;ordSell<=OrdersHistoryTotal();ordSell++) //--- перебор новых закрытых ордеров
     {
     if(OrderSelect(ordSell,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_SELL)OrdS--;lastticketSell=ticketSell;} //--- если добавился новый закрытый ордер селл, то параметр OrdS уменьшаю

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

[Deleted]  

Всем привет!

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

   string mytext = "Hello from programmer!";
   ObjectSetText("mycomment", mytext, 10, "Arial", Gray);
     if (ObjectFind("mycomment") == -1) {
         ObjectCreate("mycomment", OBJ_LABEL, 0, 0, 0);
         ObjectSet("mycomment", OBJPROP_CORNER, 2);
         ObjectSet("mycomment", OBJPROP_XDISTANCE, 5);
         ObjectSet("mycomment", OBJPROP_YDISTANCE, 7);}

вывести как отдельную функцию, чтобы можно было её вызвать как-то так:

mycomment("Hello from programmer!")