Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Авторизуйся на MQL5.community с помощью OpenID. Это удобно!
Demon
32
Demon 2006.03.28 09:28 
Изучаю язык с циклами всё ясно но вот конкретно в код вставить не могу если не трудно киньте кусок кода установка StopLoss по минимальным значениям последних десяти баров.
Rashid Umarov
Админ
6606
Rashid Umarov 2006.03.28 09:33  
Цикл не нужен, используй
int Highest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

Возвращает индекс найденного наибольшего значения (смещение относительно текущего бара).

Параметры:

symbol - Символьное имя инструмента, на данных которого будет производиться поиск. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
type - Идентификатор таймсерии. Может быть любым из значений иденитификаторов таймсерий.
count - Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск.
start - Смещение (относительно текущего) начального бара, с которого начинается поиск наибольшего значения.

Пример:

double val;
// расчет самого верхнего значения в дипазоне с 5 элементов в 25 элементов
// индикатор помещает в диаграмму символ и рамку времени диаграмм индикатора
val=High[Highest(NULL,0,MODE_HIGH,20,4)];

int Lowest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

Возвращает индекс найденного наименьшего значения (смещение относительно текущего бара).

Параметры:

symbol - Символьное имя инструмента, на данных которого будет производиться поиск. NULL означает текущий символ.
timeframe - Период. Может быть одним из значений периодов графика. 0 означает период текущего графика.
type - Идентификатор таймсерии. Может быть любым из значений идентификаторов таймсерий.
count - Число элементов таймсерии (в направлении от текущего бара в сторону возрастания индекса), среди которых должен быть произведен поиск.
start - Смещение (относительно текущего) начального бара, с которого начинается поиск наименьшего значения.

Пример:

double val=Low[Lowest(NULL,0,MODE_LOW,10,10)];
Demon
32
Demon 2006.03.28 10:10  
Спасибо
Demon
32
Demon 2006.03.30 05:23  
Вроде всё прописал но чото не торгует укажите на ощибку если не сложно

#property copyright "Vuki"
#property link

//---- input parameters
extern double Lots=0.1;
extern int MA1=9;//скользящая средняя
extern int MA2=21;//скользящая средняя
extern int MA3=120;//скользящая средняя
extern int MA4=120;//скользящая средняя
extern int Kperiod=5;
extern int Dperiod=3;
double TakeProfit,StopLoss;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
if(Bars<100){ Print("bars less than 100"); return(0); }
if(AccountFreeMargin()<(500*Lots)){
Print("Нету свободных денег. Free Margin = ", AccountFreeMargin());
return(0);
}
if(TakeProfit<10){ Print("TakeProfit less than 10"); return(0); }
if(StopLoss<10){ Print("StopLoss less than 10"); return(0); }

int start()
{
int M1,M2,M3,M4,stok,tiket;
M1=iMA(NULL,0,MA1,0,MODE_EMA,PRICE_CLOSE,0);
M2=iMA(NULL,0,MA2,0,MODE_EMA,PRICE_CLOSE,0);
M3=iMA(NULL,0,MA3,0,MODE_EMA,PRICE_CLOSE,0);
M4=iMA(NULL,0,MA4,0,MODE_EMA,PRICE_CLOSE,1);
stok=iStochastic(NULL,0,Kperiod,Dperiod,3,MODE_SMA,0,MODE_MAIN,0);
//Ставим Стоп
{
StopLoss=Low[Lowest(NULL,0,MODE_LOW,10,10)];
}
//Ставим Профит
{
TakeProfit=High[Highest(NULL,0,MODE_HIGH,20,4)];
}
tiket=OrdersTotal();
{
if(tiket>1)return(0);
}
{
if(AccountFreeMargin()<(500*Lots))
{
Print("Недостаточно денег. Free Margin = ", AccountFreeMargin());
return(0);
}

if((M1<M2)<M3&&(M3<M4)&&(stok>80))
{
tiket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,TakeProfit,
"Мой заказ",Red);
return(0);
}

if((M1>M2)>M3&&(M3>M4)&&(stok<30))
{
tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit,
"Мой заказ",Green);
return(0);
}
}
}




Vladyslav Goshkov
1960
Vladyslav Goshkov 2006.03.30 11:17  
demon:
Вроде всё прописал но чото не торгует укажите на ощибку если не сложно
((M1<M2)<M3 ) <= ??????????
Если не сложно - что подразумевалось под этим выражением ? Вы результат первого сравнения (ИСТИНА или ЛОЖЬ) сравниваете со значением переменной М3, которая не является логической.

Подозреваю, что это последовательное сравнение, просто записано неверно. Тогда должно быть так:
( (M1<M2) && (M2<M3) )


И, кстати, переменные М1, М2, М3 должны быть описаны как переменные с плавающей точкой, а не целочисленные ( double, а не int) иначе не соответствует возвращаемому значению функции iMA(......);
Demon
32
Demon 2006.03.31 05:11  
Я уже сам догнал спасибо за ответ извени за тупой вопрос
Zaebali_Suki2
39
Zaebali_Suki2 2012.08.14 05:19  

ПРИВЕТ ФОРУМНЫЕ ПИДОРАСЫ!!!
НЕ ПОРА ЛИ С УТРЕЦА,
ХУЙ СОСУНУТЬ ВАМ С ЛЕГОНЦА?
(ПОРА ПОРА)

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий