Пож. подскажите. Вот так открываются позиции по каждой паре в муьтивалютном советнике.-
//ЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ//-------------------------Изначальная позиция ----------if(Trade && pb==0&&(iBarShift("EURCHF_FX",timeFr,OpenTime1)!=0)//если нет открытых дл. позиций и не было на этом баре&& Bid_<Lbid+Delta*Point_){if(iMA("EURCHF_FX",0,period_MA,0,MODE_SMMA,PRICE_MEDIAN,0)<iClose("EURCHF_FX",period_TF,0)// || !Filter_DT) { //если фильтр разрешает
SL=0;TP=0;if(StopLoss>0) SL=Ask_-Point_*StopLoss;if(TakeProfit>0) TP=Ask_+Point_*TakeProfit;
ticket=WHCOrderSend("EURCHF_FX",OP_BUY,Lots,Ask_,3,SL,TP,"_001",Magic,0,Blue);if(ticket <0){Print("Ошибка открытия ордера BUY EURCHF_FX #",GetLastError());Sleep(10000);return(0);}
initorders();
OpenTime1 =iTime("EURCHF_FX",timeFr,0);}}//жжжжжжжжж Дополнительная позиции жжжжжжжжжжжжжжжжж if(NumberOfPositions("EURCHF_FX",OP_BUY, Magic)==1&&
NumberOfPositions("EURCHF_FX",OP_BUY, Magic_2)<1){//если открыта начальная позициif(GetProfitOpenPosInPoint("EURCHF_FX",OP_BUY,Magic)<= LEVEL_1
&&iBarShift("EURCHF_FX",timeFr,OpenTime1)!=0){//и если убыток начальн. позиции больше заданного значения
SL=0;TP=0;if(StopLoss>0) SL=Ask_-Point_*StopLoss;if(TakeProfit>0) TP=Ask_+Point_*TakeProfit;
ticket=WHCOrderSend("EURCHF_FX",OP_BUY,Lots+dL2,Ask_,50,SL,TP,"002",Magic_2,0,Blue);if(ticket <0){Print("Ошибка открытия ордера BUY EURCHF_FX #",GetLastError());Sleep(10000);return(0);}
OpenTime1 =iTime("EURCHF_FX",timeFr,0);}}//ЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ
Подскажите. Как мне написать отдельную функцию вместо этого блока.
Чтобы не переписывать этот блок для каждой пары ?
(В блоке использованы ф-и И.Кима и ф-я открытия в условиях рыночного исполнения торговых заявок Market Watch).
if(UseTrailing_1){//выключатель трейлинг стопа 1 парыif(iTime(Symbol_1,TimeFR_1,0)== prevtime)return(0);//ждём появления нового бара
prevtime =iTime(Symbol_1,TimeFR_1,0);//если появился новый бар , включаемся
TrailPositions(Symbol_1,Bid1,Ask1,Point1,Magic_1,MinProfit_1,
TrailingStop_1,TrailingStep_1);}//------------------------------------------------------------------------------- if(UseTrailing_2){//выключатель трейлинг стопа 2 парыif(iTime(Symbol_2,TimeFR_2,0)== prevtime)return(0);//ждём появления нового бара
prevtime =iTime(Symbol_2,TimeFR_2,0);//если появился новый бар , включаемся
TrailPositions(Symbol_2,Bid2,Ask2,Point2,Magic_2,MinProfit_2,
TrailingStop_2,TrailingStep_2);}
Однако. Трал в таком включении не работает.
Если я убираю трал одного символа совсем, то трал другой пары начинает работать.
А если присутствуют в коде оба вызова трала - то не работает ни один.
Написал советник. Одновременно открывает/закрывает ордера по двум парам EURUSD <-> GBPUSD. Цепляю к EURUSD. Читает котировки обеих пар (iOpen). Команды ниже исполняет
Доброе утро!
Пож. подскажите. Вот так открываются позиции по каждой паре в муьтивалютном советнике.-
Подскажите. Как мне написать отдельную функцию вместо этого блока.
Чтобы не переписывать этот блок для каждой пары ?
(В блоке использованы ф-и И.Кима и ф-я открытия в условиях рыночного исполнения торговых заявок Market Watch).
Доброе утро!
Пож. подскажите. Вот так открываются позиции по каждой паре в муьтивалютном советнике.-
Подскажите. Как мне написать отдельную функцию вместо этого блока.
Чтобы не переписывать этот блок для каждой пары ?
(В блоке использованы ф-и И.Кима и ф-я открытия в условиях рыночного исполнения торговых заявок Market Watch).
void FUN(string _Symbol){
// Ваш код, но вместо конкретного инструмента используется _Symbol
}
Спасибо. А как быть с бидами, асками, Delta, Lots и bool TRADE (это разрешение на вход) для каждой пары?
Вот так будет правильно? -
Кроме того. Краем уха вроде бы слышала, что некорректно использовать (вызывать) одну пользовательскую функцию внутри другой.
А у меня используется в блоке ф-я для открытия позиций в условиях рыночного исполнения торговых заявок Market Watch
Не будут ли проблемы и сбои при работе ?Спасибо. А как быть с бидами, асками, Delta, Lots и bool TRADE (это разрешение на вход) для каждой пары?
Вот так будет правильно? -
Кроме того. Краем уха вроде бы слышала, что некорректно использовать (вызывать) одну пользовательскую функцию внутри другой.
А у меня используется в блоке ф-я для открытия позиций в условиях рыночного исполнения торговых заявок Market Watch
Не будут ли проблемы и сбои при работе ?double _Bid=MarketInfo(_Symbol, MODE_BID);
double _Ask=MarketInfo(_Symbol, MODE_ASK);
....................................................................
ВЫзов функция может быть в любом месте. Проблем не будет
Добрый день!
Я использую трал в мультивалютнике. Вот такой:
Чтобы задействовать трал для всех пар мультивалютника я переделала его таким образом.
(Биды-аски-поинт вызываются через MarketInfo(Symbol_1,MODE_ASK);
Советник работает по ценам открытия.
Вызывается трал вот так:
Однако. Трал в таком включении не работает.
Если я убираю трал одного символа совсем, то трал другой пары начинает работать.
А если присутствуют в коде оба вызова трала - то не работает ни один.
Пож. подскажите. Где может быть ошибка?
Надо для каждого инструмента и таймфрейма использовать свой prevtime.
Благодарю, Vinin !
а Я уж было совсем собралась для каждой пары свой трал писать....
Помогите с мультивалютником.
Написал советник. Одновременно открывает/закрывает ордера по двум парам EURUSD <-> GBPUSD. Цепляю к EURUSD. Читает котировки обеих пар (iOpen). Команды ниже исполняет
Ask_EUR = MarketInfo("EURUSD", MODE_ASK);
Bid_EUR = MarketInfo("EURUSD", MODE_BID);
А эти команды не исполняет
Ask_GBP = MarketInfo("GBPUSD", MODE_ASK);
Bid_GBP = MarketInfo("GBPUSD", MODE_BID);
Значения ask = bid = 0
Подскажите, в чем дело?