Привет, друзья, подскажите простейшую функцию, которая если наступят условия.. (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. Это чтобы не открывались ордера по очень близким друг к другу ценам! И вот еще.. советник у меня торгует только по открытию нового бара.. не на всех тиках.. , хотя, думаю, это не важно.. там все-равно нужно будет рать во внимание цены Бид или Аск..
помогите с такой функцией.. ! Если не понятно что-то я постараюсь объяснить.. или дам картинки! Только помогите) Спасибо!
Здравствуйте, коллеги, вступил недавно в ваши ряды :). Надоело выставлять отложенные ордера, решил скриптом воспользоваться, скаченные из интернета не удовлетворили: один ошибки какие-то выдавал и только в одном направлении, другой только по одному ордеру в каждую сторону делал. Помучавшись несколько часов, накатал свой простенький, суть его - открывается заданное количество отложенных лимит ордеров в обе стороны. Вопрос: как на каждый ордер повесить трейлинг стоп? Это скрипт, не советник. То бишь, ордера открылись, трэйл на них повесился и всё, скрипт свою работу выполнил. Как скриптом вызвать обычный трэйлинг стоп, что по нажатию правой кнопки мыши на ордере делается? 4-ый MetaTrader Build 765.
Здравствуйте, коллеги, вступил недавно в ваши ряды :). Надоело выставлять отложенные ордера, решил скриптом воспользоваться, скаченные из интернета не удовлетворили: один ошибки какие-то выдавал и только в одном направлении, другой только по одному ордеру в каждую сторону делал. Помучавшись несколько часов, накатал свой простенький, суть его - открывается заданное количество отложенных лимит ордеров в обе стороны. Вопрос: как на каждый ордер повесить трейлинг стоп? Это скрипт, не советник. То бишь, ордера открылись, трэйл на них повесился и всё, скрипт свою работу выполнил. Как скриптом вызвать обычный трэйлинг стоп, что по нажатию правой кнопки мыши на ордере делается? 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);} // открытие позиции в селл по евро доллару всех последующих ордеров
}
Подскажите какую написать команду, чтобы при открытии фракталов Sell1 и Sell2 в одно время открывался ордер
Внешняя переменная для проверки условия внутри функции..
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 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;
}
}
Подскажите какую написать команду, чтобы при открытии фракталов Sell1 и Sell2 в одно время открывался ордер
Подскажите какую написать команду, чтобы при открытии фракталов Sell1 и Sell2 в одно время открывался ордер
Но это наверн ОЧЕНЬ ОЧЕНЬ грубый пример
Здравствуйте, коллеги, вступил недавно в ваши ряды :). Надоело выставлять отложенные ордера, решил скриптом воспользоваться, скаченные из интернета не удовлетворили: один ошибки какие-то выдавал и только в одном направлении, другой только по одному ордеру в каждую сторону делал. Помучавшись несколько часов, накатал свой простенький, суть его - открывается заданное количество отложенных лимит ордеров в обе стороны. Вопрос: как на каждый ордер повесить трейлинг стоп? Это скрипт, не советник. То бишь, ордера открылись, трэйл на них повесился и всё, скрипт свою работу выполнил. Как скриптом вызвать обычный трэйлинг стоп, что по нажатию правой кнопки мыши на ордере делается? 4-ый MetaTrader Build 765.
Здравствуйте, коллеги, вступил недавно в ваши ряды :). Надоело выставлять отложенные ордера, решил скриптом воспользоваться, скаченные из интернета не удовлетворили: один ошибки какие-то выдавал и только в одном направлении, другой только по одному ордеру в каждую сторону делал. Помучавшись несколько часов, накатал свой простенький, суть его - открывается заданное количество отложенных лимит ордеров в обе стороны. Вопрос: как на каждый ордер повесить трейлинг стоп? Это скрипт, не советник. То бишь, ордера открылись, трэйл на них повесился и всё, скрипт свою работу выполнил. Как скриптом вызвать обычный трэйлинг стоп, что по нажатию правой кнопки мыши на ордере делается? 4-ый MetaTrader Build 765.
Всем привет!
Задача в следующем - нужно открывать ордера через определенное расстояние Step по EURUSD.m в бай и по EURUSD.m1 в селл. Эта задача решена в коде приведенном ниже.
Однако, если цена пошла против нас, нужно еще открывать ордера по EURUSD.m в бай, при условии, что цена прошла от последнего ордера в селл по EURUSD.m1 расстояние равное Step*2. Это условие будет работать, при условии, что такое открытые происходит по цене меньшей открытия последнего ордера в бай по EURUSD.m
Не могу сообразить как это прописать. Буду благодарен за помощь
Во фрилансе всё делают.)
Очень ценный развёрнутый и содержательный ответ-комментарий, советую вам же им же и воспользоваться...
По существу вопроса - никакой простой команды, которая после открытия ордера поверх вешает стандартный трэйлинг стоп не существует?