Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 354

 
Arsen_Syharev:
Подскажите какую написать команду, чтобы при открытии фракталов Sell1 и Sell2 в одно время открывался ордер
Что то на форуме пустота. 
 
Привет, друзья, подскажите простейшую функцию, которая если наступят условия.. (SigPF==1 или SigPF==2) и OrdersTotal>0 т.е. нужно обрабатывать только те ордера, которые сейчас в рынке, если наступит одно из условий SigPF.

Внешняя переменная для проверки условия внутри функции..
extern int PF_price_in_pips=70;
Функция должна:
1.определить с какими ордерами будем иметь дело.. если SigPF==1 , то это обрдера БАЙ (сигнал на покупку), если SigPF==2 , то это ордера СЕЛЛ (Сигнал на продажу)
2.проверить текущую цену и если
в рынке сейчас Бай ордера и был SigPF==1, тогда

разность между текущей ценой, по которой будет открыт ордер Бай, и любой из цен открытия ордеров, что уже есть в рынке больше PF_price_in_pips, тогда функция должна возвратить флаг valid_signal=true


в рынке сейчас Селл ордера и был SigPF==2, тогда

разность между любой из цен открытия ордеров, что уже есть в рынке и текущей ценой по которой будет открыт ордер Селл больше PF_price_in_pips, тогда функция должна возвратить флаг valid_signal=true

если же расстояние между ценой открытия новго ордера при наступлении сигналов на покупку-продажу меньше PF_price_in_pips, тогда функция будет возвращать valid_signal=false

В общем, если в двух словах, функция должна проверить расстояние между ценой открытия нового ордера при сигналах о покупке-продаже (SigPF==1, SigPF==2) и любой из цен открытия ордеров, что есть в рынке уже.. и если это расстояние больше чем PF_price_in_pips, тогда возвращать флаг valid_signal=true, если же это расстояние - меньше, тогда valid_signal=false. Это чтобы не открывались ордера по очень близким друг к другу ценам! И вот еще.. советник у меня торгует только по открытию нового бара.. не на всех тиках.. , хотя, думаю, это не важно.. там все-равно нужно будет рать во внимание цены Бид или Аск..

помогите с такой функцией.. ! Если не понятно что-то я постараюсь объяснить.. или дам картинки! Только помогите) Спасибо!
 

Не уверен что правильно понял условия, но..

   int PF_price_in_pips=70;
   int OrdTotal=OrdersTotal();
   bool valid_signal=false;
   int SigFF;
   
   if(OrdersTotal()>0)
   {
   for(int i=OrdTotal-1; i>=0; i --)
     {
      if(!OrderSelect(i,SELECT_BY_POS))
         continue;

      if(OrderType()==OP_BUY && SigFF==1 && Ask+OrderOpenPrice()>PF_price_in_pips)
         valid_signal=true;
         else
         valid_signal=false;
      if(OrderType()==OP_SELL && SigFF==2 && OrderOpenPrice()-Bid>PF_price_in_pips)
         valid_signal=true;
         else
         valid_signal=false;

     }
     }
 
Arsen_Syharev:
Подскажите какую написать команду, чтобы при открытии фракталов Sell1 и Sell2 в одно время открывался ордер
Какое значение Sell1 и Sell2 Вас устроит для открытия ордера. //не могу уже больше смотреть на Ваши муки....
 
Arsen_Syharev:
Подскажите какую написать команду, чтобы при открытии фракталов Sell1 и Sell2 в одно время открывался ордер
if (Sell1 !=0 && Sell2 != 0){

/* Если по текущей цене */ 

OrderSend(Symbol1, OP_SELL, Lots, Bid, 1, 0, 0, 0, Magik, 0, Red);

OrderSend(Symbol2, OP_SELL, Lots, Bid, 1, 0,0, 0, Magik, 0, Red); 

/*Если по пробитию фракталов отложенными ордерами */

 OrderSend(Symbol1, OP_SELLSTOP, Lots, Sell1, 1, 0, 0, 0, Magik, 0, Red);

OrderSend(Symbol2, OP_SELLSTOP, Lots, Sell2, 1, 0,0, 0, Magik, 0, Red);  

} 

Но это наверн ОЧЕНЬ ОЧЕНЬ грубый пример 

 
Не подскажите,товарищи,можно ли на один счёт подписать более одного сигнала?
 

Здравствуйте, коллеги, вступил недавно в ваши ряды :). Надоело выставлять отложенные ордера, решил скриптом воспользоваться, скаченные из интернета не удовлетворили: один ошибки какие-то выдавал и только в одном направлении, другой только по одному ордеру в каждую сторону делал. Помучавшись несколько часов, накатал свой простенький, суть его - открывается заданное количество отложенных лимит ордеров в обе стороны. Вопрос: как на каждый ордер повесить трейлинг стоп? Это скрипт, не советник. То бишь, ордера открылись, трэйл на них повесился и всё, скрипт свою работу выполнил. Как скриптом вызвать обычный трэйлинг стоп, что по нажатию правой кнопки мыши на ордере делается? 4-ый MetaTrader Build 765.

 
entitie:

Здравствуйте, коллеги, вступил недавно в ваши ряды :). Надоело выставлять отложенные ордера, решил скриптом воспользоваться, скаченные из интернета не удовлетворили: один ошибки какие-то выдавал и только в одном направлении, другой только по одному ордеру в каждую сторону делал. Помучавшись несколько часов, накатал свой простенький, суть его - открывается заданное количество отложенных лимит ордеров в обе стороны. Вопрос: как на каждый ордер повесить трейлинг стоп? Это скрипт, не советник. То бишь, ордера открылись, трэйл на них повесился и всё, скрипт свою работу выполнил. Как скриптом вызвать обычный трэйлинг стоп, что по нажатию правой кнопки мыши на ордере делается? 4-ый MetaTrader Build 765.

Во фрилансе всё делают.)
 

Всем привет!

Задача в следующем - нужно открывать ордера через определенное расстояние Step по EURUSD.m  в бай и по EURUSD.m1 в селл. Эта задача решена в коде приведенном ниже.

Однако, если цена пошла против нас, нужно еще открывать ордера по EURUSD.m в бай, при условии, что цена прошла от последнего ордера в селл по EURUSD.m1 расстояние равное Step*2. Это условие будет работать, при условии, что такое открытые происходит по цене меньшей открытия последнего ордера в бай по EURUSD.m

Не могу сообразить как это прописать. Буду благодарен за помощь

// бай евро доллар
if (rates[1].open < rates[1].close && !PositionSelect(Symbol1)) 
   {
      LastPriceBuy = OpenBuy(Symbol1,Lot); // если бычья свеча и нет открытой позиции по этому символу
   }
if (GlobalVariableCheck ("bb_1")) GlobalVariableGet("bb_1", bb_1);  // цифровая переменная внутренняя и ее проверка

if (PositionSelect(Symbol1) && LastPriceBuy > 0) //открытие второго и последующих ордеров
  {
   if(LastPriceBuy+Step*_Point < SymbolInfoDouble(Symbol1,SYMBOL_ASK)) 
   {LastPriceBuy = OpenBuy(Symbol1,Lot);} // открытие позиции в бай по евро доллару всех последующих ордеров 
  }    

// сел евро доллар
if (rates[1].open > rates[1].close && !PositionSelect(Symbol3)) {LastPriceSell = OpenSell(Symbol3,Lot);} // если бычья свеча и нет открытой позиции по этому символу
if (GlobalVariableCheck ("ss_1")) GlobalVariableGet("ss1_", ss_1);  // цифровая переменная внутренняя и ее проверка

if (PositionSelect(Symbol3) && LastPriceSell > 0) //открытие второго и последующих ордеров
  {
   if(LastPriceSell-Step*_Point > SymbolInfoDouble(Symbol3,SYMBOL_BID))
   {LastPriceSell = OpenSell(Symbol3,Lot);} // открытие позиции в селл по евро доллару всех последующих ордеров 
  } 
 
zfs:
Во фрилансе всё делают.)

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

 

По существу вопроса - никакой простой команды, которая после открытия ордера поверх вешает стандартный трэйлинг стоп не существует? 

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