MrGreen86
Гуру форума
Всем доброго времени.
Прошу помочь разобраться с подключением библиотеки .MQH
в библиотеке my_func.mq4 лишняя строка:
#property strict
без нее все работает.
Всем доброго времени.
Прошу помочь разобраться с подключением библиотеки .MQH
Не видел таких.
PHP:if(OrderType()==OP_BUY && OrderClosePrice()<=OrderStopLoss())
PHP:if(OrderType()==OP_SELL && OrderClosePrice()>=OrderStopLoss() && OrderStopLoss()!=0)
Не работает... Сов должен выключаться при закрытии ордера по Стоплоссу/Тэйкпрофиту, а он не выключается. Проверял на других условиях(не при закрытии ордера, а например при сигнале индюка) - прекрасно работает. :nda:
А Вы среди каких ордеров производите поиск нужного, да и как определяете нужный ордер?
Ордер и искать в принципе не надо... сову разрешено только один ордер открывать.
И я пробовал искать ордер с OrdersTotal и с OrdersHistoryTotal.
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
Ордер и искать в принципе не надо... сову разрешено только один ордер открывать.
И я пробовал искать ордер с OrdersTotal и с OrdersHistoryTotal.
Я не зря задал этот вопрос, т.к., как понял, Ваши действия совсем не верны.
1) Искать нужно только по историческим ордерам!
2) Не важно, сколько можно открывать позиций сову, т.к. это рыночные позиции у которых еще не сработал стоп или тейк - искать там нечего.
3) Нужно найти самый последний закрытый ордер, (1пункт) по времени закрытия.
Ещё один вопрос... Я его выше задавал но я его неправильно сформулировал. Есть сигнал индикатора. Как сделать что б советник перестал видеть этот сигнал через n число баров.
Как сделать,чтобы индикатор1, выдавая например звуковой сигнал,вместо сигнала давал команду на выставление индикатора2 на график?
Перебирать бары в цикле, с текущего по n - в наличии сигнала.
extern int HowBars=5;
int bars=0; //Переменная для расчёта баров
bool Sig=false; //false - продажа true - покупка
datetime time=0; //тайм сигнала
bool SIGNAL=false; //Сигнал который пропускается после цикла
if(SignalBUY!=EMPTY_VALUE) Sig=true; time=Time[0];
if(SignalSELL!=EMPTY_VALUE) Sig=false; time=Time[0];
//Но я написал не в цикле(но в цикле тоже пробовал)
if(Sig==true)
{
if(SignalBUY!=EMPTY_VALUE && time!=Time[0])
{
bars++;
if(bars<=HowBars) SIGNAL=true; //Пропускается покупка
if(bars>HowBars) bars=0; Sig=false;
}
}
if(Sig==false)
{
if(SignalSELL!=EMPTY_VALUE && time!=Time[0])
{
bars++;
if(bars<=HowBars) SIGNAL=false; //Пропускается продажа
if(bars>HowBars) bars=0; Sig=true;
}
}
if(SIGNAL==true)
{
//Покупаем
}
if(SIGNAL==false)
{
//Продаём
}
Я так и делал! Но всё равно не работало! Я написал так:PHP:extern int HowBars=5; int bars=0; //Переменная для расчёта баров bool Sig=false; //false - продажа true - покупка datetime time=0; //тайм сигнала bool SIGNAL=false; //Сигнал который пропускается после цикла if(SignalBUY!=EMPTY_VALUE) Sig=true; time=Time[0]; if(SignalSELL!=EMPTY_VALUE) Sig=false; time=Time[0]; //Но я написал не в цикле(но в цикле тоже пробовал) if(Sig==true) { if(SignalBUY!=EMPTY_VALUE && time!=Time[0]) { bars++; if(bars<=HowBars) SIGNAL=true; //Пропускается покупка if(bars>HowBars) bars=0; Sig=false; } } if(Sig==false) { if(SignalSELL!=EMPTY_VALUE && time!=Time[0]) { bars++; if(bars<=HowBars) SIGNAL=false; //Пропускается продажа if(bars>HowBars) bars=0; Sig=true; } } if(SIGNAL==true) { //Покупаем } if(SIGNAL==false) { //Продаём }
int n = 5; // сканировать баров
int i = 0; // с какого бара начинать сканирование
bool sig = false; // наличие сигнала
while(i<n+i)
{
double ind = iCustom(....,i);
if(ind!=EMPTY_VALUE)
{
sig = true;
break;
}
i++;
}
if(sig)
{
// Есть сигнал за n баров начиная с i-го бара
}
if(!sig)
{
// Сигнала нет за n баров начиная с i-го бара
}
Привет!Здравствуйте уважаемые программисты! Помогите пожалуйста с такой проблемой:
написал я маленький сов на 1 индюке от 1 большого сова который резко перестал работать(я его написал) при этом я большой сов не трогал - я вечером проверял его и всё работало, на следующий день сразу поставил его в тестер и он просто напросто не открывал ордера. То же самое и с маленьким на 1 индюке, который я написал чтоб перепроверить первый. Проверил его в тестере - работает так как и должен был. Потом я подождал где то ещё пол дня(при этом я к компу даже не подходил) и поставил его в тестер - не работает. На компе стоят 2 мощнейших антивируса - вирусов не может быть. Помогите пожалуйста. Заранее благодарен!
Привет!
Не знаю, как у тебя сов мог работать, если считывание сигнала с индюка у тебя прописано через глобальные переменные терминала if(GlobalVariableGet("SVINGER SELL/BUY")==1..., а в индюке нет команд записи в глобалки данных. Ты ничего не напутал?
Ой... прости индюк не тот скинул...)))
Я там выше уже поправленные выложил... У тебя индикаторы с одинаковыми именами с глобалками и без - они у тебя не будут конфликтовать? Может просто не тот индюк запускается?Это уже другой индюк в котором уже всё прописано только названия одинаковые
Я там выше уже поправленные выложил... У тебя индикаторы с одинаковыми именами с глобалками и без - они у тебя не будут конфликтовать? Может просто не тот индюк запускается?